确定随机 TTL 的取值范围的

1、基于业务数据的更新频率

首先要分析业务数据的更新特性。如果数据更新较为频繁,那么 TTL 的取值范围应该相对较小。例如,股票价格数据,其价格可能每分钟甚至每秒都在变动,此时 TTL 可以设置在数秒到几分钟的范围,如 5 - 60 秒。这样可以保证缓存数据能及时反映最新的价格信息。

相反,如果数据更新不频繁,如一些静态的配置信息,可能几个月甚至几年才更新一次,那么 TTL 的取值范围可以设置得很大,例如几天到几个月,如 3 - 30 天。

2、考虑系统的负载能力

分析系统在不同时间段的负载情况。在系统负载较低的时间段,可以适当延长 TTL 的取值范围,减少缓存更新的频率,降低系统的开销。例如,某些业务系统在凌晨时段访问量极低,此时可以将 TTL 范围设置得更宽,如原本正常时段 TTL 是 1 - 5 分钟,凌晨时段可以设置为 5 - 10 分钟。

在系统负载较高的时间段,为了避免大量缓存同时失效导致的缓存雪崩问题,应适当缩小 TTL 的取值范围,使缓存失效时间更加分散。比如在电商大促期间,系统流量剧增,此时 TTL 可以设置在 1 - 3 分钟的较小范围。

3、参考历史数据和性能测试

查看系统的历史访问数据,了解数据的访问规律和缓存失效后对系统性能的影响。根据这些历史数据来调整 TTL 的取值范围。例如,通过分析历史数据发现,当某个缓存项的 TTL 设置为 10 分钟时,在缓存失效后系统的响应时间会明显增加,那么可以适当调整 TTL 范围,如设置为 8 - 12 分钟。

进行性能测试,模拟不同的 TTL 取值范围,观察系统的性能指标,如吞吐量、响应时间、数据库负载等。根据测试结果确定最适合的 TTL 取值范围。

不同业务场景下 TTL 取值范围的变化

1、实时性要求高的业务场景

如金融交易系统、实时监控系统等,对数据的实时性要求极高。在这些场景下,随机 TTL 的取值范围通常较小,一般在几秒到几分钟之间。例如,在高频交易系统中,股票行情数据的 TTL 可能设置在 1 - 5 秒,以确保交易者能够获取到最新的市场信息。

2、实时性要求较低的业务场景

像新闻资讯网站、论坛等,对数据的实时性要求相对较低。这类场景下,随机 TTL 的取值范围可以较大,可能从几分钟到几小时甚至几天。例如,新闻资讯的缓存 TTL 可以设置在 30 分钟 - 2 小时,这样既能减少数据库的访问压力,又能保证用户看到的新闻不会过于陈旧。

3、周期性更新的业务场景

例如某些报表数据,每天凌晨进行数据更新。对于这类数据,随机 TTL 的取值范围可以根据更新周期来确定。可以将 TTL 设置在接近更新周期的时间段,如 20 - 23 小时,这样可以在数据更新前尽量使用缓存,减少数据库查询。

4、流量波动大的业务场景

如电商平台的促销活动期间,流量会出现大幅波动。在活动开始前,可以适当缩小 TTL 的取值范围,如 1 - 5 分钟,以应对可能出现的大量并发请求。活动结束后,流量恢复正常,再将 TTL 范围调整回正常水平,如 5 - 30 分钟。

你是如何确定随机 TTL 的取值范围的?不同业务场景下,这个范围会有怎样的变化?的更多相关文章

  1. 参数化取值策略Random

    1.Random+Each iteration,跟顺序读取的结果唯一不同的就是这里是随机读取,取值是每次迭代取值   2.Random+Each occurrence,随机取值更新方式     3.R ...

  2. jQuery对html元素的取值与赋值实例详解

    jQuery对html元素的取值与赋值实例详解 转载  2015-12-18   作者:欢欢   我要评论 这篇文章主要介绍了jQuery对html元素的取值与赋值,较为详细的分析了jQuery针对常 ...

  3. SQL查询显示行号、随机查询、取指定行数据

    转自:walkingp 1.显示行号 如果数据没有删除的情况下主键与行号是一致的,但在删除某些数据,行号就与主键不一致了,这时需要查询行号就需要用新的方法,在SQL Server2005之前,需要使用 ...

  4. jmeter读取文件进行参数化时随机取值实现

    jmeter能用来做参数化的组件有几个,但是都没有随机取值的功能,遇到随机取值的需求怎么办呢? 突发奇想,可以用函数_StringFromFile来实现,先来介绍下此函数: 此函数位于函数助手中, 函 ...

  5. jmeter参数化随机取值实现

    jmeter能用来做参数化的组件有几个,但是都没有随机取值的功能,遇到随机取值的需求怎么办呢? 突发奇想,可以用函数__CSVRead()来实现: __CSVRead() CSV file to ge ...

  6. 【Java】【5】List随机取值

    //shuffle 打乱顺序 Collections.shuffle(list); //随机抽取1个值 System.out.println(list.get(0)); //随机抽取N个值 Syste ...

  7. 在LoadRunner中从数组类型的参数随机取值的方法

    在LoadRunner中从数组类型的参数随机取值的方法 使用web_reg_save_param做关联后,有时候会有多个匹配值. 为了模仿用户行为随机取一个值为后续transcation所用,可以使用 ...

  8. HashMap随机取值和迭代器取值的对比

    一共四中方法,前两种是迭代器取值,后两种是随机取值,循环了5000万次,时间分别为:迭代器读取的速度大约是随机读取的速度的1.5倍,数据量越大,差距越明显. 另外,插入是读取的100倍左右的时间(这个 ...

  9. python指定概率随机取值 理解np.random.seed()

    python指定概率随机取值参考如下: 下面是利用 np.random.choice()指定概率取样的例子: np.random.seed(0) p = np.array([0.1, 0.0, 0.7 ...

  10. 编写一个js函数,该函数有一个n(数字类型),其返回值是一个数组,该数组内是n个随机且不重复的整数,且整数取值范围是[2,32]

    首先定义个fn用来返回整数的取值范围: function getRand(a,b){ var rand = Math.ceil(Math.random()*(b-a)+a); return rand; ...

随机推荐

  1. 宝塔面板部署vue项目(MyAuthWeb)

    前言 在前文中,部署好后端了,就可以开始部署前端了,本文使用常见的宝塔面板演示 宝塔面板部署vue项目一般有两种方式,一种是build成纯静态,一种是直接部署node项目 本文以TianYe负责维护的 ...

  2. Linux c 运行时获取动态库所在路径

    记录一下如何在Linux环境下运行时获取动态库路径. 只讨论Linux amd64和arm64环境,因为使用的办法都是平台相关的不具备可移植性. 准备 一般来说动态库并不需要关心自己所在的文件系统上的 ...

  3. 使用Logback实现不同微服务输出各自的日志文件

    找到logback-spring.xml配置文件,在里面使用如下配置 <!--定义策略日志文件的存储地址--><property name="logStrategy.pat ...

  4. LinkedList链表

    LinkedList 他是继承的List 双向链表 每当我们new一个linklist对象的时候 LinkedList linkedList = new LinkedList(); 他会先创建一个Li ...

  5. kards卡组推荐——苏美隐蔽

    声明:此卡组抗快能力极差,害怕炮兵和小飞机为中后期 隐蔽核心思路: 在第一回合,尽量找杜斯团,找不到如果对方有单位,可以打一个镰刀 第二回合,①有杜斯团:打出隐蔽单位,按隐蔽顺序(附1)出,如果只有1 ...

  6. ArcObject SDK 015 出图

    1.核心出图代码 出图主要是靠IExport接口,继承该接口的类如下图所示. 出不同格式的图,实例化不同的类即可.例如导出jpg格式的图片的代码如下. private void Export(stri ...

  7. 商品中心—11.商品B端搜索系统的实现文档

    大纲 1.商品数据管理以及binlog监听 2.基于ES的商品B端搜索系统架构设计 3.商品B端搜索系统实现步骤介绍 4.步骤一:ES生产集群部署 5.步骤二:IK分词器改造和部署 6.步骤三:为商品 ...

  8. Selenium Grid的原理,配置和WEB UI分布式测试

    selenium grid 用于webui automation的分布式测试,  一般常规情况下,测试不建议用多线程,多线程会有很多问题,比如并发,锁机制等,什么时候线程该动什么时候停,考虑并发协同机 ...

  9. FastAPI WebSocket:你的双向通信通道为何如此丝滑?

    扫描二维码 关注或者微信搜一搜:编程智域 前端至全栈交流与成长 发现1000+提升效率与开发的AI工具和实用程序:https://tools.cmdragon.cn/ # 示例代码运行环境 # Pyt ...

  10. 全球首位 AI 程序员 Devin 诞生了,对于程序员的影响到底多大?

    当我第一次看到Devin的演示视频时,我的手机差点掉在地上. 不是因为兴奋,而是因为一种前所未有的恐惧和震撼. 作为一个在程序员这条路上摸爬滚打了快10年的老司机,我见证了太多技术的更迭和变革.从最初 ...