确定随机 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. LocalDateTime获取 年月日时分秒和判断日期大小

    环境:java version "13.0.1". 创建一个DateUtils类,提供三个常用方法: String 转换 LocalDateTime的方法. 获取LocalDate ...

  2. NOIp2020复赛前日志

    NOIp2020复赛前日志 组合数和卢卡斯定理 首先写的顺序别搞错了 从\(n\)个不同元素中取出\(m(m≤n)\)个元素的所有组合的个数 \[C_n^m=\binom nm=C(n,m)=\fra ...

  3. SQL Server 2025 预览版新功能点评

    T-SQL 语言增强 正则表达式 (Regex) 支持 功能概述: SQL Server 2025 在 T-SQL 中原生引入了 POSIX 兼容的正则表达式支持,通过内置函数(如 REGEXP_LI ...

  4. 雷池 7.x 主从节点分钟级自动同步 + 手动切换实战教程

    雷池7.x版本新增配置同步功能,可以设置主节点和从节点,可以自动每分钟将主节点的配置同步到从节点,在主节点异常情况下,使用者手动切换流量后,实现从节点马上承接业务流量. 准备环境 ● 检查主从节点机器 ...

  5. 关于vue关闭页面时去除定时器失效问题解决

    1.先去除页面缓存,这个在路由部分 2.

  6. springboot的代理模式示例----面向切面编程

    1.定义切面类  2.编写切面类 import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.databind.ObjectMappe ...

  7. Seo工具使用与流量数据观察实践(中)

    第12章.Seo工具使用与数据观察实践(中) 继上一节的SimilarWeb流量粗分析,我们已经选定了竞品,并且有了一个大致的用户画像和群体,接下来我们就进入细节的关键词和内容的分析. 那么这本节中, ...

  8. 高效存储的秘诀:bitmap 数据结构在标签中的应用

    在当今大数据和信息爆炸的时代,如何有效地管理和查询海量的数据成为了企业和开发者面临的重大挑战.其中,标签系统作为数据管理中的一种重要手段,被广泛应用于用户画像.商品分类.内容推荐等多个场景.然而,随着 ...

  9. 五、Linux系统常用调试工具

    4.2.ps(查看进程状态) 用途:显示系统中运行的进程及其相关信息,如 PID(进程 ID).CPU 使用率.内存占用等. 常见用法: ps aux # 显示所有进程,包含用户.PID.CPU/内存 ...

  10. 使用这个model操作数据库,一爽到底

    在前一篇文章中,我们简要介绍了Vonajs的核心功能.在这里,我们再来看看Vonajs提供的Model能力,可以让我们用简洁.优雅的代码全方位操作数据库,比如,动态分表.软删除.多租户.动态数据源.二 ...