关于Redis缓存预热的思考
系统上线时,提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题。
这里我考虑2个问题:
A、哪些数据需要预热?
B、如何预热?
关于问题A,根据不同的业务系统有不同的方法。
- 可以将已知的热门数据加载到Redis,这种方法适合于基本不变化的数据;
- 使用redis-faina(https://github.com/facebookarchive/redis-faina.git)实时监控Redis热key,但是因为redis-faina是通过调用Redis的monitor命令来实现的,可能降低Redis50%左右的性能,所以需要根据实际情况评估;
- 在proxy层,对每个请求进行收集上报,弊端就是需要修改proxy的代码,需要考虑开发成本和稳定性问题;
- Redis-cli --hotkyes 查询热点key,只适用于缓存淘汰策略是lfu的时候(https://yq.aliyun.com/articles/278922);
- TCP消息抓包,例如ELK体系下的packetbeat插件(https://www.elastic.co/guide/en/beats/packetbeat/current/index.html),可以实现对Redis、MySQL等众多主流服务的数据包抓取、分析、报表展示;
- 客户端上报,例如nginx+lua将访问量上报到kafka中,然后进行统计
关于如何预热:
找出了热点key之后,再根据自己的业务逻辑,到DB中查询数据填充到Redis中去。不过既然考虑预热,那么访问量、数据量都会很大,因此要考虑并行(提高预热速度)+ 限速(并发量太大的话,DB也处理不过来)。
参考链接:
https://jzuekk.com/page/redis_6.html
https://elasticsearch.cn/topic/PacketBeat
关于Redis缓存预热的思考的更多相关文章
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 实现缓存预热
因为大型应用系统可能有几十个子系统,为了减轻数据库频繁读写压力.提高系统的运行速度.反映速度,大型应用系统都需要采用缓存机制提高运行效率.Redis 缓存预热实现将来大家很多基础数据都可以缓存获取,不 ...
- 使用redis缓存数据需要注意的问题以及个人的一些思考和理解
之前我有博客也尝试过使用redis,在实际的项目中确实作用挺大的.至少对于数据的频繁读取来说都起着至关重要的作用. 但是随着技术的学习,慢慢的业务要复杂起来,以后也许会用到redis集群,所以在这边查 ...
- Redis系列十:缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级
一.缓存雪崩 缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而 ...
- Redis缓存雪崩、缓存穿透、缓存击穿、缓存降级、缓存预热、缓存更新
Redis缓存能够有效地加速应用的读写速度,就DB来说,Redis成绩已经很惊人了,且不说memcachedb和Tokyo Cabinet之流,就说原版的memcached,速度似乎也只能达到这个级别 ...
- Redis之缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级
目录 Redis之缓存雪崩.缓存穿透.缓存预热.缓存更新.缓存降级 1.缓存雪崩 2.缓存穿透 3.缓存预热 4.缓存更新 5.缓存降级 Redis之缓存雪崩.缓存穿透.缓存预热.缓存更新.缓存降级 ...
- 关于redis缓存数据库的一些思考
今晚无聊,躺在床上,在刷技术文章时,看见了一篇关于redis缓存的文章 写的蛮好,这也就引起了我对于redis思考! 不如往深了说 引起了我对于追求探索技术本质的一些思考 平时在网上刷到很多关于red ...
- redis教程(三)-----redis缓存雪崩、缓存穿透、缓存预热
缓存雪崩 概念 缓存雪崩是由于原有缓存失效(过期),新缓存未到期间.所有请求都去查询数据库,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机.从而形成一系列连锁反应,造成整个系统崩溃. 解决 ...
- redis缓存设计
1:缓存技术和框架的重要性 互联网的一些高并发,高性能的项目和系统中,缓存技术是起着功不可没的作用.缓存不仅仅是key-value的简单存取,它在具体的业务场景中,还是很复杂的,需要很强的架构设计能力 ...
- Redis缓存穿透、击穿、雪崩,数据库与缓存一致性
Redis作为高性能非关系型(NoSQL)的键值对数据库,受到了广大用户的喜爱和使用,大家在项目中都用到了Redis来做数据缓存,但有些问题我们在使用中不得不考虑,其中典型的问题就是:缓存穿透.缓存雪 ...
随机推荐
- 微服务的多数据源配置: step 1
spring boot + mybatis: 实现的功能点: 多数据源 jdbc: spring.datasource.test1.url = jdbc:mysql://localhost:3306/ ...
- Mixing .NET
- node js 爬啊爬 记录 向 Scott 致敬 不要问为什么
更优雅的异步编程: 定向爬取 :http://www.010xww.com/list/travel.htm 上代码: 打印一下http . 嗯 http 模块加载没问题 获取一个 文章列表: 终于把人 ...
- AVL练习题——宠物收养所
题目描述 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物.每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特殊的公式,得出 ...
- git使用的常见命令汇总
git的简单介绍 git是分布式版本控制工具 git 的基本操作指令 git init 初始化git仓库 git add 文件名 git add . 把文件 添加到 git 暂存区中 git stat ...
- JSTL (标准标签库)
JSTL(标准标签库) 作用: Web程序员能够利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入Java程序(Scripting)的做法,以提高程序的阅读性.维护性和方便性. 使用方法:J ...
- JavaScript面向对象:创建对象
1.初级创建对象 var oCar=new Object; oCar.color='red'; oCar.door=4; oCar.map=3; oCar.showColor=function () ...
- Java8新特性一点通 | 回顾文件操作和watchService文件变更监视操作
文件操作 WatchService 文件操作 今天重温了一些文件操作: - Files.list() 遍历文件和目录 //List all files and sub-directories usin ...
- 快速理解 VUEX 原理
1. vuex 的作用: vuex其实是集中的数据管理仓库,相当于数据库mongoDB,MySQL等,任何组件都可以存取仓库中的数据. 2. vuex 流程和 vue 类比: 我们看一下一个简单的vu ...
- CCF_ 201403-4_无线网络
分散点的bfs,先建立一个互相是否可达的二维数组,vis[i][j]代表到第i个点,走了j步的状态,注意判断新增路由器数量是否超过K. #include<cstdio> #include& ...