redis五大数据类型应用场景

本文探讨了如何利用Redis的string、哈希、列表、集合和有序集合数据类型实现单值缓存、分布式锁、计数器、序列号生成、对象缓存、消息队列、社交互动模型和排行榜等功能。通过实例解析,展示了Redis在信息技术中的广泛应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符串string

  • set key value 实现单值缓存
  • setnx product:10001 true 实现分布式锁,返回1表示获取锁成功,返回0表示获取锁失败,这个值已经被设置过
  • incr acticle:readcount{文章id} 实现计数器,每执行一次加一
  • incrby orderId 1000 实现分布式系统全局序列号,一次性拿1000个序列号,在redis里面加一,批量生成序列号提升性能

因为string 类型是二进制安全的,可以用来存放图片,视频等内容,另外由于Redis的高性能读写功能,而string类型的value也可以是数字,可以用作计数器(INCR,DECR),比如分布式环境中统计系统的在线人数,秒杀等。

哈希hash

(比string类型操作消耗内存和cpu更小,更节约空间,集群架构下不适合大规模使用)

  • hmget user 1:name 1:balance 实现对象缓存:多个字段修改方便一些,大数据量要进行分段存储
  • 电商购物车实现场景可以通过hset 添加商品 hincrby 添加商品数量 hlen获取商品总数 hdel删除商品 hgetall获取购物车所有商品
  • 可以做单点登录存放用户信息

列表list

  • lpush把值设置到列表的表头(最左边)rpush把值设置到列表的表尾(最右边)lpop从列表头拿掉值(最左边)rpop从列表尾拿掉值(最右边)
  • Stach(栈):lpush+lpop
  • Queue(队列):lpush+rpop
  • 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 操作等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值