【缓存应用】谈谈redis应用场景

本文详细介绍了Redis在分布式系统中的多种应用场景,包括计数器(如秒杀、限流)、限时业务(如验证码、优惠活动)、热点数据缓存、排行榜、分布式锁、延时操作、分页模糊搜索和队列等。通过使用Redis的特性,如原子操作、过期时间、排序集合和列表,可以有效提升系统的性能和效率。

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

关于redis应用场景总结

1.计数器相关应用场景

高并发的秒杀活动、分布式序列号的生成

限制手机短信发送数量、接口每分钟请求次数

工单号递增计数场景

可以使用redis的 incrby命令实现原子性的递增

2.限时业务应用场景

限时的优惠活动信息、手机验证码

redis中可以使用expire命令设置一个键的生存时间,到时间后redis会删除它。

3.热点数据缓存应用场景

缓存热点数据,启用 allkeys-lru 淘汰策略

系统功能如下:

  • 可以发布文章;
  • 可以对文章进行点赞;
  • 在首页可以按文章的发布时间或者文章的点赞数进行排序显示;

文章信息 HASH 来存储

文章包括标题、作者、赞数等信息,在 Redis 中使用 HASH 来存储每种信息以及其对应的值的映射

Redis 使用命名空间的方式来实现类似表的功能、命名空间可以扩展树的深度 set test1:test2:test3 123 类似json

键名的前面部分存储空间名,后面部分存储空间 ID,整个组成Hash的健名

由于redis访问速度块、支持的数据类型比较丰富,所以redis很适合用来存储热点数据,另外结合expire,

我们可以设置过期时间然后再进行缓存更新操作,这个功能最为常见,我们几乎所有的项目都有所运用。

4.排行榜相关问题应用场景

排行榜方面查询速度普遍在关系型数据库偏慢,可以借助redis的SortedSet进行热点数据的排序。

在活动中,我们需要展示各个部门的点赞排行榜, 所以我针对每个部门做了一个SortedSet,然后以用户的openid作为上面的username,

以用户的点赞数作为上面的score, 然后针对每个用户做一个hash,通过zrangebyscore就可以按照点赞数获取排行榜,

然后再根据username获取用户的hash信息,这个当时在实际运用中性能体验也蛮不错的。

5.分布式锁应用场景

使用redis的setnx命令进行

setnx:"set if not exists"就是如果不存在则成功设置缓存同时返回1,否则返回0 

在定时任务中首先 通过setnx设置一个lock,如果成功设置则执行,如果没有成功设置,则表明该定时任务已执行

给这个lock加一个过期时间,比如说30分钟执行一次的定时任务,那么这个过期时间设置为小于30分钟的一个时间 就可以,

这个与定时任务的周期以及定时任务执行消耗时间相关

6.延时操作应用场景

 

7.分页模糊搜索应用场景

redis的set集合中提供了一个zrangebylex方法,语法如下:

ZRANGEBYLEX key min max [LIMIT offset count]

通过ZRANGEBYLEX zset - + LIMIT 0 10 可以进行分页数据查询,其中- +表示获取全部数据

8.队列应用场景

redis有list push和list pop

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小旋哥^^

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值