Redis 缓存设计原则
基本原则
只应将热数据放到缓存中
所有缓存信息都应设置过期时间
缓存过期时间应当分散以避免集中过期
缓存key应具备可读性
应避免不同业务出现同名缓存key
可对key进行适当的缩写以节省内存空间
选择合适的数据结构
确保写入缓存中的数据是完整且正确的
避免使用耗时较长的操作命令,如:keys *
- Redis默认配置中操作耗时超过10ms即视为慢查询
一个key对应的数据不应过大
- 对于string类型,一个key对应的value大小应控制在10K以内,1K左右更优
- hash类型,不应超过5000行
避免缓存穿透
- 数据库中未查询到的数据,可在Redis中设置特殊标识,以避免因缓存中无数据而导致每次请求均达到数据库
缓存层不应抛出异常
- 缓存应有降级处理方案,缓存出了问题要能回源到数据库进行处理
可以进行适当的缓存预热
- 对于上线后可能会有大量读请求的应用,在上线之前可预先将数据写入缓存中
读的顺序是先缓存,后数据库;写的顺序是先数据库,后缓存
数据一致性问题
数据源发生变更时可能导致缓存中数据与数据源中数据不一致,应根据实际业务需求来选择适当的缓存更新策略:
主动更新:在数据源发生变更时同步更新缓存数据或将缓存数据过期。一致性高,维护成本较高。
被动删除:根据缓存设置的过期时间有Redis负责数据的过期删除。一致性较低,维护成本较低。
缓存过期算法
LRU
- 淘汰最后使用时间距当前时间较长的数据
LFU
- 淘汰某段时间内的使用频次较低的数据
FIFO
- 淘汰先写入的数据
版权声明
本文为作者原创,版权归作者雪飞鸿所有。 转载必须保留文章的完整性,且在页面明显位置处标明原文链接。
如有问题, 请发送邮件和作者联系。
Redis 缓存设计原则相关推荐
- Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理
基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...
- python文本框与数据库的关联_Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理...
基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3. ...
- redis缓存设计要点随谈
在高并发系统中,缓存是必不可少的一部分.没有缓存对系统的加速和阻挡大量的请求直接落到系统的数据库,系统是很难撑住高并发的冲击.所以缓存设计是系统很关键的一环. 1.缓存更新 缓存的数据一般都是有有效期 ...
- Redis缓存设计(key、value设计)与性能优化(缓存击穿、缓存穿透、缓存雪崩)
一.多级缓存架构 二.缓存设计 1.缓存穿透 缓存穿透是指查询一个根本不存在的数据, 缓存层和存储层都不会命中, 通常出于容错的考虑, 如果从存储层查不到数据则不写入缓存层. 缓存穿透将导致不存在的数 ...
- 17 redis -key设计原则
书签系统 create table book ( bookid int, title char(20) )engine myisam charset utf8;insert into book val ...
- Redis缓存设计原理及实战
缓存是什么? 一个系统中的不同层之间的访问速度不一样,所以我们才需要缓存,这样就可以把一些需要频繁访问的数据放在缓存中,以加快它们的访问速度. 为了让你能更好地理解,我以计算机系统为例,来解释一下.下 ...
- 点赞模块设计:Redis缓存 + 定时写入数据库实现高性能点赞功能
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:solocoder juejin.im/post/5bdc2 ...
- 点赞模块设计 - Redis缓存 + 定时写入数据库实现高性能点赞功能
源码地址:github.com/cachecats/c- 点赞是作为整个系统的一个小模块,代码在 user-service 用户服务下. 本文基于 SpringCloud, 用户发起点赞.取消点赞后先 ...
- Redis缓存策略设计及常见问题
Redis缓存设计及常见问题 缓存能够有效地加速应用的读写速度,同时也可以降低后端负载,对日常应用的开发至关重要.下面会介绍缓存使用技巧和设计方案,包含如下内容:缓存的收益和成本分析.缓存更新策略的选 ...
最新文章
- Cisco交换机密码配置整理
- ML之MaL: 流形学习MaL的概念认知、算法分类、案例应用、代码实现之详细攻略
- 邓侃:深度强化学习“深”在哪里?
- Windows终端(WT)添加conda命令行
- 精英讲师培训笔记01-提升口才的三个心法
- MySQL中的join以及on条件的用法
- Json转换为txt
- table表格及属性
- Cadence 简易使用教程
- 光纤中的多种光学模式芯径_光纤的结构是什么?种类有哪些?该怎么选择?
- item_password-获得1688平台淘口令真实url,1688短链接搜索商品接口接入解决方案
- 企业IT管理岗的首选认证:ITIL®4 Foundation
- C语言开发单片机为什么大多数都采用全局变量的形式?
- 会声会影2022版本软件下载安装使用激活教程
- python中三引号是什么意思_python中三个单引号是什么意思
- UE4 Advance Locomotion V4 学习
- FusionCharts Demo
- struct结构体实际占用字节
- 天津大学计算机2017年录取分数线,2017年天津大学美术专业录取分数线
- 计算机火车票购票系统实训报告,软件工程实验火车票自动售票系统分析报告报告材料.docx...