口碑好的网站开发公司电话,网站建设ktv,百度运营怎么做,wordpress时间不对一、Redis缓存过期策略 物理内存达到上限后#xff0c;像磁盘空间申请虚拟内存(硬盘与内存的swap),甚至崩溃。
内存与硬盘交换 (swap) 虚拟内存#xff0c;频繁I0 性能急剧下降#xff0c;会造成redis内存急剧下降#xff1b;
一般设置物理内存的3/4#xff0c;在redis…一、Redis缓存过期策略 物理内存达到上限后像磁盘空间申请虚拟内存(硬盘与内存的swap),甚至崩溃。
内存与硬盘交换 (swap) 虚拟内存频繁I0 性能急剧下降会造成redis内存急剧下降
一般设置物理内存的3/4在redis.conf中 maxmemory 1024mb 二、过期时间 2.1 数据结构原理 声明数据expires来存储过期时间redis使用c语言开发dict是字典存储key-value结构类似于map 1、dict 用来维护一个Redis 数据库中包含的所有 Key-Value 键值对。 2、expires则用于维护一个 Redis 数据库中设置了失效时间的键(即key与失效时间的映射)。 3、执行过程当我们使用 expire命令设置一个key的失效时间时Redis 首先到dict这个字典表中查找要设置的key是否存在如果存在就将这个key和失效时间添加到expires这个字典表 当我们使用 setex命令向系统插入数据时Redis 首先将 Key 和 Value 添加到dict这个字典表中然后将Key和失效时间添加到expires这个字典表中。4、设置了失效时间的key和具体的失效时间全部都维护在expires这个字典表中。
2.2 设置超时时间
设置超时时间 set name:2 111 PX 3000 三、过期key的删除策略
3.1 惰性删除 在key被访问时如果发现它已经失效那么就删除它调用expirelfNeeded函数该函数的意义是: 读取数据之前先检查一下它有没有失效如果失效了就删除它。 3.2 主动删除
3.2.1 删除策略介绍 触发时机当内存超过maxmemory限定时触发主动清理策略该策略由启动参数的配置决定。 策略种类主动删除策略LRULFUrandomttlnoenviction。 在redis.conf文件中可以配置主动删除策略,默认是no-enviction (不删除) maxmemory-policy alTkeys-Tru 3.2.2 LRU LRU(Least recently used)最近最少使用(类似java的linkedHashMap)删除不经常被访问的数据。最常见的实现是使用一个链表保存缓存数据详细算法实现如下: 1.新数据插入到链表头部; 2.每当缓存命中 (即缓存数据被访问) 则将数据移到链表头部 3.当链表满的时候将链表尾部的数据丢弃。
3.2.3 LFU
从已设置过期时间的数据集挑选使用频率最低的数据淘汰。
3.2.4 ttl
从已设置过期时间的数据集中挑选将要过期的数据淘汰。
3.2.5 volatile-random
从已设置过期时间的数据集中任意选择数据淘汰。
3.2.6 noenviction
Redis 的默认策略。在内存超过阀值后Redis 不做任何清理工作然后对所有写操作返回错误但对读请求正常处理。
3.2.7 可参考连接
面试官请不要再问我 Redis 的淘汰策略了_杨同学technotes的博客-CSDN博客