Redis缓存过期淘汰策略详讲

查看redis最大占用内存

1)命令查看

config get memory

2)进入redis配置文件,查看maxmemory

vim /myredis/redis.conf

3)redis默认内存多少可用

如果不设置最大内存大小或者设置最大内存大小为0,在64位操作系统不限制内存大小,在32位操作系统下最多3g

4)一般生产上如何配置,maxmemory单位是byte

类似hashmap,负载因子为0.75 ,所以一般设置为内存为物理内存的四分之三

5)如何修改

修改文件vim /myredis/redis.conf

利用命令:config set maxmemory 1024000

6)什么命令查看redis内存情况

info memory

可以查看各种信息,包括内存、持久化

内存不足会怎样,

1)设置内存值为1,报OOM command

2)要防止内存被占满,所以就要内存过期淘汰

内存淘汰策略

1.定时删除(对CPU不好,用处理器的性能换取存储空间):

redis不可能时时刻刻遍历所有被设置生存时间的key,来检查数据是否达到过期时间,然后对他删除。

立即删除可以保证数据最新,不占用redis内存,但是对CPU不友好,假设CPU正忙,这时候又要删除,产生大量的性能消耗,影响数据的读取操作。

拿处理器性能换取储存空间

2.惰性删除(对内存不友好,再一次访问删除):

数据达到过期不做删除。等待下次访问该数据时,如果未过期,返回数据,发现已过期,删除,返回不存在。大量不用的垃圾占用内存。

上面两种方案极端情况:

定期删除:每隔一段时间执行一次删除过期操作,主要考虑确定删除的key、定期扫描的时长,什么时候扫描,内存淘汰策略就可以解决这个问题。

1)redis天生自带淘汰策略:

redis6默认有8种

两个维度:过期key volatile,全部key allkey

四个方面:

LRU,Least Recently Used ,最近最少使用的

LFU,Less Frequently Used ,一直以来最少被使用的元素会被被清理掉

random

ttl + noeviction

默认等待打满,noeviction,不在驱除,报OOM

2)配置淘汰策略

修改redis.conf配置:

maxmemory- policy allkeys- lru

命令配置:

config set maxmemory- policy allkeys- lru

相关推荐
源代码•宸1 天前
Leetcode—3. 无重复字符的最长子串【中等】
经验分享·后端·算法·leetcode·面试·golang·string
0和1的舞者1 天前
基于Spring的论坛系统-前置知识
java·后端·spring·系统·开发·知识
invicinble1 天前
对于springboot
java·spring boot·后端
码界奇点1 天前
基于Spring Boot与Vue的校园后台管理系统设计与实现
vue.js·spring boot·后端·毕业设计·源代码管理
爱编程的小庄1 天前
Rust 发行版本及工具介绍
开发语言·后端·rust
Apifox.1 天前
测试用例越堆越多?用 Apifox 测试套件让自动化回归更易维护
运维·前端·后端·测试工具·单元测试·自动化·测试用例
sunnyday04261 天前
Nginx与Spring Cloud Gateway QPS统计全攻略
java·spring boot·后端·nginx
康王有点困1 天前
Link入门
后端·flink
海南java第二人1 天前
Spring Boot全局异常处理终极指南:打造优雅的API错误响应体系
java·spring boot·后端
小楼v1 天前
消息队列的核心概念与应用(RabbitMQ快速入门)
java·后端·消息队列·rabbitmq·死信队列·交换机·安装步骤