Redis所需内存 超过可用内存怎么办

我们知道,redis设置配置文件的maxmemory参数,可以控制其最大可用内存大小(字节)。

那么当所需内存,超过maxmemory怎么办?

这个时候就该配置文件中的maxmemory-policy出场了。

其默认值是noeviction

下面我将列出当可用内存不足时,删除redis键具有的淘汰规则。

规则名称 规则说明
volatile-lru 使用LRU算法删除一个键(只对设置了生存时间的键)
allkeys-lru 使用LRU算法删除一个键
volatile-random 随机删除一个键(只对设置了生存时间的键)
allkeys-random 随机删除一个键
volatile-ttl 删除生存时间最近的一个键
noeviction 不删除键,只返回错误

LRU算法,least Recently Used,最近最少使用算法。也就是说默认删除最近最少使用的键。

但是一定要注意一点!redis中并不会准确的删除所有键中最近最少使用的键,而是随机抽取3个键,删除这三个键中最近最少使用的键。

那么3这个数字也是可以设置的,对应位置是配置文件中的maxmeory-samples.

时间: 2024-10-25 07:45:21

Redis所需内存 超过可用内存怎么办的相关文章

Android 获取手机总内存和可用内存等信息

在android开发中,有时候我们想获取手机的一些硬件信息,比如android手机的总内存和可用内存大小.这个该如何实现呢? 通过读取文件"/proc/meminfo"的信息能够获取手机Memory的总量,而通过ActivityManager.getMemoryInfo(ActivityManager.MemoryInfo)方法可以获取当前的可用Memory量. "/proc/meminfo"文件记录了android手机的一些内存信息,在命令行窗口里输入"

显示列表中的xenserver的总内存,可用内存,可用内存比【易读版】

9==显示列表中的xenserver的总内存,可用内存,可用内存比[易读版]-----------------------for I in $(cat <<eof | cat PTtile192.168.1.xxx 192.168.1.xxx eof );do {[ "$I" = "PTtile" ] && echo -e "NameLabel:\t\tIpAddress:\t\tHostName:\t\tMemTotal:\t

ubuntu16.04 查看系统可用内存

free -m 查看内存情况    (单位MB) mem 行显示了从系统角度看来内存使用的情况, total是系统可用的内存大小, 数量上等于系统物理内存减去内核保留的内存. buffers和cached是系统用做缓冲的内存. buffers与某个块设备关联, 包含了文件系统元数据, 并且跟踪了块的变化. cache只包含了文件本身. -/+ buffers/cache行则从用户角度显示内存信息, 可用内存从数量上等于mem行used列值减去buffers和cached内存的大小. 因为buff

MongoDB 如何使用内存?为什么内存满了?

最近接到多个MongoDB内存方面的线上case及社区问题咨询,主要集中在: 为什么我的 MongoDB 使用了 XX GB 内存? 一个机器上部署多个 Mongod 实例/进程,WiredTiger cache 应该如何配置? MongoDB 是否应该使用 SWAP 空间来降低内存压力? MongoDB 内存用在哪? Mongod 进程启动后,除了跟普通进程一样,加载 binary.依赖的各种library 到内存,其作为一个DBMS,还需要负责客户端连接管理,请求处理,数据库元数据.存储引擎

redis 使用内存超过maxmemory

redis使用量超过了maxmemory,这时无法增加最大内存,redis 实例没有可用内存,导致命令都会执行失败 (error) OOM command not allowed when used memory > 'maxmemory'. 解决办法: flushdb /or 重启redis 原文地址:https://www.cnblogs.com/mikeluwen/p/8434814.html

为报表服务器应用程序配置可用内存

尽管 Reporting Services 可使用所有可用内存,但您可以通过为分配给 Reporting Services 服务器应用程序的内存资源总量配置上限来覆盖默认行为.此外,您还可以设置阈值,以便报表服务器根据内存压力(低.中或高)来更改其排列请求优先级和处理请求的方式.在内存压力较低时,报表服务器通过为交互式或按需报表处理提供一个略高的优先级进行响应.在内存压力较高时,报表服务器使用多种方法在可用资源有限的情况下保持运行状态. 本主题介绍用户可以指定的配置设置,还说明了服务器在内存压力

程序最多能new多少内存(2G内存里要放程序的5大区,HeapAlloc比new要快多了,而且超过2G的时候会告诉你)

根据<Windows核心编程>得知:X86操作系统提供每个程序最多只有4G的虚拟内存,其中2G虚拟内存提供给系统用(具体用来干什么还待考察),还有2G的内存留给用户使用.那这2G内存能拿来干嘛呢?首先给你介绍程序内存的5大区:栈区,堆区,全局区(静态区),文字常量区,程序代码区.这5大区就只能可怜的蜗居在这2G的内存里,所以我们要好好的珍惜这2G内存了!大部分程序员在申请堆时都习惯使用new,因为它简单好用,但很多一部分程序员不清楚我能new多少内存!这时候就得看你的除了堆区其余4大分区占用了

读Redis学C程序设计二:内存分配

内存分配对于C程序来说是一个核心问题,许多开源软件都会针对自己软件的需要定制自己的内存分配策略,redis也不例外.然而总的来说,redis并不是专门去管内存分配的东西,它的内存分配策略的最大特点在于加上了统计信息,这一点很重要.毕竟,redis是一个内存数据库,知道自己用了多少内存,还有多少内存可用是它非常需要关注的问题.我们来看zmalloc里面的内容. 首先在zmalloc.h里面 #if defined(USE_TCMALLOC) #define ZMALLOC_LIB ("tcmall

android 可用内存的阀值--转载

理论 Android采取了一种有别于Linux的进程管理策略,有别于Linux的在进程活动停止后就结束该进程,Android把这些进程都保留在内存中, 直到系统需要更多内存为止.这些保留在内存中的进程通常情况下不会影响整体系统的运行速度,并且当用户再次激活这些进程时,提升了进程的启动速度. 那Android什么时候结束进程?结束哪个进程呢?之前普遍的认识是Android是依据一个名为LRU(last recently used 最近使用过的程序)列表,将程序进行排序,并结束最早的进程.XDA的楼