开发者社区> 雪飞鸿> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Redis 缓存设计原则

简介: 基本原则 只应将热数据放到缓存中 所有缓存信息都应设置过期时间 缓存过期时间应当分散以避免集中过期 缓存key应具备可读性 应避免不同业务出现同名缓存key 可对key进行适当的缩写以节省内存空间 选择合适的数据结构 确保...
+关注继续查看

基本原则

  • 只应将热数据放到缓存中

  • 所有缓存信息都应设置过期时间

  • 缓存过期时间应当分散以避免集中过期

  • 缓存key应具备可读性

  • 应避免不同业务出现同名缓存key

  • 可对key进行适当的缩写以节省内存空间

  • 选择合适的数据结构

  • 确保写入缓存中的数据是完整且正确的

  • 避免使用耗时较长的操作命令,如:keys *

    • Redis默认配置中操作耗时超过10ms即视为慢查询
  • 一个key对应的数据不应过大

    • 对于string类型,一个key对应的value大小应控制在10K以内,1K左右更优
    • hash类型,不应超过5000行
  • 避免缓存穿透

    • 数据库中未查询到的数据,可在Redis中设置特殊标识,以避免因缓存中无数据而导致每次请求均达到数据库
  • 缓存层不应抛出异常

    • 缓存应有降级处理方案,缓存出了问题要能回源到数据库进行处理
  • 可以进行适当的缓存预热

    • 对于上线后可能会有大量读请求的应用,在上线之前可预先将数据写入缓存中
  • 读的顺序是先缓存,后数据库;写的顺序是先数据库,后缓存

  • 数据一致性问题

    • 数据源发生变更时可能导致缓存中数据与数据源中数据不一致,应根据实际业务需求来选择适当的缓存更新策略:

      • 主动更新:在数据源发生变更时同步更新缓存数据或将缓存数据过期。一致性高,维护成本较高。

      • 被动删除:根据缓存设置的过期时间有Redis负责数据的过期删除。一致性较低,维护成本较低。

缓存过期算法

  • LRU

    • 淘汰最后使用时间距当前时间较长的数据
  • LFU

    • 淘汰某段时间内的使用频次较低的数据
  • FIFO

    • 淘汰先写入的数据

版权声明

本文为作者原创,版权归作者雪飞鸿所有。 转载必须保留文章的完整性,且在页面明显位置处标明原文链接

如有问题, 请发送邮件和作者联系。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Redis --- 缓存雪崩、击穿、穿透与数据库缓存双一致性
Redis --- 缓存雪崩、击穿、穿透与数据库缓存双一致性
99 0
Redis缓存雪崩、击穿、穿透、到底是什么?
今日目标 能够掌握Redis缓存雪崩概念及解决方案 能够掌握Redis缓存击穿概念及解决方案 能够掌握Redis缓存穿透概念及解决方案
94 0
Redis 缓存雪崩、击穿、穿透
什么是缓存雪崩、击穿、穿透
1168 0
windows下安装和配置Redis
一、下载windows版本的Redis 官网上不提供windows版本的,现在官网没有下载地址,只能在github上下载,官网只提供linux版本的下载    官网下载地址:redis.
761 0
+关注
雪飞鸿
没有语言偏见的程序员,使用过的语言C#/JAVA/Go/Python/JS。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
高并发分布式缓存Redis6.0
立即下载
Redis多线程性能优化
立即下载
Codis 集群演化与 Redis 异步迁移
立即下载