关于Redis缓存预热的思考

摘要:
当系统上线时,相关的缓存数据会提前直接加载到缓存系统中。避免在用户请求时先查询数据库,然后缓存数据的问题。对于问题A,根据不同的业务系统有不同的方法。然而,由于考虑了预热,访问量和数据量将很大,因此考虑并行度+速度限制。

系统上线时,提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题。

这里我考虑2个问题:

A、哪些数据需要预热?

B、如何预热?

关于问题A,根据不同的业务系统有不同的方法。

  1. 可以将已知的热门数据加载到Redis,这种方法适合于基本不变化的数据;
  2. 使用redis-faina(https://github.com/facebookarchive/redis-faina.git)实时监控Redis热key,但是因为redis-faina是通过调用Redis的monitor命令来实现的,可能降低Redis50%左右的性能,所以需要根据实际情况评估;
  3. 在proxy层,对每个请求进行收集上报,弊端就是需要修改proxy的代码,需要考虑开发成本和稳定性问题;
  4. Redis-cli --hotkyes 查询热点key,只适用于缓存淘汰策略是lfu的时候(https://yq.aliyun.com/articles/278922);
  5. TCP消息抓包,例如ELK体系下的packetbeat插件(https://www.elastic.co/guide/en/beats/packetbeat/current/index.html),可以实现对Redis、MySQL等众多主流服务的数据包抓取、分析、报表展示;
  6. 客户端上报,例如nginx+lua将访问量上报到kafka中,然后进行统计

关于如何预热:

找出了热点key之后,再根据自己的业务逻辑,到DB中查询数据填充到Redis中去。不过既然考虑预热,那么访问量、数据量都会很大,因此要考虑并行(提高预热速度)+ 限速(并发量太大的话,DB也处理不过来)。

 参考链接:

https://jzuekk.com/page/redis_6.html 

https://elasticsearch.cn/topic/PacketBeat

免责声明:文章转载自《关于Redis缓存预热的思考》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇用户密码加密存储十问十答,一文说透密码安全存储Asp.Net 高性能框架 SqlSugar.ORM 2.3下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

shiro中用redis做session缓存

shiro中的cache和spring类似,有提供两个接口,使用者使用不同的实现来继承他们:   1.cache-实际进行缓存操作,如使用spring-data-redis操作   2.cacheManager-管理cahe实例,返回cache实例   3.SessionDAO-调用cache进行操作 项目中,我用的securityManager是Defa...

由微博图床挂掉之后想到的

前不久,微博图床挂了,这对于众多使用 Markdown 写技术博客的人简直太残忍了!看来,图片迁移真的是刻不容缓了,在我准备迁移图片的时候,发现了几个平台对图片不同的处理方式,觉得很有意思,所以记录一下。 一、背景知识介绍 1、Markdown 和图床 (1)Markdown Markdown 是一种标记语言,通过简单的标注,可以使文本具有一定格式。例如在...

jemeter批量测试

一、使用badboy录制脚本 1、下载安装badboy(参看:https://blog.csdn.net/qq_36396763/article/details/78803381),成功标志如下: 2、录制脚本(参看:https://www.cnblogs.com/fnng/archive/2011/08/20/2147082.html) 主要步骤为:...

vue 数组push元素 视图没更新

Vue 包含一组观察数组的变异方法,所以它们也将会触发视图更新。这些方法如下: push() pop() shift() unshift() splice() sort() reverse() 问题描述:在tap栏下,给每个tab添加一行数据,默认行就可以一直添加,切换到1号的tab添加时,数组已经添加成功,但是视图就是没有变化,来回切换才手动更新 ...

内存拷贝的优化方法

在复杂的底层网络程序中,内存拷 贝、字符串比较和搜索操作很容易成为性能瓶颈所在。编译器自带的此类函数虽然做了一些通用性的优化工作,但因为在使用指令集方面受到兼容性的约束,远远没 有达到最大限度利用硬件能力的地步。而通过针对特定硬件平台的优化,可以大大提高此类操作的性能。下面我将以P4平台下内存拷贝操作为例,根据AMD提供 的一份优化文档中的例子,简要介绍一...

C# MemoryCache 类[转载]

原网址:http://www.cmono.net/post/read/156 MemoryCache 类是.Net 4.0推出的类库,主要是为了方便在Winform和Wpf中构建缓存框架的 ObjectCache cache = MemoryCache.Default; //得到MemoryCache全局实例 string myData = cach...