Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Làm lại lỗi ScanStruct theo thời gian.

Vì Redis không có khái niệm về giá trị thời gian nên sẽ không có ý nghĩa gì đối với một trình điều khiển chung chung như redigo để thực hiện một số chuyển đổi tự động giữa time.Time nội trang kiểu và một mảng byte tùy ý. Do đó, lập trình viên quyết định cách thực hiện chuyển đổi đó.

Ví dụ:giả sử bạn có một loại "Người" được xác định như vậy, bao gồm một created_at dấu thời gian được định dạng là RFC3339 (một dạng của ISO 8601), bạn có thể xác định loại "Dấu thời gian" tùy chỉnh bằng phương pháp "RedisScan" như sau:

type Timestamp time.Time

type Person struct {
  Id        int       `redis:"id"`
  Name      string    `redis:"name"`
  CreatedAt Timestamp `redis:"created_at"`
}

func (t *Timestamp) RedisScan(x interface{}) error {
  bs, ok := x.([]byte)
  if !ok {
    return fmt.Errorf("expected []byte, got %T", x)
  }
  tt, err := time.Parse(time.RFC3339, string(bs))
  if err != nil {
    return err
  }
  *t = Timestamp(tt)
  return nil
}

// ...

response, err := redis.Values(conn.Do("HGETALL", "person:1"))
if err != nil {
  panic(err)
}

var p Person
err = redis.ScanStruct(response, &p)
if err != nil {
  panic(err)
}
log.Printf("OK: p=%v", p)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Websocket đã ngắt kết nối Cuộc gọi kết nối không thành công

  2. Máy chủ Redis không thể chạy hơn 1024 triệu bản đồ tối đa

  3. Làm thế nào để tạo một khóa phân tán với Redis?

  4. Làm cách nào để lưu và thoát redis.conf?

  5. Yêu cầu lại trên ngăn xếp gỗ tuyết tùng Heroku Số lượng công nhân vẫn tồn tại sau khi công nhân chấm dứt