大家好,我是神韵,是一个技术&生活博主。据说是21天成一习惯,那么有没有一个习惯可以让你坚持一年的?我来试试!
每周5讲从2021-7-19开始,今天是2021-7-30,一轮计划是2022-7-18结束。关于文章都是定位为基础,我不敢讲的太深入,因为我怕自己没时间。欢迎来点赞打卡,你们的行动将是我无限的动力。
今日主题是:Redis五种数据结构对应的使用场景
有关命令可以参考:五种数据类型的基本使用
场景:缓存、计数器、分布式锁
1、缓存
实现的命令是:set key value EX/get key
一般缓存是保存对象,获取对象。场景是缓存对象id=1,缓存失效时间是1天。
ps:一个key值对应一个object,key太分散,还是用hash类型做缓存适合。
// 设置key=user:1,值为json串且过期时间为一天的缓存 set user:1 '{"id":1,"name":"shenyun"}' EX 86400 // 获取缓存 get user:1
2、计数器
实现的命令是:incr key
incr key,当key不存在直接设置为0并自增1,后面每次执行命令都自增1。场景是用户id=1访问量两次。
// 新增访问量,0-1 incr pv:1 // 增加访问量 1-2 incr pv:1 // 获取访问量 get pv
场景:缓存
1、缓存
实现的命令:hset key field value / hget key field
一般缓存是保存对象,获取对象。场景是缓存对象id=1,缓存失效时间是1天。
// 设置key=user:1,值为json串的缓存 hset user user:1 '{"id":1,"name":"shenyun"}' // 将key=user的过期时间设置为一天 expire user 86400 // 获取缓存 hget user user:1
场景:队列
实现命令:Ipush key value / rpop key
实现一个队列,输入1 2,弹出1 2
// 从左边入队分别入队 1、2,此时队列是2 1 lpush queue 1 2 // 右边出队两次 rpop queue rpop queue
场景:微信抽奖
实现命令:sadd key member / spop key
实现shenyun和zhangsan参与抽奖,随机得出一名中奖名单
// 将shenyun和zhangsan用户加入项目wx_item中 sadd wx_item shenyun zhangsan // 随机抽出一名中奖者并移出此项目 spop wx_item
zhangsan中奖
场景:排行榜
实现命令:zadd key score member / zrevrange key start stop[withscores]
实现文章访问量排行榜
// 添加三篇文章 访问量都是0 zadd article 0 ar1 0 ar2 0 ar3 // 文章ar1访问量增加1,设为1 zadd article 1 ar1 // 文章ar1访问量增加1,设为2 zadd article 2 ar1 // 文章ar2访问量增加1,设为1 zadd article 1 ar2 // 高到低排行,没有显示分数 zrevrange article 0 -1 // 高到低排行,显示分数 zrevrange article 0 -1 withscores
本文结束!
公众号每天会有推送,欢迎关注公众号查阅。