goredis的操作
string类型 key-value型
func(ctx,key,value,time)
设置 time 0不过期 10 10秒过期
Set(ctx,key,value,expireTime)
获取
Get(ctx,key)
设置一个值并返回旧值
GetSet(ctx,key,newValue)
如果key不存在则设置,有则不设置
SetNx(ctx,key,value,0)
批量设置
MSet(ctx,key1,value1,key2,value2)
批量获取
MGet(ctx,key1,key2)
累加1
Incr(ctx,key)
累加n
Incr(ctx,key,n)
累加浮点
Incr(ctx,key,n.n)
累减1
Decr(ctx,key)
累减n
Decr(ctx,key,n)
删除
Del(ctx,key1)
设置过期时间
Expire(ctx,key,time)
Hash类型 类似一个key,value的集合
设置
HSet(ctx,key,filed,key)
HSet(ctx,user,user1,johu)
获取
HGet(ctx,key,filed)
获取所有字段和值
HGetAll(ctx,key)
累加
HIncreBy(ctx,filed,n)
根据key获取所有的字段名
HKeys(ctx,key)
返回字段名的数量
Hlen(ctx,key)
批量获取
HMGet(ctx,key,filed1,filed2)
批量设置,可以map
data:=make(map[string]interface{})
HMSet(ctx,data)
设置字段名,如果不存在设置,存在不设置
HMSetNx(ctx,key,filed,value)
删除某个字段名
HDel(ctx,key,filed)
判断是否存在某个字段名
HExists(ctx,key,filed)
List类型,有顺序的队列
从左边加入
LPush(ctx,key,value)
如果存在,则从左边加入
LPushX(ctx,key,value)
从右边取出
RPop(ctx,key)
从右边加入
RPush(ctx,key,value)
如果存在,则从右边加入
RPushX(ctx,key,value)
从左边取出
LPop(ctx,key)
获取长度
LLen(ctx,key)
根据索引获取值
返回一个范围的值
如果0~-1则是获取全部
LRange(ctx,key,start,end)
删除数据
LRem(ctx,key,position,value)
position>0 从左边删除
position<0 从右边删除
|position| 删除多少个value
LRem(ctx,user,2,johu)
从左边删除2个johu
根据索引获取值
LIndex(ctx,key,2)
根据索引插入值
LInsert(ctx,key,way,index,value)
way before之前 after之后
LInsert(ctx,user,before,3,jj)
Set类型 集合 一个key多个值
添加集合
SAdd(ctx,key,value1)
获取集合中元素的个数
SCard(ctx,key)
判断元素是否存在
SIsMember(ctx,key,member)
获取元素
SMembers(ctx,key)
删除元素
SRem(ctx,key,value)
随机返回元素并且删除这个元素
SPop(ctx,key)
随机返回5个
SPopN(ctx,key,n)
带有分数的集合类型
添加一个或者多个元素,如果存在则更新分数
ZAdd(ctx,key,&redis.Z{
Score:20,
Member:"johu"
})
返回集合元素个数
ZCard(ctx,key)
统计某个分数范围内的元素个数
ZCount(key,"10","20")
默认为大于等于 小于等于
ZCount(key,"(10","20") 大于
增加元素的分数
ZIncrBy(ctx,key,score,member)
根据索引范围按照从小到大的分数排序
ZRange(ctx,key,0,5)
根据索引范围按照从大到小的分数排序
ZRevRange
根据分数范围返回集合元素,元素分数从小到大,可以分页
op := redis.ZRangeBy{
Min:"2", // 最小分数
Max:"10", // 最大分数
Offset:0, // 类似sql的limit, 表示开始偏移量
Count:5, // 一次返回多少数据
}
ZRangeByScore(ctx,key,&op)
根据分数范围返回集合元素,元素分数从大到小,可以分页
ZRevRangeByScore()
根据分数范围返回元素,并且带有元素分数
op := redis.ZRangeBy{
Min:"2", // 最小分数
Max:"10", // 最大分数
Offset:0, // 类似sql的limit, 表示开始偏移量
Count:5, // 一次返回多少数据
}
ZRangeByScoreWithScore(ctx,key,&op)
删除元素
ZRem(ctx,key,member)
根据索引范围删除元素
集合元素按照分数到高排序,删除第0个到第5个
ZRemRangeByRank(ctx,key,start,end)
集合元素按照分数到高排序,删除第0个到第5个
负数为分数最高的开始
ZRemRangeByRank(ctx,key,-start,-end)
根据分数范围删除元素
删除范围: 2<=分数<=5 的元素
rdb.ZRemRangeByScore(ctx,"key", "2", "5")
删除范围: 2<=分数<5 的元素
rdb.ZRemRangeByScore(ctx,"key", "2", "(5")
查询元素的分数
ZScore(ctx,key,member)
查询元素的排名
ZRank(ctx,key,member)