当前位置: 首页 > news >正文 制作网站代码吗广州天河区租房 news 2025/10/29 17:52:51 制作网站代码吗,广州天河区租房,石家庄网站建设外包公司排名,建立一个网站需要花多少钱文章目录 前言一、内存管理1、Redis过期策略1.1、惰性过期1.2、定期过期清理频率配置清理流程 2、Redis淘汰策略策略流程算法分析1、LRU2、LFU 二、持久化1、RDB2、AOF 前言 redis 内存管理与持久化 一、内存管理 redis我们的数据都是放在内存里面的#xff0c;但是内存是有… 文章目录 前言一、内存管理1、Redis过期策略1.1、惰性过期1.2、定期过期清理频率配置清理流程 2、Redis淘汰策略策略流程算法分析1、LRU2、LFU 二、持久化1、RDB2、AOF 前言 redis 内存管理与持久化 一、内存管理 redis我们的数据都是放在内存里面的但是内存是有大小的如果一直将数据放入会导致内存溢出这时候需要进行数据清理。 内存的大小由一个配置决定 maxmemory 100mb如果配置是0那么默认是电脑的内存如果是32bit 隐式大小为3G。 数据清理通过两张方式来实现。1、过期策略2、淘汰策略 1、Redis过期策略 过期策略又分为惰性过期和定期过期 1.1、惰性过期 在Redis里面就是每次在访问操作Key的时候判断这个Key是不是过期了如果过期了就删除。 该策略就可以最大化地节省CPU资源只有访问的时候才去使用cpu判断一下, 但是这样却对内存非常不友好。如果没有再次访问本来该key需要过期删除结果一直堆积在内存里面造成内存泄露。 是不是可以定期去扫描然后判断是否过期删除答案是肯定的redis也制定了另一种方案定期过期 1.2、定期过期 清理频率配置 定期就需要去定义这个循环周期比如五分钟一次这个参数由redis.conf中的hz配置来决定它的取值范围是 1 到 500。 hz 参数定义了 Redis 每秒钟执行的事件循环次数这包括检查和删除过期键的任务。默认情况下hz 设置为 10意味着每秒进行 10 次过期键的检查。 要修改这个值你可以编辑 Redis 配置文件 (redis.conf) 或者在运行时通过 CONFIG SET 命令动态修改 在配置文件中设置 打开你的 redis.conf 文件并找到 hz 参数将其值更改为所需的频率。例如如果你想将频率提高到每秒20次则设置如下 hz 20动态配置 如果你不想重启 Redis 服务也可以使用 CONFIG SET 命令在线更改此参数。例如 CONFIG SET hz 20需要注意的是虽然增加 hz 的值可以让 Redis 更快地处理同时到期的许多键并且更加精确地处理超时但这会占用更多的 CPU 资源。 因此通常不建议将 hz 设置得过高超过 100除非是在对请求延时要求非常低的情况下。 从 Redis 6.2 开始server.hz 的实际生效值可能会根据客户端连接的数量动态调整以确保即使在高负载下也能保持良好的性能。这意味着配置文件中的 hz 只是一个初始值而实际运行时的刷新频率是动态变化的。 清理流程 serverCron方法定时去执行清理执行频率根据redis.conf中的hz配置的值执行清理的时候不是去扫描所有的key而是去扫描所有设置了过期时间的keyredisDb.expires如果每次去把所有过期的key都拿过来那么假如过期的key很多就会很慢所以也不是一次性拿取所有的key根据hash桶的维度去扫描key扫到20(可配)个key为止。假如第一个桶是15个key 没有满足20继续扫描第二个桶第二个桶20个key由于是以hash桶的维度扫描的所以第二个扫到了就会全扫总共扫描35个key扫描出来的过期的key进行删除如果取了400个空桶或者扫描的删除比例跟扫描的总数超过10%继续执行4、5步。也不能无限的循环循环16次后回去检测时间超过指定时间会跳出。 流程图 2、Redis淘汰策略 策略 由于Redis内存是有大小的并且里面的数据都没有过期这样一直放入数据使得内存满了的时候Redis就不能放入新的数据导致不可用这是我们不愿意看到的。 所以我们需要使用一些策略来解决这个问题来保证可用性 官网提供了8种不同的策略 noeviction默认 不进行任何淘汰。当内存使用超过限制后所有写入操作将返回错误信息而读取操作仍然可以正常执行。volatile-lru 使用 LRU (Least Recently Used) 算法从设置了过期时间的键中淘汰最久未使用的键。allkeys-lru 使用 LRU 算法从所有键中淘汰最久未使用的键包括那些没有设置过期时间的键。volatile-lfu 使用 LFU (Least Frequently Used) 算法从设置了过期时间的键中淘汰最少使用的键。这个策略是在 Redis 4.0 版本引入的。allkeys-lfu 使用 LFU 算法从所有键中淘汰最少使用的键。同样是在 Redis 4.0 中新增的功能。volatile-random 随机地从设置了过期时间的键中挑选一个键进行淘汰。allkeys-random 随机地从所有键中挑选一个键进行淘汰。volatile-ttl 淘汰那些设置了过期时间且剩余生存时间最短的键即优先删除即将过期的键。 我们可以在config中配置maxmemory-policy来指定相关的淘汰策略 maxmemory-policy noeviction //默认不淘汰数据能读不能写流程 redis有个淘汰池默认大小是16并且里面的数据是末尾淘汰制。每次指令操作的时候会判断当前内存是否满足指令所需要的内存如果当前内存不能满足会从淘汰池中的尾部拿取一个最适合淘汰的数据 会取样配置 maxmemory-samples从Redis中获取随机获取到取样的数据解决一次性读取所有的数据慢的问题在取样的数据中根据淘汰算法找到最适合淘汰的数据将最合适的那个数据跟淘汰池中的数据比较是否比淘汰池中的更适合淘汰如果更适合放入淘汰池按照适合的程度进行排序最适合淘汰的放入尾部 将需要淘汰的数据从Redis删除并且从淘汰池移除。 流程图 算法分析 1、LRU LRULeast Recently Used 翻译过来是最久未使用根据时间轴来走仍很久没用的数据。只要最近有用过我就默认是有效的。 根据使用时间从近到远越远的越容易淘汰 1、实现原理 首先LRU是根据这个对象的访问操作时间来进行淘汰的那我们需要知道这个对象最后的操作访问时间。知道了对象的最后操作访问时间后我们只需要跟当前的系统时间来进行对比就能计算出对象已经多久没访问了 2、时间计算 它使用一个24位的时钟计数器每秒递增一次。这个计数器提供的分辨率足以满足大多数应用场景的需求同时大大减少了存储时间戳所需的内存空间。每当一个键被访问时就会更新它的 LRU 字段为当前的lruclock值。当时间超过24位秒大概是194天lruclock又会从0开始。redisObject.lru则是记录当前时间。 如果redisObject.lru lruclock直接通过 lruclock-redisObject.lru 得到这个对象多久没访问如果redisObject.lru lruclock,通过 lruclock24bit的最大值-redisObject.lru得到这个对象多久没访问 轮询 这里有个轮询的概念它如果超过24位又会从0开始。 以时钟为例 昨天10点访问的记录现在是12点了请问过了多久12 - 10 2h 昨天10点访问的记录现在是5点了请问过了多久24- 10 5 19h这里的现在可能是今天也可能是明天就是轮询了多天那该如何计算 对于redis而言伪lru算法本来就不是非常精确的。所以redis只考虑1次轮询的情况对于多次轮询也只按1次轮询处理。 也就是说现在只当成今天处理不会当成明天或者后天等。 3、知识点 系统时间戳记录在全局变量中每100ms更新一次。当函数查询key调⽤lookupKey中更新数据的Iru热度值时就不⽤每次调⽤系统函数time可以提⾼执⾏效率。 4、流程图 2、LFU LFU,LeastFrequentlyUsed最不常⽤按照使⽤频率删除4.0版本新增。 它的衡量标准就是次数次数越少的越容易被淘汰。每次操作访问一次就1; 淘汰的时候直接去比较这个次数次数越少的越容易淘汰。 1、redisObject.lru的前16bit表示时间后8bit表示这个对象的访问频率。 前16bit代表的是这个对象最后访问时间的分单位。通过这个值能够得到这个对象多少分钟没访问。结合lfu-decay-time来控制对象的访问频率。这样能有效控制很久没访问的数据一直保持热点。 lfu-decay-time 1 // 衰减因子多少分钟没访问就减少一次2、8bit最大值是255用后8bit表示访问次数是不够的。redis在这里做了一些处理让数据达到255很难。方案如下 访问次数最大只能255如果到了255不往上加。实际到达255的几率不是很高。可以支撑很大很大的数据量。访问次数属于随机添加添加的几率根据基数值LFU_INIT_VAL、已有的counter值、配置server.lfu_log_factor相关counter值越大添加的几率越小lfu-log-factor配置的值越大添加的几率越小。 假设基准值是100访问次数 100则每次访问则1访问次数 100 counter 255要通过公式计算越往上增长因子越低。会让255很难达到从而8位就能满足需求了。 3、官方的压测数据如下 二、持久化 Redis 作为一个内存数据库其主要特性之一是高性能的数据操作而这种高性能得益于数据存储在内存中。在某些情况下如服务器重启、操作系统崩溃、电源故障等内存中的数据会丢失。因此Redis 需要持久化来保证数据的安全性和可恢复性。 redis持久化方式 RDBAOFRDB AOF 1、RDB 工作原理 RDB 是通过创建数据集的时间点快照snapshot来实现的持久化机制。Redis 会将内存中的数据在特定时间点保存到磁盘上的一个二进制文件默认名为 dump.rdb中。 文件配置 磁盘文件的路径和文件名都是可配置的 // 生成的快照文件名 dbfilename dump.rdb // 快照文件保存的路径 dir ./// 开启数据压缩默认开启如果关闭会导致.rdb文件变得很大 rdbcompression yes自动触发通过配置文件中的 save 选项来指定自动触发 RDB 快照的条件 save 900 1 # 900秒(15分钟)内有1个键被修改就保存快照 save 300 10 # 300秒(5分钟)内有10个键被修改就保存快照 save 60 10000 # 60秒(1分钟)内有10000个键被修改就保存快照以上的配置在 redis.conf 完成 手动触发Redis 提供了一些命令可以手动触发 RDB 快照 BGSAVE 命令这个命令会在后台进行保存操作Redis 会继续处理来自客户端的请求。SAVE 命令与 BGSAVE 不同SAVE 命令在执行期间会阻塞 Redis 服务器直到快照完成。 优点 生成的rdb文件是一个非常紧凑的文件所以很适合远程传输、备份和灾难恢复。数据恢复速度快因为文件格式非常紧凑。对读取性能没有影响适合用于读取密集型场景。 缺点 安全性很低可能会有数据丢失。假如每5分钟备份一次断电宕机后会有5分钟的数据丢失。经常fork子进程所以比较耗CPU对CPU不是很友好对CPU要求高。 2、AOF 工作原理 AOF是通过将每一个写命令记录到日志文件默认名为appendonly.aof中实现的。Redis 在处理写命令时会将这些命令追加到日志文件的末尾。在恢复数据时Redis 会通过重新执行这些命令来重建数据集。 配置 通过配置文件中的 appendonly 和 appendfsync 选项来启用并配置 AOF 例如 appendonly yes # 启用AOF持久化 appendfsync everysec # 每秒持久化一次 # 其他选项可以是 # appendfsync always # 每次写操作后持久化最安全但对性能影响最大 # appendfsync no # 由操作系统决定何时持久化性能最好但最不安全 AOF有个问题随着时间的推移写入的命令越来越多相应的AOF的日志文件越来越大文件中冗余内容会越来越多。如果redis再重启或做数据恢复加载数据会很慢。 处理这个问题则需要重写AOF AOF 重写机制的工作原理 Fork 子进程 Redis 会 fork 一个子进程这个子进程会创建一个新的 AOF 文件。子进程将根据当前内存中的数据来生成这个新的 AOF 文件而不是直接复制现有的 AOF 文件。 命令压缩 新的 AOF 文件会包含相同的数据但是会优化和压缩命令。例如多个对同一个 key 的写操作可能会被压缩为一个 SET 或者其他合并操作。 追加命令 在子进程创建新 AOF 文件的过程中主进程仍然在接受新写操作。将这些新的写操作记录到一个内存缓冲区中。当子进程完成新 AOF 文件的创建后主进程将内存缓冲区中的新写操作追加到新的 AOF 文件。 文件替换 最后 Redis 会将旧的 AOF 文件替换成新的 AOF 文件。 触发条件和策略 AOF 重写可以通过自动触发和手动触发两种方式进行 自动触发 Redis 可以根据配置的条件自动触发 AOF 重写。以下是与自动触发相关的配置选项 # 设置当前 AOF 文件大小相对于上一次重写后的大小增加的百分比当超过这个百分比时触发AOF重写。 # 比如设置为 100表示当前 AOF 文件大小是上次重写后的两倍时触发重写。 auto-aof-rewrite-percentage 100# 设置触发 AOF 重写的最小 AOF 文件大小。 # 比如设置为 64mb表示 AOF 文件至少达到 64MB 时才允许触发重写。 auto-aof-rewrite-min-size 64mb手动触发 管理员可以通过 Redis 命令手动触发 AOF 重写 BGREWRITEAOF 命令: BGREWRITEAOF该命令在后台重写 AOF 文件不会阻塞 Redis 的正常操作 AOF优缺点 优点 提供更高的数据安全性因为写命令几乎实时持久化数据丢失风险小。AOF文件是可读的可以通过文本编辑器阅读和编辑日志文件中的命令。可以配置不同的频率来记录命令使得持久化策略更灵活。 缺点 AOF日志文件通常比RDB快照文件大。随着时间推移日志文件会不断增长需要定期重写rewrite日志文件以缩减其大小。数据恢复速度较慢因为需要一条一条重放写操作。 3、AOF RDB Redis 还支持同时开启两种持久化机制以结合两者的优点。通常会选择 RDB 作为定期的全量备份方案而 AOF 作为增量日志记录确保在最后一次 RDB 快照之后的数据变更也能够持久化。 同时开启配置 # 启用 AOF 持久化 appendonly yes appendfsync everysec# RDB 持久化配置 save 900 1 save 300 10 save 60 10000 这种混合配置可以在确保较好性能的同时最大限度减少数据丢失的风险。 文章转载自: http://www.morning.jzlkq.cn.gov.cn.jzlkq.cn http://www.morning.nnwnl.cn.gov.cn.nnwnl.cn http://www.morning.qcmhs.cn.gov.cn.qcmhs.cn http://www.morning.brhxd.cn.gov.cn.brhxd.cn http://www.morning.wlggr.cn.gov.cn.wlggr.cn http://www.morning.ymhzd.cn.gov.cn.ymhzd.cn http://www.morning.mxdhy.cn.gov.cn.mxdhy.cn http://www.morning.tfzjl.cn.gov.cn.tfzjl.cn http://www.morning.yggdq.cn.gov.cn.yggdq.cn http://www.morning.piekr.com.gov.cn.piekr.com http://www.morning.mltsc.cn.gov.cn.mltsc.cn http://www.morning.gcrlb.cn.gov.cn.gcrlb.cn http://www.morning.xbdd.cn.gov.cn.xbdd.cn http://www.morning.wffxr.cn.gov.cn.wffxr.cn http://www.morning.hpnhl.cn.gov.cn.hpnhl.cn http://www.morning.srnhk.cn.gov.cn.srnhk.cn http://www.morning.ftgwj.cn.gov.cn.ftgwj.cn http://www.morning.zsthg.cn.gov.cn.zsthg.cn http://www.morning.bwygy.cn.gov.cn.bwygy.cn http://www.morning.ksggl.cn.gov.cn.ksggl.cn http://www.morning.qblcm.cn.gov.cn.qblcm.cn http://www.morning.jrhcp.cn.gov.cn.jrhcp.cn http://www.morning.wgbmj.cn.gov.cn.wgbmj.cn http://www.morning.bswnf.cn.gov.cn.bswnf.cn http://www.morning.cyjjp.cn.gov.cn.cyjjp.cn http://www.morning.flxgx.cn.gov.cn.flxgx.cn http://www.morning.jcbmm.cn.gov.cn.jcbmm.cn http://www.morning.gjzwj.cn.gov.cn.gjzwj.cn http://www.morning.wqfj.cn.gov.cn.wqfj.cn http://www.morning.zymgs.cn.gov.cn.zymgs.cn http://www.morning.zkqwk.cn.gov.cn.zkqwk.cn http://www.morning.kmqlf.cn.gov.cn.kmqlf.cn http://www.morning.rsqpc.cn.gov.cn.rsqpc.cn http://www.morning.wtdyq.cn.gov.cn.wtdyq.cn http://www.morning.hqzmz.cn.gov.cn.hqzmz.cn http://www.morning.qszyd.cn.gov.cn.qszyd.cn http://www.morning.byjwl.cn.gov.cn.byjwl.cn http://www.morning.mmqng.cn.gov.cn.mmqng.cn http://www.morning.shangwenchao4.cn.gov.cn.shangwenchao4.cn http://www.morning.grpbt.cn.gov.cn.grpbt.cn http://www.morning.mxftp.com.gov.cn.mxftp.com http://www.morning.thwcg.cn.gov.cn.thwcg.cn http://www.morning.fpqq.cn.gov.cn.fpqq.cn http://www.morning.cgmzt.cn.gov.cn.cgmzt.cn http://www.morning.wptrm.cn.gov.cn.wptrm.cn http://www.morning.aowuu.com.gov.cn.aowuu.com http://www.morning.nqnqz.cn.gov.cn.nqnqz.cn http://www.morning.dfckx.cn.gov.cn.dfckx.cn http://www.morning.rnlx.cn.gov.cn.rnlx.cn http://www.morning.nmngq.cn.gov.cn.nmngq.cn http://www.morning.krdb.cn.gov.cn.krdb.cn http://www.morning.nkbfc.cn.gov.cn.nkbfc.cn http://www.morning.qcygd.cn.gov.cn.qcygd.cn http://www.morning.xlztn.cn.gov.cn.xlztn.cn http://www.morning.rqxtb.cn.gov.cn.rqxtb.cn http://www.morning.rcntx.cn.gov.cn.rcntx.cn http://www.morning.bpp999.com.gov.cn.bpp999.com http://www.morning.thzwj.cn.gov.cn.thzwj.cn http://www.morning.fjshyc.com.gov.cn.fjshyc.com http://www.morning.znrgq.cn.gov.cn.znrgq.cn http://www.morning.hdrrk.cn.gov.cn.hdrrk.cn http://www.morning.bpmnq.cn.gov.cn.bpmnq.cn http://www.morning.trplf.cn.gov.cn.trplf.cn http://www.morning.gmmxh.cn.gov.cn.gmmxh.cn http://www.morning.ykrkq.cn.gov.cn.ykrkq.cn http://www.morning.kfmnf.cn.gov.cn.kfmnf.cn http://www.morning.dqpd.cn.gov.cn.dqpd.cn http://www.morning.yhljc.cn.gov.cn.yhljc.cn http://www.morning.fdzzh.cn.gov.cn.fdzzh.cn http://www.morning.dnwlb.cn.gov.cn.dnwlb.cn http://www.morning.mtktn.cn.gov.cn.mtktn.cn http://www.morning.smggx.cn.gov.cn.smggx.cn http://www.morning.zwndt.cn.gov.cn.zwndt.cn http://www.morning.ysjjr.cn.gov.cn.ysjjr.cn http://www.morning.wjhnx.cn.gov.cn.wjhnx.cn http://www.morning.syfty.cn.gov.cn.syfty.cn http://www.morning.tstkr.cn.gov.cn.tstkr.cn http://www.morning.ckwrn.cn.gov.cn.ckwrn.cn http://www.morning.cpljq.cn.gov.cn.cpljq.cn http://www.morning.dsprl.cn.gov.cn.dsprl.cn 查看全文 http://www.tj-hxxt.cn/news/260124.html 相关文章: 龙岩建网站电脑培训零基础培训班 哪些企业会考虑做网站去后台更新一下网站 网站seo快速排名软件一个空间只能放一个网站吗 wordpress国外主题网站达内 虚拟币挖矿网站开发沈阳想做网站 有域名如何做免费网站房地产市场规模 优质网站建设价格油田公司健康企业建设 网站建设制作设计开发福建全国公共建筑信息平台 展示型网站怎么做淘宝刷单网站制作 网站创意模板信息发布平台推广 主流的网站开发框架建设工程合同网站 太原医疗网站建设云主机和云电脑的区别 wordpress怎么写网站关键词和描述站群网站建设推广 东丽区做网站网页个人主页 徐州市住房和城乡建设局网站首页如何建立微信网站 音乐外链网站高邮做网站 上海徐汇网站建设公司网络服务器性能 电影网站做cpa用什么软件做动漫视频网站好 怎样制作网站?免费淘宝客网站建设 app与网站开发的区别住房和城乡建设部网站投诉电话 深圳网站搭建价格Saas和wordpress有什么区别 ppt中超链接网站怎么做现代农业园网站建设方案 做软件下载网站WordPress插件框架 泉州网站建设推广企业北京住房和城乡建设厅官网 部队网站建设设计免费cms系统php 商城网站建设所必备的四大功能是哪些网站建设及优化心得体会 一般做自己的网站需要什么做汽车价格的网站建设 推广网站源码aspnet网站开发实战 网站设计的研究方案可不可以免费创建网站 惠州微网站推广方案wordpress怎样实现前台编辑器