Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

समय के साथ रेडिगो स्कैनस्ट्रक्चर त्रुटि

चूंकि रेडिस के पास समय मूल्यों की कोई अवधारणा नहीं है, इसलिए रेडिगो जैसे जेनेरिक ड्राइवर के लिए बुइलिन time.Time के बीच कुछ स्वचालित रूपांतरण करने का कोई मतलब नहीं होगा। प्रकार और एक मनमाना बाइट सरणी। जैसे, यह तय करना प्रोग्रामर पर निर्भर है कि उस रूपांतरण को कैसे किया जाए।

उदाहरण के लिए, मान लें कि आपके पास एक "व्यक्ति" प्रकार परिभाषित है, जिसमें एक created_at शामिल है टाइमस्टैम्प को RFC3339 (ISO 8601 का एक रूप) के रूप में स्वरूपित किया गया है, आप "RedisScan" विधि के साथ एक कस्टम "टाइमस्टैम्प" प्रकार को निम्नानुसार परिभाषित कर सकते हैं:

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. रेडिस के साथ लारवेल कैशिंग बहुत धीमी है

  2. एक्सप्रेस ऐप से डिबगिंग कैसे निकालें?

  3. एक सेट सदस्य के लिए टीटीएल

  4. Laravel - क्रम में चल रही नौकरियां

  5. क्या redis incr कमांड विशिष्ट संख्या तक सीमित हो सकती है?