You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.3 KiB
91 lines
2.3 KiB
package redis |
|
|
|
import ( |
|
"context" |
|
"fmt" |
|
"go-common/library/log" |
|
"time" |
|
) |
|
|
|
const ( |
|
_videoJamTime = "va_v_jam_time" |
|
) |
|
|
|
// SetVideoJam set video traffic jam time |
|
func (d *Dao) SetVideoJam(c context.Context, jamTime int) (err error) { |
|
|
|
var conn = d.redis.Get(c) |
|
defer conn.Close() |
|
if _, err = conn.Do("SET", _videoJamTime, jamTime); err != nil { |
|
log.Error("conn.Do(SET, %s, %d) error(%v)", _videoJamTime, jamTime, err) |
|
} |
|
return |
|
} |
|
|
|
// TrackAddRedis add track redis |
|
func (d *Dao) TrackAddRedis(c context.Context, key, value string) (err error) { |
|
if key == "" { |
|
log.Warn("TrackAddRedis add empty key(%s) value(%v)", key, value) |
|
return fmt.Errorf("empty key") |
|
} |
|
var conn = d.redis.Get(c) |
|
defer conn.Close() |
|
if _, err = conn.Do("ZADD", key, time.Now().Unix(), value); err != nil { |
|
log.Error("conn.Do(ZADD, %s, %s) error(%v)", key, value, err) |
|
} |
|
return |
|
} |
|
|
|
// TrackAddVideosRedis add track video redis |
|
func (d *Dao) TrackAddVideosRedis(c context.Context, keys []string, value string) (err error) { |
|
var conn = d.redis.Get(c) |
|
defer conn.Close() |
|
for _, key := range keys { |
|
if err = conn.Send("ZADD", key, time.Now().Unix(), value); err != nil { |
|
log.Error("conn.Send(ZADD, %s, %s) error(%v)", key, value, err) |
|
} |
|
} |
|
if err = conn.Flush(); err != nil { |
|
log.Error("add conn.Flush error(%v)", err) |
|
return |
|
} |
|
for i := 0; i < len(keys); i++ { |
|
if _, err = conn.Receive(); err != nil { |
|
log.Error("add conn.Receive(%d) error(%v)", i+1, err) |
|
return |
|
} |
|
} |
|
return |
|
} |
|
|
|
// TrackRemRedis remove track redis |
|
func (d *Dao) TrackRemRedis(c context.Context, key, value string) (err error) { |
|
var conn = d.redis.Get(c) |
|
defer conn.Close() |
|
if _, err = conn.Do("ZREM", key, value); err != nil { |
|
log.Error("conn.Do(ZREM, %s, %s) error(%v)", key, value, err) |
|
} |
|
return |
|
} |
|
|
|
// TrackRemVideosRedis remove video track redis |
|
func (d *Dao) TrackRemVideosRedis(c context.Context, keys []string, value string) (err error) { |
|
var conn = d.redis.Get(c) |
|
defer conn.Close() |
|
for _, key := range keys { |
|
if err = conn.Send("ZREM", key, value); err != nil { |
|
log.Error("conn.Send(ZREM, %s, %s) error(%v)", key, value, err) |
|
} |
|
} |
|
if err = conn.Flush(); err != nil { |
|
log.Error("add conn.Flush error(%v)", err) |
|
return |
|
} |
|
for i := 0; i < len(keys); i++ { |
|
if _, err = conn.Receive(); err != nil { |
|
log.Error("add conn.Receive(%d) error(%v)", i+1, err) |
|
return |
|
} |
|
} |
|
return |
|
}
|
|
|