当前位置: 首页 > news >正文

洛阳做网站汉狮网络wordpress的主题是什么意思

洛阳做网站汉狮网络,wordpress的主题是什么意思,青海餐饮网站建设,wordpress发的文章提示404文章目录 删除策略设置过期时间的常用命令过期删除策略 内存淘汰相关设置LRU算法LFU 总结 在redis使用过程中#xff0c;常常遇到以下问题#xff1a; 如何设置Redis键的过期时间#xff1f;设置完一个键的过期时间后#xff0c;到了这个时间#xff0c;这个键还能获取到么… 文章目录 删除策略设置过期时间的常用命令过期删除策略 内存淘汰相关设置LRU算法LFU 总结 在redis使用过程中常常遇到以下问题 如何设置Redis键的过期时间设置完一个键的过期时间后到了这个时间这个键还能获取到么假如获取不到那这个键还占据着内存吗如何设置Redis的内存大小当内存满了之后Redis有哪些内存淘汰策略我们又该如何选择 小面就具体聊一聊redis的删除策略和内存淘汰机制 删除策略 设置过期时间的常用命令 Redis提供了四个命令来设置过期时间生存时间。 EXPIRE 表示将键 key 的生存时间设置为 ttl 秒。PEXPIRE 表示将键 key 的生存时间设置为 ttl 毫秒。EXPIREAT 表示将键 key 的生存时间设置为 timestamp 所指定的秒数时间戳。PEXPIREAT 表示将键 key 的生存时间设置为 timestamp 所指定的毫秒数时间戳。 在Redis内部实现中前面三个设置过期时间的命令最后都会转换成最后一个PEXPIREAT 命令来完成。 另外: PERSIST 表示将key的过期时间移除。TTL 以秒的单位返回键 key 的剩余生存时间。PTTL 以毫秒的单位返回键 key 的剩余生存时间。 过期删除策略 在Redis内部每当我们设置一个键的过期时间时Redis就会将该键带上过期时间存放到一个过期字典中。当我们查询一个键时Redis便首先检查该键是否存在过期字典中如果存在那就获取其过期时间。然后将过期时间和当前系统时间进行比对比系统时间大那就没有过期反之判定该键过期 通常删除某个key我们有如下三种方式进行处理。 定时删除在设置某个key 的过期时间同时我们创建一个定时器让定时器在该过期时间到来时立即执行对其进行删除的操作。惰性删除设置该key 过期时间后我们不去管它当需要该key时我们在检查其是否过期如果过期我们就删掉它反之返回该key定期删除每隔一段时间我们就对一些key进行检查删除里面过期的key。 Redis的过期删除策略就是惰性删除和定期删除两种策略配合使用 惰性删除Redis的惰性删除策略由 db.c/expireIfNeeded 函数实现所有键读写命令执行之前都会调用expireIfNeeded 函数对其进行检查如果过期则删除该键然后执行键不存在的操作未过期则不作操作继续执行原有的命令。 定期删除由redis.c/activeExpireCycle 函数实现函数以一定的频率运行每次运行时都从一定数量的数据库中取出一定数量的随机键进行检查并删除其中的过期键。 注意并不是一次运行就检查所有的库所有的键而是随机检查一定数量的键。定期删除函数的运行频率在Redis2.6版本中规定每秒运行10次大概100ms运行一次。在Redis2.8版本后可以通过修改配置文件redis.conf 的 hz 选项来调整这个次数。 内存淘汰 Redis 缓存使用内存来保存数据避免业务应用从后端数据库中读取数据可以提升应用的响应速度。 为了保证较高的性价比缓存的空间容量必然要小于后端数据库的数据总量。不过内存大小毕竟有限随着要缓存的数据量越来越大有限的缓存空间不可避免地会被写满。此时该怎么办呢 解决这个问题就涉及到缓存系统的一个重要机制即缓存数据的淘汰机制。简单来说数据淘汰机制包括两步第一根据一定的策略筛选出对应用访问来说“不重要”的数据第二将这些数据从缓存中删除为新来的数据腾出空间。 相关设置 设置Redis最大内存 在配置文件redis.conf 中可以通过参数 maxmemory 来设定最大内存: 不设定该参数默认是无限制的但是通常会设定其为物理内存的四分之三 设置淘汰方式 当现有内存大于 maxmemory 时便会触发redis主动淘汰内存方式通过设置 maxmemory-policy 有如下几种淘汰方式 volatile-lru 设置了过期时间的key使用LRU算法淘汰allkeys-lru 所有key使用LRU算法淘汰volatile-lfu 设置了过期时间的key使用LFU算法淘汰allkeys-lfu 所有key使用LFU算法淘汰volatile-random 设置了过期时间的key使用随机淘汰allkeys-random 所有key使用随机淘汰volatile-ttl 设置了过期时间的key根据过期时间淘汰越早过期越早淘汰noeviction 默认策略当内存达到设置的最大值时所有申请内存的操作都会报错(如set,lpush等)只读操作如get命令可以正常执行 在缓存的内存淘汰策略中有FIFO、LRU、LFU三种常用算法其中LRU和LFU是Redis在使用的。 LRU算法 LRU 算法的全称是 Least Recently Used从名字上就可以看出这是按照最近最少使用的原则来筛选数据最不常用的数据会被筛选出来而最近频繁使用的数据会留在缓存中。 LRU 算法的全称是 Least Recently Used从名字上就可以看出这是按照最近最少使用的原则来筛选数据最不常用的数据会被筛选出来而最近频繁使用的数据会留在缓存中。 现在有数据 6、3、9、20、5。如果数据 20 和 3 被先后访问它们都会从现有的链表位置移到 MRU 端而链表中在它们之前的数据则相应地往后移一位。因为LRU 算法选择删除数据时都是从 LRU 端开始所以把刚刚被访问的数据移到 MRU 端就可以让它们尽可能地留在缓存中。 如果有一个新数据 15 要被写入缓存但此时已经没有缓存空间了也就是链表没有空余位置了那么LRU 算法做两件事 1、数据15是刚被访问的所以他会被放到MRU端 2、算法把LRU端的数据5从缓冲中删除 LRU 算法在实际实现时需要用链表管理所有的缓存数据这会带来额外的空间开销。而且当有数据被访问时需要在链表上把该数据移动到 MRU 端如果有大量数据被访问就会带来很多链表移动操作会很耗时进而会降低 Redis 缓存性能。所以在 Redis 中LRU 算法被做了简化以减轻数据淘汰对缓存性能的影响。 具体来说Redis 默认会记录每个数据的最近一次访问的时间戳由键值对数据结构RedisObject 中的 lru 字段记录。然后Redis 在决定淘汰的数据时第一次会随机选出N 个数据把它们作为一个候选集合。接下来Redis 会比较这 N 个数据的 lru 字段把lru 字段值最小的数据从缓存中淘汰出去。 Redis 提供了一个配置参数 maxmemory-samples这个参数就是 Redis 选出的数据个数N。例如我们执行如下命令可以让 Redis 选出 100 个数据作为候选数据集 CONFIG SET maxmemory-samples 100当需要再次淘汰数据时Redis 需要挑选数据进入第一次淘汰时创建的候选集合。这儿的挑选标准是能进入候选集合的数据的 lru 字段值必须小于候选集合中最小的 lru 值。当有新数据进入候选数据集后如果候选数据集中的数据个数达到了 maxmemory-samplesRedis 就把候选数据集中 lru 字段值最小的数据淘汰出去。这样一来Redis 缓存不用为所有的数据维护一个大链表也不用在每次数据访问时都移动链表项提升了缓存的性能。 但在LRU算法下如果一个热点数据最近很少访问而非热点数据近期访问了就会误把热点数据淘汰而留下了非热点数据因此在Redis4.x中新增了LFU算法。 LFU LFULeast Frequently Used表示最不经常使用它是根据数据的历史访问频率来淘汰数据其核心思想是“如果数据过去被访问多次那么将来被访问的频率也更高”。 LFU 缓存策略是在 LRU 策略基础上为每个数据增加了一个计数器来统计这个数据的访问次数。当使用 LFU 策略筛选淘汰数据时首先会根据数据的访问次数进行筛选把访问次数最低的数据淘汰出缓存。如果两个数据的访问次数相同LFU 策略再比较这两个数的访问时效性把距离上一次访问时间更久的数据淘汰出缓存。 和那些被频繁访问的数据相比扫描式单次查询的数据因为不会被再次访问所以它们的访问次数不会再增加。因此LFU 策略会优先把这些访问次数低的数据淘汰出缓存。 那么LFU 策略具体又是如何实现的呢 上面可以直到redis 在实现 LRU 策略时使用了两个近似方法 Redis 是用 RedisObject 结构来保存数据的RedisObject 结构中设置了一个 lru 字段用来记录数据的访问时间戳Redis 并没有为所有的数据维护一个全局的链表而是通过随机采样方式选取一定数量例如 10 个的数据放入候选集合后续在候选集合中根据 lru 字段值的大小进行筛选。 在此基础上Redis在实现LFU策略的时候只是把原来24bit大小的lru字段又进一步拆分成了两部分 ldt值lru字段的前16bit表示数据的访问时间戳counter值lru字段的后8bit表示数据的访问次数 总结以下当LFU帅选数据时Redis会在候选集合中根据数据lru字段后的8bit选择访问次数最少的数据进行淘汰当访问数据相同时在跟进lru字段的前16bit值大小选择访问时间最久远的数据进行淘汰。 总结 Redis过期删除策略是采用惰性删除和定期删除这两种方式组合进行的惰性删除能够保证过期的数据我们在获取时一定获取不到而定期删除设置合适的频率则可以保证无效的数据及时得到释放而不会一直占用内存数据。 但是我们说Redis是部署在物理机上的内存不可能无限扩充的当内存达到我们设定的界限后便自动触发Redis内存淘汰策略而具体的策略方式要根据实际业务情况进行选取。
http://www.sczhlp.com/news/244380/

相关文章:

  • 企业如何免费做网站淄博著名网站开发方法
  • 深圳特区专业网站建设公司一起装修网装修公司
  • 上海网站设计图片网站设计 优帮云
  • 企业网站留言板电子商务网站的建设方法
  • 工程网络图网页关键词优化难度
  • 网站建设帮助中心徐州软件外包
  • 个人做网站下载网上图可以吗项目计划书封面
  • 和田哪里有做网站的地方网站做外链的好处
  • 滨江网站建设网站建设及域名
  • 校园网站开发背景成都互联网网站建设
  • 2025年工业吸油吸尘器源头厂家权威推荐榜单:电瓶工业吸尘器/工业除尘设备 /工业防爆吸尘器源头厂家精选
  • OAuth2 协议解析(安全视角)
  • [转] 封装并发任务方法
  • 成人草书培训市场:北兰亭引领专业风尚
  • 网站建设 的介绍ci策划 网站开发
  • 做封面的免费网站VR网站建设价格
  • 网站游戏案例百度识图搜索网页版
  • 万网网站开发青岛海诚互联做网站好吗
  • 做一个购物网站网站怎么做查询功能
  • php免费源码网站cps广告联盟
  • 学生想搭建网站怎么做中国十大公司排行榜
  • 做seo是要先有网站吗怎么删除2345网址导航
  • 网站布局怎么设计如何制作大气网站
  • 柳州做网站企业站手机网站
  • 主视觉设计网站企业网站设计注意事项
  • 北京的广告公司网站建设电子商务网站的建设与维护方法
  • 河北网站建设公司排名他达拉非能延时多久
  • 先看网站案例您的网站也可以这么做外贸通网站建设
  • 网站建设业务范围网站开发者模式有什么用
  • 南宁建站系统模板建设网站系统