Redis常见使用场景

热点数据的缓存

    缓存是 redis 使用最高的一种使用场景,仅仅使用 set/get 就可以实现。在使用redis存储热点数据的时候需要结合expire设置过期时间。
    需要考虑的问题:1、如何更好的设置缓存;2、如何保持缓存与上游数据的一致性;3、如何解决缓存雪崩,缓存击穿问题


限时业务

    redis中可以使用expire命令设置一个键的生存时间,到时间后redis会删除它。利用这一特性可以运用在限时的优惠活动信息、手机验证码等业务场景。

 

计数器

    redis由于incrby命令可以实现原子性的递增,例如,点赞数、收藏数、分享数等。


频率控制

    在高并发的秒杀活动、分布式序列号的生成、具体业务还体现在比如限制一个手机号发多少条短信、一个接口一分钟限制多少请求、一个接口一天限制调用多少次等等。

 

排行榜

    借助redis的SortedSet按照得分对热点数据进行排序,例如,展示最近、最热、点击率最高、活跃度最高等等条件的top list。

 

分布式锁

    使用分布式锁是为了解决一些性能问题,如分布式定时任务防止执行多次 (做好幂等性),而且鉴于单点 redis 挂掉的可能性很小,可以使用这种单机版的分布式锁。这个主要利用redis的setnx命令进行,setnx:"set if not exists"就是如果不存在则成功设置缓存同时返回1,否则返回0 。结合过期时间使用,防止死锁的出现。

 

点赞、好友等相互关系

    Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。 
    例如,用户点赞列表、用户收藏列表、用户关注列表等。

 

记录用户判定信息

    记录用户判定信息的需求也非常普遍,可以知道一个用户是否进行了某个操作。例如,用户是否点赞、用户是否收藏、用户是否分享等。

会话缓存


    使用Redis进行会话缓存。例如,将web session存放在Redis中。


消息队列


    Redis能作为一个很好的消息队列来使用,通过list的lpop及lpush接口进行队列的写入和消费,本身性能较好能解决大部分问题。但是,不提倡使用,更加建议使用rabbitmq等服务,作为消息中间件。
    1、没有ack(消息确认机制),有可能丢消息;    2、需要做redis的持久化配置
    https://segmentfault.com/a/1190000012244418?utm_source=tag-newest


业务使用方式


      String(字符串): 应用数, 资讯数等, (避免了select count(*) from …)

Hash(哈希表): 用户粉丝列表, 用户点赞列表, 用户收藏列表, 用户关注列表等。

List(列表):消息队列, push/sub提醒。

SortedSet(有序集合):热门列表, 最新动态列表, TopN, 自动排序。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值