大型网站建设与维护过程学做家常菜的网站有哪些

news/2025/10/1 15:20:40/文章来源:
大型网站建设与维护过程,学做家常菜的网站有哪些,wordpress微信 缩略图不显示,汽车软件开发流程1、过期删除策略 1.1、介绍 Redis 是可以对 key 设置过期时间的#xff0c;因此需要有相应的机制将已过期的键值对删除#xff0c;而做这个工作的就是过期键值删除策略。 每当我们对一个 key 设置了过期时间时#xff0c;Redis 会把该 key 带上过期时间存储到一个过期字典…1、过期删除策略 1.1、介绍 Redis 是可以对 key 设置过期时间的因此需要有相应的机制将已过期的键值对删除而做这个工作的就是过期键值删除策略。 每当我们对一个 key 设置了过期时间时Redis 会把该 key 带上过期时间存储到一个过期字典expires dict中也就是说过期字典保存了数据库中所有 key 的过期时间。 字典实际上是哈希表哈希表的最大好处就是让我们可以用 O(1) 的时间复杂度来快速查找。当我们查询一个 key 时Redis 首先检查该 key 是否存在于过期字典中 如果不在则正常读取键值如果存在则会获取该 key 的过期时间然后与当前系统时间进行比对如果比系统时间大那就没有过期否则判定该 key 已过期。 1.2、定时删除策略 定时删除策略(TTL)的做法是在设置 key 的过期时间时同时创建一个定时事件当时间到达时由事件处理器自动执行 key 的删除操作。 优点可以保证过期 key 会被尽快删除也就是内存可以被尽快地释放。因此定时删除对内存是最友好的缺点在过期 key 比较多的情况下删除过期 key 可能会占用相当一部分 CPU 时间在内存不紧张但 CPU 时间紧张的情况下将 CPU 时间用于删除和当前任务无关的过期键上无疑会对服务器的响应时间和吞吐量造成影响。所以定时删除策略对 CPU 不友好。 1.3、惰性删除策略 惰性删除策略(Lazy Expire)的做法是不主动删除过期键每次从数据库访问 key 时都检测 key 是否过期如果过期则删除该 key。 优点因为每次访问时才会检查 key 是否过期所以此策略只会使用很少的系统资源因此惰性删除策略对 CPU 时间最友好缺点如果一个 key 已经过期而这个 key 又仍然保留在数据库中那么只要这个过期key 一直没有被访问它所占用的内存就不会释放造成了一定的内存空间浪费。所以惰性删除策略对内存不友好。 1.4、定期删除策略 定期删除策略(Eviction)的做法是每隔一段时间「随机」从数据库中取出一定数量的 key 进行检查并删除其中的过期key。 优点通过限制删除操作执行的时长和频率来减少删除操作对 CPU 的影响同时也能删除一部分过期的数据减少了过期键对空间的无效占用缺点内存清理方面没有定时删除效果好同时没有惰性删除使用的系统资源少是一个折中的策略缺点难以确定删除操作执行的时长和频率。如果执行的太频繁定期删除策略变得和定时删除策略一样对CPU不友好如果执行的太少那又和惰性删除一样了过期 key 占用的内存不会及时得到释放。 1.5、三者区别 1.6、Redis实现 Redis使用的过期删除策略是「惰性删除定期删除」这两种策略配和使用以求在合理使用 CPU 时间和避免内存浪费之间取得平衡。 Redis 的惰性删除策略由 db.c 文件中的 expireIfNeeded 函数实现Redis 在访问或者修改 key 之前都会调用 expireIfNeeded 函数对其进行检查检查 key 是否过期 如果过期则删除该 key至于选择异步删除还是选择同步删除根据 lazyfree_lazy_expire 参数配置决定Redis 4.0版本开始提供参数然后返回 null 客户端如果没有过期不做任何处理然后返回正常的键值对给客户端 再回忆一下定期删除策略的做法每隔一段时间「随机」从数据库中取出一定数量的 key 进行检查并删除其中的过期key。 在 Redis 中默认每秒进行10次过期检查一次数据库此配置可通过 Redis 的配置文件 redis.conf 进行配置配置键为 hz它的默认值是 hz 10。 值得注意的是每次检查数据库并不是遍历过期字典中的所有key而是从数据库中随机抽取一定数量的 key 进行过期检查。这个一定数量在源码中是写死的并未提供对应的参数进行自定义配置数值固定为20。 Redis 为了保证定期删除不会出现循环过度导致线程卡死现象为此增加了定期删除循环流程的时间上限默认不会超过25ms。 1.7、持久化时过期键处理 Redis 持久化文件有两种格式RDBRedis Database和 AOFAppend Only File下面我们分别来看过期键在这两种格式中的呈现状态。 RDB 文件分为两个阶段RDB 文件生成阶段和加载阶段 「RDB 文件生成阶段」从内存状态持久化成 RDB文件的时候会对 key 进行过期检查过期的键不会被保存到新的 RDB 文件中因此 Redis 中的过期键不会对生成新RDB 文件产生任何影响 「RDB 加载阶段」如果 Redis 是主服务器运行模式的话在载入 RDB 文件时程序会对文件中保存的键进行过期检查过期键不会被载入到数据库中。所以过期键不会对载入RDB 文件的主服务器造成影响 「RDB 加载阶段」如果 Redis 是从服务器运行模式的话在载入 RDB 文件时不论键是否过期都会被载入到数据库中。但由于主从服务器在进行数据同步时从服务器的数据会被清空。所以一般来说过期键对载入 RDB 文件的从服务器也不会造成影响。 AOF 文件分为两个阶段AOF 文件写入阶段和重写阶段。 「AOF 文件写入阶段」当 Redis 以 AOF 模式持久化时如果数据库某个过期键还没被删除那么 AOF 文件会保留此过期键当此过期键被删除后Redis 会向 AOF 文件追加一条 DEL 命令来显式地删除该键值「AOF 重写阶段」执行 AOF 重写时会对 Redis 中的键值对进行过期检查已过期的键不会被保存到重写后的 AOF 文件中因此不会对 AOF 重写造成任何影响。 1.8、主从模式过期键处理 当 Redis 运行在主从模式下时从库不会进行过期扫描从库对过期的处理是被动的。也就是即使从库中的 key 过期了如果有客户端访问从库时依然可以得到 key 对应的值像未过期的键值对一样返回。 从库的过期键处理依靠主服务器控制主库在 key 到期时会在 AOF 文件里增加一条 del 指令同步到所有的从库从库通过执行这条 del 指令来删除过期的 key。 2、内存淘汰机制 2.1、介绍 Redis的内存淘汰机制是为了解决内存占用过高的问题。 在 Redis 的运行内存达到了某个阀值就会触发内存淘汰机制根据一定的策略来选择一些键值对进行删除从而释放部分内存。 这个阀值就是我们设置的最大运行内存此值在 Redis 的配置文件中可以找到配置项为maxmemory。 常见的内存淘汰策略有 LRULeast Recently Used最近最少使用淘汰整个键值中最久未使用的键值LFULeast Frequently Used最不经常使用淘汰整个键值中最少使用的键 值Random随机随机选择键值对进行淘汰。noeviction不进行数据淘汰Redis3.0之后默认的内存淘汰策略。它表示当运行内存超过最大设置内存时不淘汰任何数据而是不再提供服务直接返回错误。 虽然虽然但是后面就不介绍后两个策略了主要介绍前两个策略 随机策略想介绍也没东西介绍就随缘抓几个起来噶掉这玩意不进行数据淘汰策略想介绍也没东西介绍就直接把门关了这玩意 2.2、LRU LRULeast Recently Used最近最少使用是Redis3.0之前默认的内存淘汰策略它是淘汰整个键值中最久未使用的键值。 传统 LRU 算法的实现是基于「链表」结构链表中的元素按照操作顺序从前往后排列最新操作的键会被移动到表头当需要内存淘汰时只需要删除链表尾部的元素即可因为链表尾部的元素就代表最久未被使用的元素。 Redis 并没有使用这样的方式实现 LRU 算法因为传统的 LRU 算法存在两个问题 需要用链表管理所有的缓存数据这会带来额外的空间开销当有数据被访问时需要在链表上把该数据移动到头端如果有大量数据被访问就会带来很多链表移动操作会很耗时进而会降低 Redis 缓存性能。 Redis 实现的是一种近似 LRU 算法目的是为了更好的节约内存它的实现方式是在 Redis 的对象结构体中添加一个额外的字段用于记录此数据的最后一次访问时间。 当 Redis 进行内存淘汰时会使用随机采样的方式来淘汰数据它是默认随机取 5 个值此值可配置然后淘汰最久没有使用的那个。 Redis 实现的 LRU 算法的优点 不用为所有的数据维护一个大链表节省了空间占用不用在每次数据访问时都移动链表项提升了缓存的性能 但是 LRU 算法有一个问题由于是随机采样的方式来淘汰数据因此无法解决缓存污染问题。 比如应用一次读取了大量的数据而这些数据只会被读取这一次如果运气炸裂每次随机采样都采不到它们那么这些数据会留存在 Redis 缓存中很长一段时间造成缓存污染。 2.3、LFU LFU 全称是 Least Frequently Used 翻译为最近最不常用的是在Redis4.0新增的一种内存淘汰策略。 LFU 算法是根据数据访问次数来淘汰数据的它的核心思想是“如果数据过去被访问多次那么将来被访问的频率也更高”。 其实严格来说LFU算法是根据数据访问频率来淘汰数据的。 所以 LFU 算法会记录每个数据的访问次数。当一个数据被再次访问时就会增加该数据的访问次数。这样就解决了偶尔被访问一次之后数据留存在缓存中很长一段时间的问题相比于 LRU 算法也更合理一些。 LFU 算法相比于 LRU 算法的实现多记录了「数据的访问频次」的信息。Redis 对象的结构如下 typedef struct redisObject {...// 24 bits用于记录对象的访问信息unsigned lru:24; ... } robj;Redis 对象头中的 lru 字段在 LRU 算法下和 LFU 算法下使用方式并不相同。 在 LRU 算法中Redis 对象头的 24 bits 的 lru 字段是用来记录 key 的访问时间戳因此在 LRU 模式下Redis可以根据对象头中的 lru 字段记录的值来比较最后一次 key 的访问时间长从而淘汰最久未被使用的 key。 在 LFU 算法中Redis对象头的 24 bits 的 lru 字段被分成两段来存储 高16bit存储 ldt (Last Decrement Time) 低8bit 存储 logc (Logistic Counter) ldt 是用来记录 key 的访问时间戳logc 是用来记录 key 的访问频次它的值越小表示使用频率越低越容易淘汰每个新加入的 key 的logc 初始值为 5。 注意 logc 并不是单纯的访问次数而是访问频次访问频率因为 logc 会随时间推移而衰减的。 在每次 key 被访问时会先对 logc 做一个衰减操作衰减的值跟前后访问时间的差距有关系.如果上一次访问的时间与这一次访问的时间差距很大那么衰减的值就越大这样实现的 LFU 算法是根据访问频率来淘汰数据的而不只是访问次数。 访问频率需要考虑 key 的访问是多长时间段内发生的。key 的先前访问距离当前时间越长那么这个 key 的访问频率相应地也就会降低这样被淘汰的概率也会更大。 对 logc 做完衰减操作后就开始对 logc 进行增加操作增加操作并不是单纯的自增而是根据概率增加如果 logc 越大的 key它的 logc 就越难再增加。 所以Redis 在访问 key 时对于 logc 是这样变化的 先按照上次访问距离当前的时长来对 logc 进行衰减然后再按照一定概率增加 logc 的值 redis.conf 提供了两个配置项用于调整 LFU 算法从而控制 logc 的增长和衰减 lfu-decay-time 用于调整 logc 的衰减速度它是一个以分钟为单位的数值默认值为1 lfu-decay-time 值越大衰减越慢lfu-log-factor 用于调整 logc 的增长速度 lfu-log-factor 值越大logc 增长越慢。 2.4、区别 3、区分过期删除和内存淘汰 内存淘汰机制 当 Redis 的内存使用达到配置的最大内存限制时内存淘汰机制会根据预先设置的策略来删除一些键值对以释放内存空间。内存淘汰机制并不关心键是否设置了过期时间它主要根据某种算法选择要淘汰的键值对以腾出更多的内存空间使得新的键值对可以被存储在内存中。常见的内存淘汰策略有 LRU最近最少使用、LFU最不经常使用、随机等。 过期删除机制 Redis 允许为键设置过期时间过期删除机制是在键设置了过期时间后当键过期时自动将其删除。过期删除机制并不是为了释放内存而是为了使 Redis 中的数据始终保持最新的状态。过期的键值对将不再对外提供服务直到下次有读或写操作访问该键时Redis 会发现键已经过期然后将其删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923967.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站设置密码最近韩国电影片

标题&#xff1a;递增三元组 给定三个整数数组 A [A1, A2, … AN], B [B1, B2, … BN], C [C1, C2, … CN]&#xff0c; 请你统计有多少个三元组(i, j, k) 满足&#xff1a; 1 < i, j, k < NAi < Bj < Ck 【输入格式】 第一行包含一个整数N。 第二行包含N个整…

详细介绍:开源 java android app 开发(十七)封库--混淆源码

详细介绍:开源 java android app 开发(十七)封库--混淆源码2025-10-01 15:05 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !impor…

Meta基础设施演进与AI技术革命

本文详细介绍了Meta从传统社交网络基础设施向AI驱动架构的演进历程,涵盖分布式系统构建、GPU集群扩展、自研芯片开发、散热解决方案等关键技术挑战与创新突破。Meta基础设施演进与AI时代 在过去的21年里,Meta从连接美…

完整教程:Spring AI整合聊天模型DeepSeek

完整教程:Spring AI整合聊天模型DeepSeekpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

2025 年焚烧炉厂家 TOP 企业品牌推荐排行榜!权威甄选实力与口碑俱佳的江苏焚烧炉 / 无锡焚烧炉推荐这十家公司!

随着工业领域的快速发展,危险废物、工业废弃物的产生量持续增加,焚烧炉作为实现废弃物减量化、无害化处理的关键设备,其市场需求不断攀升。但当前焚烧炉行业面临诸多问题,部分厂家缺乏核心技术,设备排放难以达到环…

2025 年防腐涂料厂家 TOP 企业品牌推荐排行榜,乙烯基、环氧煤沥青、环氧防腐涂料、防腐涂料地坪 、防腐涂料水池推荐这十家公司!

在当前工业生产、建筑工程、石油化工等众多领域,防腐涂料扮演着至关重要的角色,它能有效延长设施设备的使用寿命,降低维护成本。然而,如今防腐涂料行业市场鱼龙混杂,产品质量参差不齐,不同品牌的技术水平、产品性…

Mysql DBA学习笔记(主从复制) - 实践

Mysql DBA学习笔记(主从复制) - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

网站中文章内图片做超链接wordpress微信登录页面模板

日志只有这一行&#xff0c;比较难排查 排查途径&#xff1a; 1、从上图找到唯一的文件输出output.js&#xff0c;断点查看堆栈信息&#xff0c;如下图&#xff0c;可以看到这个错误是由于哪个文件引起的 以为从App.vue中定位到原因了&#xff0c;其实也不对&#xff0c;继续…

百度注册网站网站字体大小合适

文章目录 Redis主从部署1.下载安装Redis2.单点双副本主从配置1.修改配置信息2.修改配置文件redis.conf3.拷贝配置文件到每一个实例文件夹里4.修改每一个实例的端口和工作目录5.配置主从关系6.检查效果 3.哨兵模式监控主从1.创建实例目录2.复制配置文件并进行修改3.启动并测试 4…

2025双氧水厂家权威推荐榜:优质供应与专业定制实力之选

2025双氧水厂家权威推荐榜:优质供应与专业定制实力之选 在当今精细化工与工业制造领域,双氧水作为重要的基础化学品,其品质稳定性和供应专业性直接影响着下游产业的生产效率与产品质量。随着环保要求的日益严格和应…

Win环境下包管理工具

目录1 Win下包管理工具1.1 简介1.2 winget1.2.1 简介1.2.2 操作使用1.2.3 安装指定盘1.2.4 软件源来源&加速1.2.4.1 软件源1.2.4.2 加速1.3 Scoop1.3.1 简介1.3.2 操作&安装1.3.3 常用命令1.3.4 软件源来源&am…

那个公司做网站制作图

基站即公用移动通信基站&#xff0c;是无线电台站的一种形式&#xff0c;是指在一定的无线电覆盖区中&#xff0c;通过移动通信交换中心&#xff0c;与移动电话终端之间进行信息传递的无线电收发信电台。 目前&#xff0c;在 5G时代 &#xff0c;“ 宏基站 为主&#xff0c; 小…

VRNN论文总结 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

西安市做网站公司网站设计的内容有哪些

一、项目介绍 系统管理员的功能概述&#xff1a; ①用户管理 a.注册用户账户 当一个新用户注册时&#xff0c;用户填写基本信息并上传。用户基本信息包括账号、 姓名、密码、手机、地址等信息。 b.用户信息管理 管理员可以查看系统所有用户的基本信息&#xff0c;并修改和…

清华建设工程有限公司公司网站wordpress the date

服务器和电脑传文件夹吗 内容精选换一换Model File:模型文件。单击右侧的文件夹图标&#xff0c;在后台服务器sample所在路径(工程目录/run/out/test_data/resnet-18/model)选择需要转化的模型对应的*.prototxt文件&#xff0c;并上传。Weight File:权重文件。请自行从https://…

网页标准化对网站开发维护的好处文化网站建设需要的功能

优美的应用体验 来自于细节的处理&#xff0c;更源自于码农的自我要求与努力&#xff0c;当然也需要码农年轻灵活的思维。本文章实现的Demo效果&#xff0c;如下图所示&#xff1a;class HeroHomePage extends StatefulWidget { override _TestPageState createState() > …

深入解析:Social-Auto-Upload - 多平台社交媒体视频自动化上传工具

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

MX Round 11 解题报告

MX Round 11 解题报告 T1 水题,直接枚举计算即可。 T2 场切了,很爽!!! 因为操作是可以被覆盖的,所以考虑倒序考虑操作:一个位置一旦有了数,就再也不会变了。 然后我们考虑:有数的位置一定是一段连续的区间。这…

用 C# 打造企业资产管理系统雏形——从控制台到完整模块设计 - 详解

用 C# 打造企业资产管理系统雏形——从控制台到完整模块设计 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &quo…

青岛网站设计流程做网站的说3年3年包括什么

大家好&#xff0c;我是 &#x1f41f;&#x1f4a8;。前天&#xff0c;星球 的一位大学生朋友问了我几个问题&#xff1a;你大学时如何安排每日的时间&#xff1f;为什么能学那么多技术&#xff1f;你会学习到很晚吗&#xff1f;你是如何保持自律的&#xff1f;我觉得这几个问…