Redis 常用的数据类型: 字符串 哈希 链表 集合 有序集合 bitmap hyperlog geo
使用Lua 脚本实现多个命令原子性操作 分布式锁
package redis
import (
"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
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。