首页 > 数据库 >Redis内存被占满的解决办法

Redis内存被占满的解决办法

时间:2024-02-28 13:36:53浏览次数:26  
标签:解决办法 策略 Redis maxmemory redis LRU 内存 lru

1、增加内存。

不推荐,因为即使加大内存,以后还是会有内存被占满的可能,不能根本解决问题。

2、使用Redis Cluster

3、使用内存淘汰策略

redis2.6+版本,redis.conf中的默认的策略是 noeviction ,一共有八种:

 

 其中,LRU是Least Recently Used的缩写,即最近最少使用;LFU是Least Frequently Used 的缩写,即最不经常使用。

 

  • volatile-lru:当redis耗尽内存时,它在设置了超时的键上应用LRU策略,将最近较少使用的驱逐出去,即便那些键还有剩余时间。
  • allkeys-lru:和volatile-lru不同的是,他在所有的键上应用LRU策略,而不区分是否设置了超时时间

 

注意的是LRU策略是一种不准确的算法,redis不会自动选择最佳的键来驱逐,而是默认选择5个候选键样本并驱逐当中最少使用的那个。如果想提高LRU算法的精确性,我们可以修改配置文件redis.conf中的

指令,也可以在redis命令行执行 CONFIG SET maxmemory-samples <count> 命令设置样本数量,当然提高了样本数量自然会消耗redis更多的cpu资源!这需要你根据自身业务来调整。

 

config get maxmemory-policy // 查看redis默认过期策略
config set maxmemory-policy volatile-lru // 设置键的驱逐策略
config get maxmemory // 查看redis使用内存大小,注:0表示内存没有限制
info memory // 查看redis的key占用空间

 

标签:解决办法,策略,Redis,maxmemory,redis,LRU,内存,lru
From: https://www.cnblogs.com/beatle-go/p/18040038

相关文章

  • Java遇到PKIX path building failed错误的解决办法
    Java调用HTTPS可能出现如下错误:PKIXpathbuildingfailed:sun.security.provider.certpath.SunCertPathBuilderException:unabletofindvalidcertificationpathtorequestedtarget。测试验证测试是否会出现本问题可以使用如下命令:javaSSLPokejira.example.com443......
  • centos7环境用docker-compose部署mysql5.7集群,redis7.2.4,springboot项目
    文件目录结构关于每个配置项及docker-compose的安装,大家可以自己查mysql配置文件master---my.cnf[mysqld]server_id=1gtid-mode=ONenforce-gtid-consistency=1binlog-ignore-db=mysqllog-bin=mysql-binbinlog_cache_size=......
  • 内存分区
    内存一般分为四个区:堆区、栈区、全局区、代码区对于一个程序的编译而言,编译程序占用五个区:堆区、栈区、全局区、代码区、文字常量区堆区:程序员动态申请一定大小的内存空间,可读可写栈区:存放局部变量,函数参数,可读可写全局区:全局变量,静态变量(静态全局和静态局部)、静态函数、还分......
  • Apscheduler 使用Redis集群做为任务存储
    背景由于原生的apscheduler仅支持redis单节点连接,不支持redis集群,所以本人基于原生的RedisJobStore自己修改了一个专门用于连接redis集群的类RedisClusterJobStore修改点有以下内容:修改类名RedisJobStore为RedisClusterJobStore将原始导入的redis替换为rediscluster将原始......
  • 小白的学习记录——Redis的简单使用
    Redis是什么?不同于MySql,MySql是基于二维表存储数据,而Redis是一个基于内存的key-value键值对结构数据库我们为什么要用Redis?基于内存存储,读写性很高适合存储热点数据,(热点商品,资讯,新闻)企业应用广泛Redis是对MySql的补充,与其共存,大部分数据放在MySql中。Redis官网:https:/re......
  • Redis加Lua脚本实现分布式锁
    先讲一下为什么使用分布式锁:在传统的单体应用中,我们可以使用Java并发处理相关的API(如ReentrantLock或synchronized)来实现对共享资源的互斥控制,确保在高并发情况下同一时间只有一个线程能够执行特定方法。然而,随着业务的发展,单体应用逐渐演化为分布式系统,多线程、多进程分布在不同......
  • 只有 2G 内存, 如何排序 128G 数据?
    【外排序】只有2G内存,如何排序128G数据?在说明这个问题之前,先来回顾一项计组基础知识:CPU最多可以访问到内存,无法访问磁盘;因此一般的排序算法(如快速/归并/堆/希尔)都只能对至少可存储在内存中的数据进行排序,但现在需要面对的场景是数据量过大,无法放入内存,因......
  • 打包app端 登录页【非tabBar页面】底部会显示导航栏的解决办法
    如题,uniapp项目打包app后,登录页底部会显示导航栏的解决办法 首先直接在pages.Json中的对应页面配置中设置"navigationBarHidden":true这个方法是无效的"style":{       "navigationBarHidden":true   }但是可以通过js方式来控制页脚tabBar的隐藏与否:1、首......
  • redis自学(6)SkipList
    SkipListSkipList(跳表)首先是链表,但与传统链表相比有几点差异:  元素按照升序排列存储  节点可能包含多个指针,指针跨度不同(最多允许32级指针,跨度成倍数递增)    SkipList的特点:  跳跃表是一个双向链表,每个节点都包含score和ele值  节点按照score值排序,sc......
  • Redis集群在线迁移
    一、redis集群迁移的几种方式离线迁移:通过rdb或者aof文件的方式,实现离线迁移缺点:版本限制,不同版本启动时,可能会出现覆盖数据文件的情况(也可能是集群模式的限制);需要停机,会造成数据不一致问题。使用shell脚本,单库对单库,性能极低,生产环境不能使用。主从同步:成为从节点slaveofip......