首页 > 数据库 >Redis策略

Redis策略

时间:2023-12-14 17:32:43浏览次数:41  
标签:策略 删除 过期 Redis LFU LRU key 页面

1. 删除策略

1.1. 立即删除(过期后立即删除)

原理:key 过期之后立即删除

缺点:对CPU不友好,用处理器性能换取存储空间(拿时间换空间),存在大量 key 同时过期占用大量 CPU 资源进行删除操作的情况

1.2. 惰性删除

原理:过期后先不删除,等下一次访问时判断是否过期,若过期则立即删除

缺点:对CPU不友好,用处理器性能换取存储空间(拿时间换空间),存在长时间未访问的过期 key 大量堆积占用内存的情况

配置:在 redis.conf 通过设置 lazyfree-lazy-eviction:yes进行开启

1.3. 定期删除

原理:每隔一段时间执行一次删除过期键操作并通过限制删除操作执行时长和频率来减少删除操作对CPU时间的影响。

缺点:定期删除的抽样是随机抽样的,会出现过期 key 多次未被抽样到的情况

注意:定期删除策略的难点是确定删除操作执行的时长和频率:如果删除操作执行得太频繁或者执行的时间太长,定期删除策略就会退化成立即删除策略,以至于将CPU时间过多地消耗在删除过期键上面。如果删除操作执行得太少,或者执行的时间太短,定期删除策略又会和惰性删除束略一样,出现浪费内存的情况。因此,如果采用定期删除策略的话,服务器必须根据情况,合理地设置删除操作的执行时长和执行频率。

2. 淘汰策略

Redis策略_redis

2.1. LFU

含义: Least Frequently Used,最近最少使用页面置换算法,淘汰最长时间未被使用的页面,看页面最后一次被使用到发生调度的时间长短,首先淘汰最长时间未被使用的页面。

2.2. LRU

含义:Least Recently Used,最近最不常用页面置换算法,淘汰一定时期内被访问次数最少的页,看一定时间段内页面被使用的频率,淘汰一定时期内被访问次数最少的页

2.3. LRU和LFU的区别

LRU和LFU是不同的!

LRU是最近最少使用页面置换算法(Least Recently Used),也就是首先淘汰最长时间未被使用的页面!

LFU是最近最不常用页面置换算法(Least Frequently Used),也就是淘汰一定时期内被访问次数最少的页!

比如,第二种方法的时期T为10分钟,如果每分钟进行一次调页,主存块为3,若所需页面走向为2 1 2 1 2 3 4

注意,当调页面4时会发生缺页中断

若按LRU算法,应换页面1(1页面最久未被使用) 但按LFU算法应换页面3(十分钟内,页面3只使用了一次)

可见LRU关键是看页面最后一次被使用到发生调度的时间长短,

而LFU关键是看一定时间段内页面被使用的频率!

2.4. 如何选择淘汰策略

  • 在所有的 key 都是最近最经常使用,那么就需要选择 allkeys-lru 进行置换最近最不经常使用的key,如果你不确定使用哪种策略,那么推荐使用 allkeys-lru
  • 如果所有的 key 的访问概率都是差不多的,那么可以选用 allkeys-random 策略去置换数据
  • 如果对数据有足够的了解,能够为 key 指定 hint (通过expire/ttl指定),那么可以选择 volatile-ttl 进行置换

标签:策略,删除,过期,Redis,LFU,LRU,key,页面
From: https://blog.51cto.com/u_16293178/8822346

相关文章

  • Redis数据结构5:REDIS_SKIPLIST
    REDIS_SKIPLISTskipList,即:跳表,或者叫跳跃表。skiplist的优势是能支持平均O(logN)复杂度的节点查找。用一句话来说:skiplist就是一个有着索引的list。编码结构简单理解简单来说,skipList有多层“索引”以加快查找速度:其中L1、L2和L3都是一个list。当查找8时,从L3查找到5,再从L......
  • redis 使用主从机制复制数据
    查看主从情况127.0.0.1:6379>inforeplication#Replicationrole:masterconnected_slaves:0master_repl_offset:12539repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0建立主从(在备机操作)注意,如果让有数据的......
  • .net core 分布式锁 之 基于 Redis 的 RedLock
    使用场景分布式锁的业务场景涉及到并发控制、任务调度、缓存更新、分布式事务和防止重复操作等方面,能够保证分布式系统的数据一致性和正确性。并发控制:当多个线程或进程同时访问共享资源时,使用分布式锁可以确保只有一个线程或进程能够访问该资源,避免数据竞争和并发冲突。分......
  • 关于Redis
    1、Redis事务不支持回滚即使事务执行过程中,有其中一条命令出错了,那么只有该条命令不会被执行,其前后的命令仍然会被执行;只有在执行事务之前的组队阶段发生错误,才会回滚2、Redis事务只是保证在事务中的命令在执行的过程中不会被打断3、Redis是基于单线程的,每个命令都能保证其原......
  • redis stream的所有方法以及用处和使用场景
    目录一、用途:将消息添加到Stream中。二、用途:按范围获取消息。三、用途:阻塞读取消息,支持多个Stream。四、用途:创建消费者组。五、用途:阻塞读取消息并将其分配给消费者组中的消费者。六、用途:确认消息已被消费。七、用途:获取待处理的消息列表。八、用途:删除消息。九、用......
  • Redis数据结构4:REDIS_ZIPLIST
    REDIS_ZIPLISTzipList(压缩列表)是一种紧凑型的数据结构,占用一片连续的内存,本质上是一个字节数组。能提高CPU缓存的利用效率,并且针对不同数据结构进行不同编码,节省内存开销。编码结构zipList的字节数组主要由5个部分组成:zlbytes、zltail、zllen、zltail和entry。zlbytes记录......
  • Redis实战篇
    Redis实战篇开篇导读短信登录这一块我们会使用redis共享session来实现商户查询缓存通过本章节,我们会理解缓存击穿,缓存穿透,缓存雪崩等问题,让小伙伴的对于这些概念的理解不仅仅是停留在概念上,更是能在代码中看到对应的内容优惠卷秒杀通过本章节,我们可以学会Redis的计数......
  • 2023最新中级难度Redis面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-中级难度Redis面试题合集问:请解释Redis中的持久化机制RDB和AOF的区别,并谈谈你在实际应用中的选择。Redis的两种持久化机制分别为RDB和AOF:RDB(RedisDatabase)是Redis默认的持久化方式,会在指定的时间间隔内将内存中的数据集快照写入磁盘......
  • 2023最新初级难度Redis面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-初级难度Redis面试题合集问:请简单介绍一下Redis,以及它主要用于解决什么问题?Redis是一款键值存储系统,也被称为“内存数据库”,其主要特点是在内存中高速存储数据。它的优点在于其极高的读写速度和较低的延迟,因此常被用来作为缓存、队列......
  • Redis
    入门Redis是一种基于Key-Value键值对的在内存数据库。版本号第二位是奇数则是非稳定版本,偶数则为稳定版本。常用命令命令作用redis-server/myredis/redis7.conf启动Redisredis-cli-a159123zxc-p6379连接Redisquit退出Redis界面,此时Redis仍在运行shu......