Redis 罕用的数据类型: 字符串 哈希 链表 汇合 有序汇合 bitmap hyperlog geo

应用Lua 脚本实现多个命令原子性操作 分布式锁

package redisimport (    "fmt"    "github.com/go-redis/redis"    "time")type clientRedis struct {    *redis.Client}/*    获取一个*redis.Client */func NewRds(addr, password string, DB, poolSize int) (client *clientRedis, err error) {    client = &clientRedis{redis.NewClient(&redis.Options{        Addr:     addr,        Password: password,        DB:       DB,        PoolSize: poolSize,    })}    pong, err := client.Ping().Result()    if err != nil {        fmt.Println(err)        return    }    fmt.Println(pong)    return}/*    string set操作  对照命令 set key value */func (cr *clientRedis) StringSet(expire time.Duration, key string, value string) (err error) {    err = cr.Client.Append(key, value).Err()    if err != nil {        // todo error info        return    }    cr.Expire(key, expire)    return}/*    string get操作  对照命令 get key */func (cr *clientRedis) StringGet(key string) (res string, err error) {    res, err = cr.Get(key).Result()    if err != nil {        //todo error info        return    }    return}/*    list lpush操作 对照命令  lpush key value*/func (cr *clientRedis) ListLPush(expire time.Duration, key string, value ...string) (err error) {    err = cr.LPush(key, value).Err()    if err != nil {        // todo error info        return    }    cr.Expire(key, expire)    return}/*    list rpush操作 对照命令  rpush key value*/func (cr *clientRedis) ListRPush(expire time.Duration, key string, value ...string) (err error) {    err = cr.RPush(key, value).Err()    if err != nil {        // todo error info        return    }    cr.Expire(key, expire)    return}/*    list lpop操作  对照命令  lpop key*/func (cr *clientRedis) ListLPop(key string) (res string, err error) {    res, err = cr.LPop(key).Result()    if err != nil {        //todo error info        return    }    return}/*    list rpop操作  对照命令  rpop key*/func (cr *clientRedis) ListRPop(key string) (res string, err error) {    res, err = cr.RPop(key).Result()    if err != nil {        //todo error info        return    }    return}/*    set  add操作  对照命令   sadd key value */func (cr *clientRedis) SetAdd(expire time.Duration, key string, value ...string) (err error) {    err = cr.SAdd(key, value).Err()    if err != nil {        // todo error info        return    }    cr.Expire(key, expire)    return}/*    set members操作 对照命令  smembers key */func (cr *clientRedis) SetMembers(key string) (res []string, err error) {    res, err = cr.SMembers(key).Result()    if err != nil {        //todo error info        return    }    return}