|
@ -14,7 +14,7 @@ type sentinelKVStore struct { |
|
|
redis *redis.Client |
|
|
redis *redis.Client |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func new_sentinel_kv(host string, port uint16, master_name string, db int64, password string) (KV, error) { |
|
|
|
|
|
|
|
|
func newSentinelKv(host string, port uint16, master_name string, db int64, password string) (KV, error) { |
|
|
client := redis.NewFailoverClient(&redis.FailoverOptions{ |
|
|
client := redis.NewFailoverClient(&redis.FailoverOptions{ |
|
|
MasterName: master_name, |
|
|
MasterName: master_name, |
|
|
SentinelAddrs: []string{fmt.Sprintf("%s:%d", host, port)}, |
|
|
SentinelAddrs: []string{fmt.Sprintf("%s:%d", host, port)}, |
|
@ -30,13 +30,13 @@ func new_sentinel_kv(host string, port uint16, master_name string, db int64, pas |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Get Cached bytes via k, return empty bytes and false if failed.
|
|
|
// Get Cached bytes via k, return empty bytes and false if failed.
|
|
|
func (self *sentinelKVStore) Get(k string) (bs []byte, e error) { |
|
|
|
|
|
if self.verbose { |
|
|
|
|
|
|
|
|
func (skvs *sentinelKVStore) Get(k string) (bs []byte, e error) { |
|
|
|
|
|
if skvs.verbose { |
|
|
t1 := time.Now() |
|
|
t1 := time.Now() |
|
|
defer log_timing(t1, "Sentinel KV GET", k, e) |
|
|
defer log_timing(t1, "Sentinel KV GET", k, e) |
|
|
} |
|
|
} |
|
|
var s string |
|
|
var s string |
|
|
s, e = self.redis.Get(k).Result() |
|
|
|
|
|
|
|
|
s, e = skvs.redis.Get(k).Result() |
|
|
|
|
|
|
|
|
if nil != e { |
|
|
if nil != e { |
|
|
return nil, e |
|
|
return nil, e |
|
@ -45,8 +45,8 @@ func (self *sentinelKVStore) Get(k string) (bs []byte, e error) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Set bytes to cache with given key
|
|
|
// Set bytes to cache with given key
|
|
|
func (self *sentinelKVStore) Set(k string, d []byte, x ...int64) (e error) { |
|
|
|
|
|
if self.verbose { |
|
|
|
|
|
|
|
|
func (skvs *sentinelKVStore) Set(k string, d []byte, x ...int64) (e error) { |
|
|
|
|
|
if skvs.verbose { |
|
|
t1 := time.Now() |
|
|
t1 := time.Now() |
|
|
defer log_timing(t1, "Sentinel KV SET", k, e) |
|
|
defer log_timing(t1, "Sentinel KV SET", k, e) |
|
|
} |
|
|
} |
|
@ -54,19 +54,19 @@ func (self *sentinelKVStore) Set(k string, d []byte, x ...int64) (e error) { |
|
|
var exp time.Duration |
|
|
var exp time.Duration |
|
|
if len(x) > 0 { |
|
|
if len(x) > 0 { |
|
|
exp = time.Duration(x[0]) * time.Second |
|
|
exp = time.Duration(x[0]) * time.Second |
|
|
//_, e = self.redis.SetXX(k, d, time.Duration(x[0])*time.Second).Result() //SetEx(k, x[0], d)
|
|
|
|
|
|
|
|
|
//_, e = skvs.redis.SetXX(k, d, time.Duration(x[0])*time.Second).Result() //SetEx(k, x[0], d)
|
|
|
} else { |
|
|
} else { |
|
|
//_, e = self.redis.Set(k, d).Result()
|
|
|
|
|
|
|
|
|
//_, e = skvs.redis.Set(k, d).Result()
|
|
|
exp = 0 |
|
|
exp = 0 |
|
|
} |
|
|
} |
|
|
_, e = self.redis.Set(k, d, exp).Result() |
|
|
|
|
|
|
|
|
_, e = skvs.redis.Set(k, d, exp).Result() |
|
|
|
|
|
|
|
|
return e |
|
|
return e |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//
|
|
|
//
|
|
|
func (self *sentinelKVStore) GetJSON(k string, o interface{}) error { |
|
|
|
|
|
bs, e := self.Get(k) |
|
|
|
|
|
|
|
|
func (skvs *sentinelKVStore) GetJSON(k string, o interface{}) error { |
|
|
|
|
|
bs, e := skvs.Get(k) |
|
|
if nil != e { |
|
|
if nil != e { |
|
|
return e |
|
|
return e |
|
|
} |
|
|
} |
|
@ -75,18 +75,18 @@ func (self *sentinelKVStore) GetJSON(k string, o interface{}) error { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//
|
|
|
//
|
|
|
func (self *sentinelKVStore) SetJSON(k string, v interface{}, x ...int64) error { |
|
|
|
|
|
|
|
|
func (skvs *sentinelKVStore) SetJSON(k string, v interface{}, x ...int64) error { |
|
|
bs, e := json.Marshal(v) |
|
|
bs, e := json.Marshal(v) |
|
|
if nil != e { |
|
|
if nil != e { |
|
|
return e |
|
|
return e |
|
|
} |
|
|
} |
|
|
e = self.Set(k, bs, x...) |
|
|
|
|
|
|
|
|
e = skvs.Set(k, bs, x...) |
|
|
return e |
|
|
return e |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//
|
|
|
//
|
|
|
func (self *sentinelKVStore) GetBSON(k string, o interface{}) error { |
|
|
|
|
|
bs, e := self.Get(k) |
|
|
|
|
|
|
|
|
func (skvs *sentinelKVStore) GetBSON(k string, o interface{}) error { |
|
|
|
|
|
bs, e := skvs.Get(k) |
|
|
if nil != e { |
|
|
if nil != e { |
|
|
return e |
|
|
return e |
|
|
} |
|
|
} |
|
@ -95,38 +95,38 @@ func (self *sentinelKVStore) GetBSON(k string, o interface{}) error { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//
|
|
|
//
|
|
|
func (self *sentinelKVStore) SetBSON(k string, v interface{}, x ...int64) error { |
|
|
|
|
|
|
|
|
func (skvs *sentinelKVStore) SetBSON(k string, v interface{}, x ...int64) error { |
|
|
bs, e := bson.Marshal(v) |
|
|
bs, e := bson.Marshal(v) |
|
|
if nil != e { |
|
|
if nil != e { |
|
|
return e |
|
|
return e |
|
|
} |
|
|
} |
|
|
e = self.Set(k, bs, x...) |
|
|
|
|
|
|
|
|
e = skvs.Set(k, bs, x...) |
|
|
return e |
|
|
return e |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//
|
|
|
//
|
|
|
func (self *sentinelKVStore) Del(k ...string) error { |
|
|
|
|
|
if self.verbose { |
|
|
|
|
|
|
|
|
func (skvs *sentinelKVStore) Del(k ...string) error { |
|
|
|
|
|
if skvs.verbose { |
|
|
t1 := time.Now() |
|
|
t1 := time.Now() |
|
|
defer log_timing(t1, "Sentinel KV DEL", k) |
|
|
defer log_timing(t1, "Sentinel KV DEL", k) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
_, e := self.redis.Del(k...).Result() |
|
|
|
|
|
|
|
|
_, e := skvs.redis.Del(k...).Result() |
|
|
return e |
|
|
return e |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//
|
|
|
//
|
|
|
func (self *sentinelKVStore) Keys(p string) ([]string, error) { |
|
|
|
|
|
if self.verbose { |
|
|
|
|
|
|
|
|
func (skvs *sentinelKVStore) Keys(p string) ([]string, error) { |
|
|
|
|
|
if skvs.verbose { |
|
|
t1 := time.Now() |
|
|
t1 := time.Now() |
|
|
defer log_timing(t1, "Sentinel KV KEYS", p) |
|
|
defer log_timing(t1, "Sentinel KV KEYS", p) |
|
|
} |
|
|
} |
|
|
return self.redis.Keys(p).Result() |
|
|
|
|
|
|
|
|
return skvs.redis.Keys(p).Result() |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//
|
|
|
//
|
|
|
func (self *sentinelKVStore) Expire(k string, x ...int64) error { |
|
|
|
|
|
if self.verbose { |
|
|
|
|
|
|
|
|
func (skvs *sentinelKVStore) Expire(k string, x ...int64) error { |
|
|
|
|
|
if skvs.verbose { |
|
|
t1 := time.Now() |
|
|
t1 := time.Now() |
|
|
defer log_timing(t1, "Sentinel KV EXPIRE", k) |
|
|
defer log_timing(t1, "Sentinel KV EXPIRE", k) |
|
|
} |
|
|
} |
|
@ -135,8 +135,8 @@ func (self *sentinelKVStore) Expire(k string, x ...int64) error { |
|
|
if len(x) > 0 { |
|
|
if len(x) > 0 { |
|
|
exp = x[0] |
|
|
exp = x[0] |
|
|
} else { |
|
|
} else { |
|
|
exp = DEFAULT_EXPIRE_VAL |
|
|
|
|
|
|
|
|
exp = DefaultExpireVal |
|
|
} |
|
|
} |
|
|
_, e := self.redis.Expire(k, time.Duration(exp)*time.Second).Result() |
|
|
|
|
|
|
|
|
_, e := skvs.redis.Expire(k, time.Duration(exp)*time.Second).Result() |
|
|
return e |
|
|
return e |
|
|
} |
|
|
} |