首页 > 数据库 >Redis 6种淘汰机制,看看你知道哪些?

Redis 6种淘汰机制,看看你知道哪些?

时间:2023-11-28 13:06:14浏览次数:30  
标签:策略 哪些 Redis 内存大小 volatile 内存 key 淘汰

大家好,我是pub,还记得 redis 缓存淘汰机制吗?今天我们回顾一下!


redis是个基于内存的缓存数据库,既然是基于内存的,那肯定就会有存满的时候


如果真的存满了,再有新的数据过来肯定就存不进去了


此时redis会执行既定的一些淘汰策略,本文大概讲一下redis六种淘汰策略


六种淘汰策略


1.noeviction(默认策略):对于写请求不再提供服务,直接返回错误(DEL请求和部分特殊请求除外)


2.allkeys-lru:从所有key中使用LRU算法进行淘汰(LRU算法:即最近最少使用算法)


3.volatile-lru:从设置了过期时间的key中使用LRU算法进行淘汰


4.allkeys-random:从所有key中随机淘汰数据


5.volatile-random:从设置了过期时间的key中随机淘汰


6.volatile-ttl:在设置了过期时间的key中,淘汰过期时间剩余最短的


当使用volatile-lru、volatile-random、volatile-ttl这三种策略时,如果没有key可以被淘汰,则和noeviction一样返回错误


如何获取及设置内存淘汰策略


1、获取当前内存淘汰策略:


127.0.0.1:6379> config get maxmemory-policy


可以看到当前使用的默认的noeviction策略


2、获取Redis能使用的最大内存大小


127.0.0.1:6379> config get maxmemory


如果不设置最大内存大小或者设置最大内存大小为0,在64位操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存。32 位的机器最大只支持 4GB 的内存,而系统本身就需要一定的内存资源来支持运行,所以 32 位机器限制最大 3 GB 的可用内存


3、设置淘汰策略


通过配置文件设置淘汰策略(修改redis.conf文件):


maxmemory-policy allkeys-lru


通过命令修改淘汰策略:


127.0.0.1:6379> config set maxmemory-policy allkeys-lru


4、设置Redis最大占用内存大小


#设置Redis最大占用内存大小为100M
127.0.0.1:6379> config set maxmemory 100mb




标签:策略,哪些,Redis,内存大小,volatile,内存,key,淘汰
From: https://blog.51cto.com/wangshiyu/8598915

相关文章

  • 京东技术面:Redis是如何保证高效查询的?
    大家好,我是pub,马上就到一年中最热闹的金九银十,你是不是要检验一下自己。这篇我们来看看redis。为什么Redis比较快Redis中的查询速度为什么那么快呢?1、因为它是内存数据库;2、归功于它的数据结构;3、Redis中是单线程(引入了多线程,但核心内存读写仍为单线程);4、Redis中使用了多路复......
  • 有哪些好用的pdf编辑软件?如何免费地完整地将pdf转成word
    PDF是一种通用的电子文档格式,它被广泛应用于各个领域,包括商务、教育、科研、医疗等。PDF编辑软件是一类专门用于编辑PDF文件的软件。它们提供了丰富的功能,可以帮助用户轻松地进行PDF编辑,如添加文本、图像、表格、链接等。以下是一些好用的PDF编辑软件:1.AdobeAcrobatPro:......
  • 进程和线程有哪些状态?
    进程的五种状态对于Linux系统而言,管理进程和线程使用的是相同的结构,所以进程和线程的状态是一样的,需要注意的是,这里说的是操作系统层面的线程,如果是java里面的线程,它的状态种类会有点不一样转载:https://www.nowcoder.com/discuss/556240605425246208https://mikechen.cc/2......
  • 【Python】Formatter预定义的字段有哪些
    字段描述namelogger名字levelno日志级别数字levelname日志级别字符串pathname打印日志文件路径filename打印日志文件名module模块名lineno日志调用行数funcName日志调用所在函数名created消息创建时的时间对象(time.time())asctime消......
  • Redis深入理解-内核请求处理流程、数据传输协议
    Redis内核级请求处理流程RedisServer其实就是Linux服务器中的一个进程主要还是下图的流程应用先和server端建立TCP连接建立连接之后,server端就会有一个与该客户端通信的socket,客户端的读写请求发送到服务端的socket那么通过IO多路复用,收到读写请求的socket会到队列......
  • HTTP 和 HTTPS 之间除了安全性区别外,还有哪些区别
    HTTP和HTTPS是两种常见的网络协议,它们都是用于在浏览器和服务器之间传输数据的。但是,它们之间也有一些重要的区别,这些区别涉及到数据的安全性、传输性能、使用成本和搜索排名等方面。本文将从以下几个方面来介绍HTTP和HTTPS的区别,本文内容大纲如下:数据的安全性HTTP协议......
  • 常规Bi项目有哪些
       常规BI项目可大可小,大的项目只BI工具采购就有百万的,小的项目十几二十万就能搞定了。这个要根据实际业务需求和规模来定,下面我简单介绍下我在实际项目中总结的高性价比的搭配方案。BI项目少不了做大量的报表和dashboard,报表工具是必须,在报表方面润乾报表是国产报表软......
  • 为什么需要进行敏捷开发培训?有哪些好处?
    ​敏捷开发是一种以人为核心、迭代、循序渐进的软件开发方法。它强调团队合作、客户需求和适应变化。进行敏捷开发培训其实有多种原因,我整理了一些,可以作为参考:理解敏捷原则和实践: 敏捷开发不仅是一种方法论,更是一种思维方式和文化。培训能够帮助团队成员了解敏捷的核心原则......
  • Spring Data Redis切换底层Jedis 和 Lettuce实现
    1简介SpringDataRedis是SpringData系列的一部分,它提供了Spring应用程序对Redis的轻松配置和使用。它不仅提供了对Redis操作的高级抽象,还支持Jedis和Lettuce两种连接方式。可通过简单的配置就能连接Redis,并且可以切换Jedis和Lettuce两个连接方式。下面先来看看我们该如何使......
  • 堡垒机的用途有哪些
    堡垒机的用途堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段监控和记录运维人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为,以便集中报警、及时处理及审计定责。 首先,使用堡垒机的审计功能可以实时......