Redis运维和开发学习笔记(7) 内存管理和过期策略

Redis运维和开发学习笔记(7) 内存管理和过期策略

文章目录

  • Redis运维和开发学习笔记(7) 内存管理和过期策略
    • 内存回收策略
      • 惰性删除
      • 定时任务删除
    • maxmemory
    • 过期策略allkeys-lru主从搭建测试
      • 搭建完毕主从
    • 测试结果
      • volatile-lru测试结果
      • volatile-ttl测试结果
      • allkeys-lru

内存回收策略

惰性删除

惰性删除用于当客户端读取带有超时属性的键时,如果已经超过键设置的过期时间,会执行删除操作并返回空。不需要维护TTL链处理过期键的删除。如果有一个键从来没有被访问,那就有问题了。就需要定时任务删除

定时任务删除

默认每10秒执行一次,通过配置hz控制。定时任务中采用自适应算法。根据键的过期比例,使用快慢两种速率回收

maxmemory

内存达到maxmemory限制时触发内存溢出控制策略maxmemory-policy:六种策略

noeviction默认不删除,拒绝所有写操作
volatile-lru根据LRU算法删除设置了超时属性
allkeys-lru根据lru算法删除键,不管数据有没有设置超时属性
volatile-random随机删除过期键,知道腾出足够空间
volatile-ttl根据键值对象的ttl属性,删除最近将要过期的数据,如果没有回退到noeviction
allkeys-random随机删除所有键,直到有足够空闲空间

过期策略allkeys-lru主从搭建测试

搭建完毕主从

开辟2M空间,往里面写数据。1024条

  1. 使用脚本写入数据
for ((i=1;i<1024;i++))
doecho -en "helloworld1" | redis-cli -c -p 7010 -x set name$i
done
  1. 把数据输出
    共写入了108条数据这个时候我们再set数据查看变化

测试结果

volatile-lru测试结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-If4Ld9SW-1572053750520)(media/15662043330552/15674243431626.jpg)]

volatile-ttl测试结果

在这里插入图片描述

allkeys-lru

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382382.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Effective C++学习第十二天

条款47&#xff1a;请使用traits classes表现类型信息STL有五类迭代器分类&#xff0c;input迭代器&#xff08;只读&#xff0c;一次&#xff0c;向前&#xff09;、output迭代器&#xff08;可写&#xff0c;一次&#xff0c;向前&#xff09;、forward迭代器&#xff08;读/…

Linux 学习

1.linux文本命令行语言环境设置命令 查看当前语言环境&#xff1a; echo &#xffe5;LANG 修改&#xff1a; LANG选择的语言环境’ 引申&#xff1a;https://blog.csdn.net/huoyunshen88/article/details/41113633 2.linux中的硬链接和软连接 linux中文件的储存方式&#xf…

redis源码剖析(四)跳表

文章目录整数集合跳跃表压缩列表总结整数集合 当一个集合只包含整数&#xff0c;且这个集合的元素不多的时候&#xff0c;Redis 就会使用整数集合 intset 。首先看 intset 的数据结构&#xff1a; typedef struct intset {// 编码方式uint32_t encoding;// 集合包含的元素数量…

在Redis客户端设置连接密码 并演示密码登录

我们先连接到Redis服务 然后 我们要输入 CONFIG SET requirepass “新密码” 例如 CONFIG SET requirepass "A15167"这样 密码就被设置成立 A15167 我们 输入 AUTH 密码 例如 AUTH A15167这里 返回OK说明成功了 然后 我们退出在登录就真的需要 redis-cli -h IP地…

redis源码剖析(五)—— 字符串,列表,哈希,集合,有序集合

文章目录对象REDIS_STRING &#xff08;字符串&#xff09;REDIS_LIST 列表REDIS_SET &#xff08;集合&#xff09;REDIS_ZSET &#xff08;有序集合&#xff09;REDIS_HASH (hash表)int refcount&#xff08;引用计数器&#xff09;unsigned lru:REDIS_LRU_BITS对象 对于 Re…

redis源码剖析(六)—— Redis 数据库、键过期的实现

文章目录数据库的实现数据库读写操作键的过期实现数据库的实现 我们先看代码 server.h/redisServer struct redisServer{...//保存 db 的数组redisDb *db;//db 的数量int dbnum;... }再看redisDb的代码&#xff1a; typedef struct redisDb {dict *dict; /*…

linux中错误总结归纳

1.使用gcc编译C文件&#xff0c;C文件在for循环语句中出现变量定义 编译器提示错误&#xff1a;“for”loop initial declarations are only allowed in C99 mode. note:use option -stdc99or-stdgnu99 to compile; 原因&#xff1a;gcc的标准是基于c89的&#xff0c;c89不能在…

makefile内容小结

makefile中每个功能主要分为三部分&#xff1a;目标&#xff0c;依赖条件和命令语句 1.支持对比更新的Makefile写法&#xff08;只会编译文件时.o文件和.c文件时间不一致的文件&#xff09; 2.使用makefile自动变量和自定义变量的makefile写法 其中&#xff1a;这三个符号为ma…

事务隔离级别动图演示

事务的基本要素&#xff08;ACID&#xff09; 原子性&#xff08;Atomicity&#xff09; 事务开始后所有操作&#xff0c;要么全部做完&#xff0c;要么全部不做&#xff0c;不可能停滞在中间环节。事务执行过程中出错&#xff0c;会回滚到事务开始前的状态&#xff0c;所有的…

linux中的man文档结构

使用命令 man chapter章节号查找的内容

linux文件操作相关函数

&#xff08;1&#xff09;stat函数&#xff1a;显示文件的相关信息&#xff08;类似于 ls -l的感觉&#xff09; 头文件及函数原型&#xff1a; 函数参数:path:文件的路径&#xff0c;buf是指待写入的文件信息&#xff0c;fd:表示文件描述符&#xff1b; stat,fstat,lstat三者…

linux目录操作函数

&#xff08;1&#xff09;chdir函数&#xff1a;修改当前进程的路径 函数头文件及原型&#xff1a; 参数&#xff1a;要修改的文件路径或文件描述符&#xff08;一般是当前空闲最小的&#xff09; 返回值&#xff1a;成功&#xff08;0&#xff09;&#xff0c;失败&#xff0…

linux中的dup和fcntl的用法

&#xff08;1&#xff09;dup函数&#xff1a;文件描述符的拷贝 函数头文件及函数原型&#xff1a; 参数&#xff1a;原来的文件描述符&#xff0c;新的文件描述符&#xff0c;标志位&#xff1b; 返回值&#xff1a;成功&#xff08;返回新的文件描述符&#xff09;失败&…

使用dup2实现重定向到屏幕终端遇到问题

参考博客&#xff1a;https://blog.csdn.net/qq_26093511/article/details/53255970 参考博客&#xff1a;https://blog.csdn.net/db199410/article/details/52335450#commentBox 1.要解决的问题 通过复制文件描述符来实现文件重定向问题。 2.实现代码 2.代码输出 按照原来的…

linux操作系统之exec函数族

当我们想在进程中执行另外一个函数或程序时&#xff0c;可以使用exec函数。进程调用exec函数&#xff0c;则该进程中用户空间所有代码和数据会完全被新程序替换&#xff0c;但是不会创建新进程&#xff0c;因此进程id不会发生改变。 函数族的头文件&#xff1a;unistd.h l:li…

linux操作系统之子进程回收函数wait和waitpid函数小结

一个进程在终止时会关闭所有的文件描述符&#xff0c;释放用户空间分配的内存&#xff0c;但是它的PCB还保留着&#xff0c;内核在其中还保留着进程的一些信息&#xff1a;如果正常终止&#xff0c;则保留着退出状态&#xff1b;如果异常终止则保存着导致进程种植的信号。 在父…

linux操作系统进程间通信IPC之管道pipe及FIFO

linux环境下,各进程相互独立&#xff0c;如果想要交换两个进程之间的数据&#xff0c;需要通过内核&#xff0c;在内存中提供一个缓存区&#xff0c;一个进程往缓存区中写数据&#xff0c;一个往缓存区读数据&#xff0c;内核提供的这种机制称为进程间通信&#xff08;IPC&…

linux操作系统进程间通信IPC之共享存储映射

&#xff08;1&#xff09;文件存储映射I/O&#xff08;Memory-mapped I/O&#xff09; 一个磁盘文件与存储空间中的一个缓存区相对应&#xff0c;这样可以在不适合read/write函数的情况下&#xff0c;使用地址&#xff08;指针&#xff09;完成I/O操作。具体实现通过内核指定一…

linux操作系统之信号

&#xff08;1&#xff09;信号的概念 信号的特点&#xff1a;简单&#xff0c;不能携带大量信息&#xff0c;满足某种特定条件才触发。 信号的机制&#xff1b;“软中断”&#xff0c;通过软件方式实现&#xff0c;具有很强的延时性。每个进程收到的信号&#xff0c;都由内核负…

linux操作系统信号捕捉函数之sigaction用法小结

&#xff08;1&#xff09;sigaction函数&#xff1a;注册一个信号捕捉函数&#xff08;不参与捕捉信号&#xff0c;信号由内核捕捉&#xff09;&#xff0c;并修改原来的信号处理动作 &#xff08;2&#xff09;函数原型及头文件 头文件&#xff1a;#include<signal.h>…