首页 > 数据库 >redis内存配置调优

redis内存配置调优

时间:2023-04-08 11:32:36浏览次数:42  
标签:过期 redis maxmemory Redis 调优 内存 key policy

内存优化配置

maxmemory 1610612736
maxmemory-policy allkeys-lru

作用

这两个参数对Redis的内存管理非常重要,可以帮助Redis避免因为内存占用过多而导致性能下降或运行崩溃的问题。maxmemory参数可以控制Redis实例的内存上限,防止Redis使用过多内存而导致操作系统的OOM(Out-Of-Memory)杀掉Redis进程。maxmemory-policy参数则决定了当Redis占用内存达到上限时,应该优先释放哪些key来腾出内存空间,以避免过多的内存使用而导致Redis的性能下降或运行崩溃的问题。

例如,如果Redis的maxmemory为1GB,当内存使用达到1GB时,Redis将根据设置的maxmemory-policy参数来决定清理哪些key的内存数据。allkeys-lru表示Redis将优先清理长时间没有被使用的key,以释放内存空间。这种策略适用于那些写入频率比较低的应用场景,可以避免过多的数据占用内存而影响Redis的性能。

maxmemory表示Redis所占用的内存上限,该参数的单位是字节。例如:maxmemory 1610612736表示Redis最多占用1.6GB的内存。

maxmemory-policy表示当Redis内存占用达到上限时的清理策略。allkeys-lru表示优先淘汰最近最少使用的key(Least Recently Used,LRU算法的一种)来腾出内存空间。这个参数还有其他几种可选的策略,例如:volatile-lru,表示只对带过期时间的key进行LRU淘汰,noeviction表示当内存满了后,所有写入Redis的操作都会返回错误。


需要注意的是,当Redis实例使用的内存达到了maxmemory限制时,Redis会根据配置的maxmemory-policy参数来决定淘汰哪些key释放内存。如果采用了带有过期时间的key,同时maxmemory-policy参数设置为volatile-lru,那么Redis会优先淘汰过期时间较早的key。

关于Redis的过期时间,可以使用expire、pexpire等命令设置。在设置过期时间时,Redis会根据指定的过期时间和使用情况自动淘汰过期的key,以节省内存空间。


标签:过期,redis,maxmemory,Redis,调优,内存,key,policy
From: https://blog.51cto.com/yht1990/6177486

相关文章

  • redis——缓存双写一致性问题
    缓存双写一致性如果redis中有数据 需要和数据库中的值相同如果redis中无数据数据库中的值是最新值,且准备回写redis缓存按照操作分只读缓存读写缓存同步直写策略写数据库后也同步写redis缓存,缓存中的数据和数据中的一致对于读写缓存来说,要想保证......
  • Java内存模型
    Java内存模型的作用《Java虚拟机规范》中曾试图定义一种“Java内存模型”(JavaMemoryModel,JMM)来屏蔽各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。在此之前,主流程序语言(如C和C++等)直接使用物理硬件和操作系统的内存模......
  • 内存溢出:报错java.lang.OutOfMemoryError: PermGen space
    前言前后台调试过程中某个查询操作导致了后台报错java.lang.OutOfMemoryError:PermGenspace,百度了一下说是内存溢出,设置JVM参数就能解决,确实是如此。引用别人的解释:OutOfMemoryError:PermGenspace非堆溢出(永久保存区域溢出) 这种错误常见在web服务器对JSP进行pre......
  • 作业随笔-数据在内存中的存储
    大小端存储不同类型的整型提升int类型和folat类型在内存中的存储方式#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>//intmain()//判断是大端存储方式还是小段存储方式//{// //大端存储模式是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中// //......
  • 【C】动态内存管理 malloc calloc relloc free 函数详解
    【C】动态内存管理@[toc]本章重点为什么存在动态内存分配动态内存函数的介绍mallocfreecallocrealloc常见的动态内存错误几个经典的笔试题1.为什么存在动态内存分配我们已经掌握的内存开辟方式有:#include<stdio.h>intmain(){ intnum=10;//向内存申请了4个字节的空间 int......
  • 关于结构体的内存对齐
    今日份学习“结构体的内存对齐”前言:该篇文章主要讲解“结构体”在内存中如何存储?结构体的大小(字节)如何计算?如何更好的创建一个结构体?OK!开始我们的表演你认为的结构体的大小:structs1{ charc1;inta;charc2;};structs2{ charc1;charc2;inta;};structs1......
  • 内存马学习
    内存马介绍webshell的变迁过程大致如下所述:web服务器管理页面——>大马——>小马拉大马——>一句话木马——>加密一句话木马——>加密内存马 内存马是无文件攻击的一种常用手段,传统的文件上传的webshll或以文件形式驻留的后门越来越容易被检测到,内存马使用越来越多。传统......
  • 【Azure Redis 缓存】对于Azure Redis 从 Redis 4 升级到 Redis 6 的一些疑问
    问题描述使用AzureRedis服务,客户端使用Redisson3.X,在近期MicrosoftAzure对Redis服务进行大规模变动升级(Redis版本由4升级到6),对于这次升级的影响有以下的问题? 问题解释问题一:Redis6.0和Redisson3.X之间是否存在任何兼容问题,或任何性能问题?Redis版本6与版......
  • 逆向基础知识——软断点、硬件断点和内存断点
    1寄存器EAX:累加器,加减和比较运算都借助EAX来达到指令优化的效果,乘除必须在EAX中进行。EDX:数据寄存器,EAX的延伸。ECX:计数器ESI:源变址寄存器,存储输入数据流位置信息,“读”EDI:目的变址寄存器,指向相关数据操作结果存放位置,“写”ESP:栈指针,始终指向函数栈的最顶端EBP:基......
  • 基于cpu和内存进行pod扩容,创建hpa
    基于cpu和内存进行pod扩容,创建hpa创建镜像mkdirphpcdphptouchdockerfiletouchindex.phpvimdockerfileFROMphp:5-apacheADDindex.php/var/www/html/index.phpRUNchmoda+rxindex.phpvimindex.php<?php$x=0.0001;for($i=0;$i<=1000000;$i++){......