基本原则

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

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

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

  • 缓存key应具备可读性

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

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

  • 选择合适的数据结构

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

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

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

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

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

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

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

  • 数据一致性问题

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

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

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

缓存过期算法

  • LRU

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

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

    • 淘汰先写入的数据

版权声明

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

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

Redis 缓存设计原则相关推荐

  1. Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理

    基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客  QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...

  2. python文本框与数据库的关联_Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理...

    基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3. ...

  3. redis缓存设计要点随谈

    在高并发系统中,缓存是必不可少的一部分.没有缓存对系统的加速和阻挡大量的请求直接落到系统的数据库,系统是很难撑住高并发的冲击.所以缓存设计是系统很关键的一环. 1.缓存更新 缓存的数据一般都是有有效期 ...

  4. Redis缓存设计(key、value设计)与性能优化(缓存击穿、缓存穿透、缓存雪崩)

    一.多级缓存架构 二.缓存设计 1.缓存穿透 缓存穿透是指查询一个根本不存在的数据, 缓存层和存储层都不会命中, 通常出于容错的考虑, 如果从存储层查不到数据则不写入缓存层. 缓存穿透将导致不存在的数 ...

  5. 17 redis -key设计原则

    书签系统 create table book ( bookid int, title char(20) )engine myisam charset utf8;insert into book val ...

  6. Redis缓存设计原理及实战

    缓存是什么? 一个系统中的不同层之间的访问速度不一样,所以我们才需要缓存,这样就可以把一些需要频繁访问的数据放在缓存中,以加快它们的访问速度. 为了让你能更好地理解,我以计算机系统为例,来解释一下.下 ...

  7. 点赞模块设计:Redis缓存 + 定时写入数据库实现高性能点赞功能

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:solocoder juejin.im/post/5bdc2 ...

  8. 点赞模块设计 - Redis缓存 + 定时写入数据库实现高性能点赞功能

    源码地址:github.com/cachecats/c- 点赞是作为整个系统的一个小模块,代码在 user-service 用户服务下. 本文基于 SpringCloud, 用户发起点赞.取消点赞后先 ...

  9. Redis缓存策略设计及常见问题

    Redis缓存设计及常见问题 缓存能够有效地加速应用的读写速度,同时也可以降低后端负载,对日常应用的开发至关重要.下面会介绍缓存使用技巧和设计方案,包含如下内容:缓存的收益和成本分析.缓存更新策略的选 ...

最新文章

  1. Cisco交换机密码配置整理
  2. ML之MaL: 流形学习MaL的概念认知、算法分类、案例应用、代码实现之详细攻略
  3. 邓侃:深度强化学习“深”在哪里?
  4. Windows终端(WT)添加conda命令行
  5. 精英讲师培训笔记01-提升口才的三个心法
  6. MySQL中的join以及on条件的用法
  7. Json转换为txt
  8. table表格及属性
  9. Cadence 简易使用教程
  10. 光纤中的多种光学模式芯径_光纤的结构是什么?种类有哪些?该怎么选择?
  11. item_password-获得1688平台淘口令真实url,1688短链接搜索商品接口接入解决方案
  12. 企业IT管理岗的首选认证:ITIL®4 Foundation
  13. C语言开发单片机为什么大多数都采用全局变量的形式?
  14. 会声会影2022版本软件下载安装使用激活教程
  15. python中三引号是什么意思_python中三个单引号是什么意思
  16. UE4 Advance Locomotion V4 学习
  17. FusionCharts Demo
  18. struct结构体实际占用字节
  19. 天津大学计算机2017年录取分数线,2017年天津大学美术专业录取分数线
  20. 计算机火车票购票系统实训报告,软件工程实验火车票自动售票系统分析报告报告材料.docx...

热门文章

  1. 程序员的自我修养--链接、装载与库笔记:目标文件里有什么
  2. 循环神经网络(RNN)简介
  3. 【Qt中文手册】QObject
  4. 【linux】Valgrind工具集详解(一):简介
  5. 你,保持童心;我,帮你保持童颜
  6. oracle里面子判断,在过程中添加子进程,在子过程中判断
  7. C++为什么空格无法输出_数据的输入输出举例
  8. 【数据库】兴唐第二十七节课之jdbc的使用
  9. HBase常用API操作
  10. ios NSLayoutConstraint