Redis 缓存设计

1. 缓存的优势和缺点

1.1. 优势

(1)加速读写 : 针对存储层通常读写性能不够强悍。
(2)降低后端负载

1.2 缺点

(1)数据不一致:缓存和存储层的数据存在着一定时间串口的不一致。

2. 缓存更新策略

2.1 LRU/FIFO 算法剔除

缓存的使用量超过了最大值的时候触发。根据maxmemory-policy 配置。

2.2 超时剔除

给缓存设置过期时间,当过期后自动删除。

2.3 主动更新

利用消息或者其他方式通知缓存更新。

4. 穿透优化

(1)缓存穿透是查询一个根本不存在的数据,缓存和存储测都不会命中。缓存穿透会导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义。
(2)解决方案:缓存空对象,设置一个标志位flag, 数据库为空,flag=true。

5. 无底洞优化

5.1 无底洞原因

大量节点(facebook 2010年达到3000个memcache)导致批量操作需要从很多不同节点上获取数据,网络时间消耗太大

5.2 解决方案

5.2.1 串行命令

耗时= n 次网络时间 + n 次命令时间 , 网络次数是n

5.2.2 串行IO

(1) 耗时 = n 次网络时间 + n 次命令时间,网络次数是节点数。
(2)使用jedis 客户端api 实现逻辑:使用CRC16 本地计算出每个key的slot;通过jedisCluster本地slot-> node 的映射获取slot 对应的node。这样可以得到key --> node 的对应关系。
(3)针对每个node 的 key的集合使用mget或者pipeline 操作。

5.2.3 并行IO

(1)网络耗时: max_slow(node 网络时间) + n 次命令时间, 耗时取决于最慢的节点。
(2)将5.2.3 方案中的第三步改为多线程

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值