后端开发学习(三)

redis五种数据结构

  • 字符串string
  • 哈希hash
  • 列表list
  • 集合set
  • 有序集合zset

(一)string

关联锁
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批量生成序列号提升性能

(二)hash

对象缓存
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

(三)list

LPUSH key value[value…] 从左边放元素
Rpush key value[value…] 从右边放元素
LPOP key 从左边拿元素
RPOP key 从右边拿元素

例子:微博消息和公众号消息
阿信发微博,消息id为10018
LPUSH msg:{阿信-ID} 10018
查看最新消息:LRANGE msg:{阿信-id} 0 4
可以用管道分批

(四)set

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

zset集合操作实现排行榜
点击新闻: zincrby hotnews:20190819 1 xxx
排行榜前十: zrevrange hotnews:20190819 0 9 withscores(倒序前十)zrange 是正序
七日排行榜: zunionstore hotnews:20190813-20190819 7(并集)
zinterstore 交集

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值