Redis常用的5种数据类型及缓存操作策略说

Redis常用的5种数据类型及缓存操作策略说

1.五种数据类型

String:是一种最简单的数据结构
Hash:是基于Hash槽做的一个内部的key、vaule对的这样的数据结构
List:是一个链表式的链表数据结构
Set:是元素不重复的集合
zSet:是基于跳表去做一个有序不重复的集合,并且可以自定义score打分项做一个排名

2.使用场景

String : ID递增、计数器功能、比如视频播放的次数,点赞次数、缓存
Hash :用一个对象来存储用户信息,比如商品信息,订单信息等
List :加好友列表,消息队列,最新消息排行榜等
Set :投票技术、共同好友,好友推荐、分类标签【redis提供多个几个的交集,并集,差集,元素唯一,无序】
zSet :排行榜,例如视频网站对用户上传的视频做排行榜等

3.持久化方式

RDB:优点:持久化文件小
            缺点:很有可能造成数据丢失、不便数据库的重构,因为它只记录结果
AOF:优点:数据库很难丢失,记录整个数据库的变化过程
           缺点:持久化文件大,而且只会越来越大

4.缓存操作策略说

一、缓存击穿: 某一热点key失效,大量的请求击穿数据库
                       解决方案一:构设置热点key永不过期,定期更新
二、缓存雪崩: 在某一瞬间,缓存全部失败,导致所有的请求全部穿过缓存落到数据库上,从而导致整个系统的一个瘫痪
                       解决方案一:设置随机的一个过期时间,不让所有的缓存的key失效
                       解决方案二:限制访问数据的流量
三、缓存穿透: 在任何时刻缓存都是失效的,就像是被穿透一样,所有的数据请求都还是会发送在数据库上,导致数据库瘫痪
                       解决方案一:构造一种默认的“不存在”的标示位,以使得不存在的value也可以进入到redis缓存中,这样就可以避免缓存穿透
四、缓存预热: 解决方案一:根据一定的策略,例如热点试题,提前从数据库中取出对应的试题并且放到redis中
五、缓存更新: 淘汰策略:更新完数据库直接淘汰redis的key,这样在下一次读操作的时候就会有一次回源查询数据库的操作
                           更新策略:更新完数据库顺便更新redis,这样缓存中就直接是新的数据了
缓存更新并不能保证数据库和缓存数据的一致性,因此缓存必须得要有超时数据,同时我们也需要定义清楚对应缓存的业务是允许脏读的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值