Redis五大数据类型的应用场景

Posted java_wxid

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis五大数据类型的应用场景相关的知识,希望对你有一定的参考价值。

我是🌟廖志伟🌟,一名🌕Java开发工程师🌕、📝Java领域优质创作者📝、🎉CSDN博客专家🎉、🌹幕后大佬社区创始人🌹。拥有多年一线研发经验,研究过各种常见框架中间件的底层源码,对于大型分布式微服务、三高架构(高性能高并发高可用)有过实践架构经验。

🍊博主:java_wxid
🍊博主:Java廖志伟
🍊社区:幕后大佬



本文内容:


字符串string

  1. 可以通过set key value 实现单值缓存。
  2. 可以通过setnx product:10001 true 实现分布式锁,返回1表示获取锁成功,返回0表示获取锁失败,这个值已经被设置过。
  3. 可以通过incr acticle:readcount文章id 实现计数器,每执行一次加一
  4. 可以通过incrby orderId 1000实现分布式系统全局序列号,一次性拿1000个序列号,在redis里面加一,批量生成序列号提升性能。因为string类型是二进制安全的,可以用来存放图片,视频等内容,另外由于Redis的高性能读写功能,而string类型的value也可以是数字,可以用作计数器(INCR,DECR),比如分布式环境中统计系统的在线人数,秒杀等。

哈希hash

  1. 哈希hash(比string类型操作消耗内存和cpu更小,更节约空间,集群架构下不适合大规模使用)。
  2. 可以通过hmget user 1:name 1:balance 实现对象缓存:多个字段修改方便一些,大数据量要进行分段存储。
  3. 电商购物车实现场景可以通过hset 添加商品 hincrby 添加商品数量 hlen获取商品总数 hdel删除商品 hgetall获取购物车所有商品。
  4. 可以做单点登录存放用户信息

列表list

lpush把值设置到列表的表头(最左边)rpush把值设置到列表的表尾(最右边)lpop从列表头拿掉值(最左边)rpop从列表尾拿掉值(最右边)

  1. Stach(栈):lpush+lpop
  2. Queue(队列):lpush+rpop
  3. Blocking MQ(阻塞队列):lpush + brpop

微博消息和微信公众号文章,我关注了MacTalk和备胎说车,MacTalk先发了一篇文章,文章id为10018,备胎说车后发了一篇文章,文章id为10086

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

可以实现简单的消息队列,另外可以利用lrange命令,做基于redis的分页功能

集合set

微信抽奖小程序

sadd key userId 点击参与抽奖加入集合

smembers key 查看参与抽奖所有用户

srandmember key [count] /spop key [count] 抽取count名中奖者

微信微博点赞,收藏,标签

sadd key value 点赞

srem key value 取消点赞

sismember key value 检查用户是否点过赞

smembers key 获取点赞的用户列表

scard key 获取点赞用户数

实现微博微信关注模型

SINTER 交集 取共同的元素 可以实现商品筛选面包屑

SUNION 并集 取所有的元素

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

共同关注的人:交集

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

我关注的人也关注他:取出自己关注人的集合的交集

由于底层是字典实现的,查找元素特别快,另外set 数据类型不允许重复,利用这两个特性我们可以进行全局去重,比如在用户注册模块,判断用户名是否注册;另外就是利用交集、并集、差集等操作,可以计算共同喜好,全部的喜好,自己独有的喜好等功能。

zset

实现排行榜

zincrby key count 实现点击新闻

zreverange key 0 9 withscores 实现展示当日排行前十

zunionstore key count 几日搜索榜单

zreveange key 0 9 withscores 展示七日排行前十

有序的集合,可以做范围查找,排行榜应用,取 TOP N 操作等。


总结

以上就是今天要讲的内容,还希望各位读者大大能够在评论区积极参与讨论,给文章提出一些宝贵的意见或者建议📝,合理的内容,我会采纳更新博文,重新分享给大家。

🙏四连 关注🔎点赞👍收藏⭐️留言📝

感谢大家的支持,用心写博文分享给大家,你的支持(🔎点赞👍收藏⭐️留言📝)是对我创作的最大帮助。
🍊微信公众号:南北踏尘
🍊主页地址:java_wxid
🍊社区地址:幕后大佬

给读者大大的话

我本身是一个很普通的程序员,放在人堆里,除了与生俱来的🌹盛世美颜🌹、所剩不多的发量,就剩下180的大高个了。就是我这样的一个人,默默坚持写博文也有好多年了,有句老话说的好,🌕牛逼之前都是傻逼式的坚持🌕。希望自己可以通过大量的作品,时间的积累,个人魅力、运气和时机,可以打造属于自己的🌟技术影响力🌟。同时也希望自己可以成为一个🎄懂技术🎄,🎄懂业务🎄,🎄懂管理🎄的综合型人才,作为项目架构路线的总设计师,掌控全局的🌕团队大脑🌕,技术团队中的🍊绝对核心🍊是我未来几年不断前进的目标。


提示:以下都是资源分享,求个一键三连。

面试资料

福利大放送,🎉欢迎关注🔎点赞👍收藏⭐️留言📝,拜托了🙏,这对我真的很重要。
点击:面试资料
提取码:2021

200套PPT模板

福利大放送,🎉欢迎关注🔎点赞👍收藏⭐️留言📝,拜托了🙏,这对我真的很重要。
点击:200套PPT模板
提取码:2021

提问的智慧

福利大放送,🎉欢迎关注🔎点赞👍收藏⭐️留言📝,拜托了🙏,这对我真的很重要。
点击:提问的智慧
提取码:2021

Java开发学习路线

名称链接
JavaSE点击: JavaSE
mysql专栏点击: MySQL专栏
JDBC专栏点击: JDBC专栏
MyBatis专栏点击: MyBatis专栏
Web专栏点击: Web专栏
Spring专栏点击: Spring专栏
SpringMVC专栏点击: SpringMVC专栏
SpringBoot专栏点击: SpringBoot专栏
SpringCould专栏点击: SpringCould专栏
Redis专栏点击: Redis专栏
Linux专栏点击: Linux专栏
Maven3专栏点击: Maven3专栏
Spring Security5专栏点击: Spring Security5专栏
更多专栏更多专栏,请到 java_wxid主页 查看

P5学习路线图
P6学习路线图
P7学习路线图
P8学习路线图

以上四张图详细介绍了作为Java开发工作者所需要具备的知识技能,同学们学废了嘛,有想法系统学习的同学可以私聊我,🎉欢迎关注🔎点赞👍收藏⭐️留言📝。
🍊博主:java_wxid
🍊博主:Java廖志伟
🍊社区:幕后大佬

以上是关于Redis五大数据类型的应用场景的主要内容,如果未能解决你的问题,请参考以下文章

Redis 详解 redis的五大数据类型实现原理

redis五大数据类型使用场景

Redis五大常见的数据类型之 Hash

Redis五大数据类型与使用场景汇总!!(含完整实战案例,建议收藏)

Redis五大数据类型与使用场景汇总!!(含完整实战案例,建议收藏)

Redis五大基本数据类型