12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package videoshot
- import (
- "context"
- "fmt"
- "go-common/library/cache/redis"
- "go-common/library/log"
- )
- const (
- // _hashKeyNum the max count of hash key
- _hashKeyNum = int64(100000)
- _keyPrefix = "vs_"
- )
- func hashKey(cid int64) string {
- return fmt.Sprintf("%s%d", _keyPrefix, cid%_hashKeyNum)
- }
- // cache get videoshot's count by id.
- func (d *Dao) cache(c context.Context, cid int64) (count, ver int, err error) {
- var (
- key = hashKey(cid)
- conn = d.rds.Get(c)
- out int64
- )
- defer conn.Close()
- if out, err = redis.Int64(conn.Do("HGET", key, cid)); err != nil {
- if err == redis.ErrNil {
- err = nil
- } else {
- log.Error("HGET(%s, %d) error(%v)", key, cid, err)
- }
- return
- }
- ver = int(out >> 32)
- count = int(int32(out))
- return
- }
- // addCache set videoshot info into redis.
- func (d *Dao) addCache(c context.Context, cid int64, ver, count int) (err error) {
- var (
- key = hashKey(cid)
- conn = d.rds.Get(c)
- in int64
- )
- in = int64(ver)<<32 | int64(count)
- defer conn.Close()
- if _, err = conn.Do("HSET", key, cid, in); err != nil {
- log.Error("HSET(%s, %d, %d)", key, cid, count, err)
- }
- return
- }
|