【高级开发进阶】Redis五大数据结构应用场景落地

Redis缓存数据结构,数据同步问题(双删策略),缓存雪崩,缓存穿透,热点缓存重构,缓存失效,哨兵机制,持久化,redis 淘汰机制

熟悉掌握Redis数据结构的使用场景,熟悉Redis缓存高并发的使用场景。比如,缓存雪崩,缓存穿透。

五种数据结构:

字符串string

应用场景:

一,单值缓存:

  • set key value
  • get key

二,对象缓存:

  • set user:1 value(json数据)

说明:一次存入,后面修改不方便,胜在简单

  • mset user:1:name zhuge user:1:balance 1888
  • mget user:1:name user:1:balance

说明:多个字段修改方便一些

三,分布式锁:

  • setnx product:10001 true //返回1表示获取锁成功
  • setnx product:10001 true//这个值已经被设置过,则返回0表示获取锁失败
  • 。。。执行业务操作
  • del product:10001 //执行完业务释放锁
  • setnx product:10001 true ex 10 nx //防止程序意外终止导致死锁

四,计数器:例如文章阅览次数

  • incr acticle:readcount{文章id} //每执行一次加一
  • get acticle:readcount{文章id}

五,Web集群session共享

  • spring session + redis实现session共享

六,分布式系统全局序列号

  • incrby orderId 1000 //一次性拿1000个序列号,在redis里面加一,批量生成序列号提升性能

哈希hash

一,对象缓存:多个字段修改方便一些,大数据量要进行分段存储

  • hmset user {userId}:name zhuge {userId}:balance 1888
  • hmset user 1:name zhuge 1:balance 1888
  • hmget user 1:name 1:balance

二,电商购物车

说明:

1001为用户

10088商品

cart:1001为key

优缺点:

列表list

微博消息和微信公众号文章

我关注了MacTalk和备胎说车,MacTalk先发了一篇文章,文章id为10018,备胎说车后发了一篇文章,文章id为10086

LPUSH msg:{我的用户id} 10018

LPUSH msg:{我的用户id} 10086

查看最新消息:

LRANGE msg:{我的用户id} 0 4//查看自己订阅文章的最新五篇

集合set

srandmember key [count]随机获取count个的中奖者,获取的元素还在集合里

spop key [count]随机获取count个的中奖者,获取的元素不在集合里了

SINTER 交集 取共同的元素

SUNION 并集 取所有的元素

SDIFF 差集 以第一个集合为基准减去后面所有集合的并集,最后看第一个集合还剩下的元素

集合实现微博微信关注模型

集合实现微博微信关注模型

张三关注的人:

zhangsanSet - >{lisi,liaozhiwei}

王五关注的人:

wangwuSet -> {lisi,liaozhiwei,zhangsan,shuaige}

李四关注的人:

lisiSet -> {zhangsan,liaozhiwei,wangwu,shuaige,xunyu}

我与王五共同关注的人:交集

SINTER zhangsanSet wangwuSet -> {lisi,liaozhiwei}

我关注的人也关注他:

SISMEMBER listSet wangwu

SISMEMBER liaozhiwei wangwu

我可能认识的人:进到王五的主页,拿王五的集合和自己的集合对比,取差集

SDIFF wangwuSet zhangsanSet ->{zhangsan,shuaige}

 

有序集合zset

 

 

 

 

 

 

 

 

 

 

 

评论 381
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java程序员廖志伟

赏我包辣条呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值