init: web_hgdjc_server
This commit is contained in:
@@ -0,0 +1,279 @@
|
||||
package redis
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"time"
|
||||
sErr "videoweb/pub/common/errors"
|
||||
"videoweb/pub/common/log"
|
||||
|
||||
goredis "github.com/go-redis/redis"
|
||||
)
|
||||
|
||||
type ZMember = goredis.Z
|
||||
|
||||
// Set 设置键值对
|
||||
func Set(key string, value interface{}, expireTime time.Duration) (err error) {
|
||||
if err = redisCli.Set(key, value, expireTime).Err(); err != nil {
|
||||
return sErr.MakeWithErr(sErr.RedisSet, err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Incr 增加1
|
||||
func Incr(key string, expireTime time.Duration) (val int64, err error) {
|
||||
val, err = redisCli.Incr(key).Result()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
duration := redisCli.TTL(key).Val()
|
||||
//log.Info("Incr Test", log.Any("duration", duration))
|
||||
if duration.Seconds() == -1 {
|
||||
redisCli.Expire(key, expireTime)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func SAdd(key string, members ...interface{}) (err error) {
|
||||
_, err = redisCli.SAdd(key, members...).Result()
|
||||
return
|
||||
}
|
||||
|
||||
func SAddCount(key string, members ...interface{}) (int64, error) {
|
||||
return redisCli.SAdd(key, members...).Result()
|
||||
}
|
||||
|
||||
// 无序集合操作 随机删除集合中某一元素
|
||||
func SPop(key string, members ...interface{}) (string, error) {
|
||||
val, err := redisCli.SPop(key).Result()
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("SPop failed %+v:", err))
|
||||
}
|
||||
return val, err
|
||||
}
|
||||
|
||||
func SRem(key string, members ...interface{}) (err error) {
|
||||
if err = redisCli.SRem(key, members...).Err(); err != nil {
|
||||
err = sErr.MakeWithErr(sErr.RedisSet, err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// ScanSlice 返回集合成员
|
||||
func SScanSlice(key string, container interface{}) (err error) {
|
||||
err = redisCli.SMembers(key).ScanSlice(container)
|
||||
return err
|
||||
}
|
||||
|
||||
// SMembers
|
||||
func SMembers(key string) (list []string, err error) {
|
||||
result := redisCli.SMembers(key)
|
||||
if result.Err() != nil {
|
||||
err = sErr.MakeWithErr(sErr.RedisGet, result.Err())
|
||||
return
|
||||
}
|
||||
list = result.Val()
|
||||
return
|
||||
}
|
||||
|
||||
// RPush
|
||||
func RPush(key string, value string) error {
|
||||
if key == "" {
|
||||
return errors.New("key should not empty")
|
||||
}
|
||||
if err := redisCli.RPush(key, value).Err(); err != nil {
|
||||
return sErr.MakeWithErr(sErr.RedisRPush, err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// RPush
|
||||
func RPushValues(key string, value ...interface{}) error {
|
||||
if key == "" {
|
||||
return errors.New("key should not empty")
|
||||
}
|
||||
if err := redisCli.RPush(key, value...).Err(); err != nil {
|
||||
return sErr.MakeWithErr(sErr.RedisRPush, err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// LPop
|
||||
func LPop(key string) (*string, error) {
|
||||
if key == "" {
|
||||
return nil, errors.New("key should not empty")
|
||||
}
|
||||
|
||||
cmd := redisCli.LPop(key)
|
||||
if cmd.Err() != nil {
|
||||
return nil, sErr.MakeWithErr(sErr.RedisLPop, cmd.Err())
|
||||
}
|
||||
|
||||
data, err := cmd.Result()
|
||||
if err != nil {
|
||||
if err == goredis.Nil {
|
||||
return nil, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &data, nil
|
||||
}
|
||||
|
||||
// Get 根据键 获取值
|
||||
func Get(key string) (*string, error) {
|
||||
if key == "" {
|
||||
return nil, errors.New("key should not empty")
|
||||
}
|
||||
data, err := redisCli.Get(key).Result()
|
||||
if err != nil {
|
||||
if err == goredis.Nil {
|
||||
return nil, nil
|
||||
}
|
||||
return nil, err
|
||||
} else {
|
||||
return &data, nil
|
||||
}
|
||||
}
|
||||
|
||||
// Get 根据键 获取值
|
||||
func GetBytes(key string) (bytes []byte, err error) {
|
||||
bytes, err = redisCli.Get(key).Bytes()
|
||||
if err != nil {
|
||||
return nil, sErr.MakeWithErr(sErr.RedisGet, err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Del 删除
|
||||
func Del(keys ...string) (err error) {
|
||||
if err = redisCli.Del(keys...).Err(); err != nil {
|
||||
return sErr.MakeWithErr(sErr.RedisDel, err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Exists keys exists?
|
||||
func Exists(keys ...string) (has bool, err error) {
|
||||
intcmd := redisCli.Exists(keys...)
|
||||
if err = intcmd.Err(); err != nil {
|
||||
return
|
||||
}
|
||||
has = intcmd.Val() > 0
|
||||
return
|
||||
}
|
||||
|
||||
func Keys(pattern string) (keys []string, err error) {
|
||||
list := redisCli.Keys(pattern)
|
||||
keys = list.Val()
|
||||
err = list.Err()
|
||||
return
|
||||
}
|
||||
|
||||
// Setnx 设置键值对
|
||||
func Setnx(key string, value interface{}, expirTime time.Duration) (err error) {
|
||||
if err = redisCli.SetNX(key, value, expirTime).Err(); err != nil {
|
||||
err = sErr.MakeWithErr(sErr.RedisSet, err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Setnx 设置键值对 正确的封装
|
||||
func Setnx_NewOK(key string, value interface{}, expirTime time.Duration) (v bool, err error) {
|
||||
cmd := redisCli.SetNX(key, value, expirTime)
|
||||
return cmd.Val(), cmd.Err()
|
||||
}
|
||||
|
||||
func Expire(key string, expirTime time.Duration) (err error) {
|
||||
if err = redisCli.Expire(key, expirTime).Err(); err != nil {
|
||||
err = sErr.MakeWithErr(sErr.RedisSet, err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Redis `SRANDMEMBER key count` command.
|
||||
func SRandMemberN(key string, count int64) (list []string, err error) {
|
||||
result := redisCli.SRandMemberN(key, count)
|
||||
if result.Err() != nil {
|
||||
return
|
||||
}
|
||||
list = result.Val()
|
||||
return
|
||||
}
|
||||
|
||||
// 有序集合操作 添加多个有序集合
|
||||
func ZAdd(key string, z ...ZMember) (int64, error) {
|
||||
count, err := redisCli.ZAdd(key, z...).Result()
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("ZAdd failed %+v:", err))
|
||||
}
|
||||
return count, err
|
||||
}
|
||||
|
||||
// 有序集合 数量
|
||||
func ZCard(key string) (int64, error) {
|
||||
count, err := redisCli.ZCard(key).Result()
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("ZCard failed %+v:", err))
|
||||
}
|
||||
return count, err
|
||||
}
|
||||
|
||||
// 返回区间成员
|
||||
func ZRange(key string, start, end int64) ([]string, error) {
|
||||
data, err := redisCli.ZRange(key, start, end).Result()
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("ZRange failed %+v:", err))
|
||||
}
|
||||
return data, err
|
||||
}
|
||||
|
||||
// 按照元素排序 删除指定排名的元素
|
||||
func ZRemRangeByRank(key string, start, end int64) (int64, error) {
|
||||
count, err := redisCli.ZRemRangeByRank(key, start, end).Result()
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("ZRemRangeByRank failed %+v:", err))
|
||||
}
|
||||
return count, err
|
||||
}
|
||||
|
||||
// 按照元素排序 删除按指定的分数区间的的元素
|
||||
func ZRemRangeByScore(key, start, end string) (int64, error) {
|
||||
count, err := redisCli.ZRemRangeByScore(key, start, end).Result()
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("ZRemRangeByScore failed %+v:", err))
|
||||
}
|
||||
return count, err
|
||||
}
|
||||
|
||||
// Publish 发布消息
|
||||
func Publish(channel RCType, message string) error {
|
||||
if err := redisCli.Publish(string(channel), message).Err(); err != nil {
|
||||
log.Error(fmt.Sprintf("Publish failed %+v:", err))
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func SendMsgToTg(message string) error {
|
||||
return Publish(RCT_tgmsg_send_msg, message)
|
||||
}
|
||||
|
||||
// SCard 发布消息
|
||||
func SCard(key string) (int64, error) {
|
||||
count, err := redisCli.SCard(key).Result()
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("SCard failed %+v:", err))
|
||||
}
|
||||
|
||||
return count, err
|
||||
}
|
||||
|
||||
// 获取key的剩余生存时间
|
||||
func TTL(key string) time.Duration {
|
||||
durCmd := redisCli.TTL(key)
|
||||
if durCmd != nil {
|
||||
return durCmd.Val()
|
||||
}
|
||||
return 0
|
||||
}
|
||||
Reference in New Issue
Block a user