关联锁 set key value:将字符串值value关联到key 如果key已经有其他值,set就覆写旧值,无视类型
setnx key value:将key的值设为value,当且仅当key不存在,若给定的key已经存在,则setnx 不做任何动作
计数器 INCR article:readout:{文章id} GET article:readout:{文章id}
分布式系统全局序列号 INCRBY orderID 1000 //redis批量生成序列号提升性能
对象缓存 HMSET user {userID}:name zhuge {userID}:balance 1888 优化方式:外层的key可以分片
例子:购物车操作 用户id 为key 商品id为field 商品数量为value 添加商品:hset cart:1001 10088 1 增加数量:hincrby cart:1001 10088 1 商品总数:hlen cart:1001 删除商品:hdel cart:1001 10088 获取所有商品:hgetall cart:1001
LPUSH key value[value…] 从左边放元素 Rpush key value[value…] 从右边放元素 LPOP key 从左边拿元素 RPOP key 从右边拿元素
例子:微博消息和公众号消息 阿信发微博,消息id为10018 LPUSH msg:{阿信-ID} 10018 查看最新消息:LRANGE msg:{阿信-id} 0 4 可以用管道分批
sadd key number srem key number 删除元素 scard key 所有元素的个数 操作 交集SINTER set1 set2 set3 并集SUNION set1 set2 set3 差集SDIFF set1 set2 set3 (1减去2和3的并集)
例子:抽奖小程序 SADD key {userid} 加入集合 SMEMBERS key 查看所有元素 SRANDMEMBER key [count] 随机抽取,但是抽取的元素还在原集合内 SPOP act:1001 3 随机抽取 三个,但是这三个元素不在原集合内了
例子:点赞、收藏 点赞 SADD like:{消息id} {用户id} 取消点赞 SREM like:{消息id} {用户id} 检测用户是否点赞 SISMEMBER like:{消息id} {用户id}所有 所有点赞用户:SMEMBERS like:{消息id}
例子:共同关注 sinter 用交集 我关注的人也关注它 用sismember 可能认识的人 用sdiff差集
zset集合操作实现排行榜 点击新闻: zincrby hotnews:20190819 1 xxx 排行榜前十: zrevrange hotnews:20190819 0 9 withscores(倒序前十)zrange 是正序 七日排行榜: zunionstore hotnews:20190813-20190819 7(并集) zinterstore 交集