九、redis过期策略

目录

一、设置redis键的过期时间

1、删除过期时间

2、查看过期时间

二、过期删除策略

1、定时删除:

2、惰性删除:

3、定期删除:

4、惰性删除和定期删除配合使用

三、

1、设置redis最大内存

2、设置内存的淘汰方式

总结:


在介绍这篇文章之前,我们先来看如下几个问题:

  ①、如何设置Redis键的过期时间?

  ②、设置完一个键的过期时间后,到了这个时间,这个键还能获取到么?假如获取不到那这个键还占据着内存吗?

  ③、如何设置Redis的内存大小?当内存满了之后,Redis有哪些内存淘汰策略?我们又该如何选择?

  如果上面的几个问题你都懂,那么下面的内容你就不用看了;如果你不是很懂,那就带着这些问题往下看。

一、设置redis键的过期时间

redis提供了4个命令来设置过期时间

  1. expire seconds :表示将key的生存时间设置为 ttl 秒。
  2. pexpire milliseconds :表示将key的生存时间设置为 ttl 毫秒。
  3. expireat timestamp:表示将key的生存时间设置为timestamp所指定的秒数时间戳
  4. pexpireat milliseconds-timestamp:表示将key的生存时间设置为timestamp所指定的毫秒数时间戳
set a redis 创建键a
expire a 10  为键a设置10秒过期
ttl a  查看键a 的剩余过期时间
persist a 删除键a的过期时间

1、删除过期时间

        persist :删除key的过期时间

2、查看过期时间

        ttl :以秒为单位返回键的剩余过期时间

        pttl :以毫秒为单位返回键的剩余过期时间

二、过期删除策略

1、定时删除:

        在设置某个key的过期时间同时,我们创建一个定时器,让定时器在该时间到时,立即执行对其进行删除操作。

        在redis.conf 中 active-expire-effort

        优点:定时删除对内存好,一旦过期就能立即删除,

        缺点:对CPU不好,删除过期的键会占用一部分CPU时间。对服务吞吐量有影响

2、惰性删除:

        设置该过期时间后,我们需要该key,先检查过不过期,过期就删除,没过期就反回

        优点:对CPU好。需要才会检查,不需要不会检查。不会浪费时间进行过期检查

        缺点:对内存不好,因为不定时删除了。很多不需要的键一直存在内存中。容易造成内存泄漏。

3、定期删除:

        每隔一段时间,对key进行检查,删除里边过期的key

        在redis.conf中 hz 选项:默认是10 (即1秒执行10次,100ms一次,值越大说明频率越快,对redis性能消耗也大)

        在redis.conf中 maxmemory最大值,当内存超过最大值时,会触发清理策略

        优点:

        可以通过设置时长和频率来减少删除操作对CPU的影响。另外定期删除也能释放过期的键和占用的内存

        缺点:

        1、如果执行太频繁,定期删除策略就会跟定时删除一样,对CPU不好

        2、如果执行太少,就会和惰性删除一样,对内存不好

4、惰性删除和定期删除配合使用

三、

        对于以上删除策略,对于一些永远使用不到的键,并且多次定期删除也没选定,那么会一直留在内存中,可能会导致内存不够用,这时候就需要内存淘汰策略了。

1、设置redis最大内存

在redis配置文件中可以通过参数 maxmemory 来设置最大内存,不设置默认是无限的。

2、设置内存的淘汰方式

当现有内存大于maxmemory时,便会触发redis主动淘汰内存的方式,通过设置maxmemory-policy,

  1. volatile-lru:利用LRU算法移除设置过过期时间的key
  2. allkeys-lru:利用LRU算法移除任何key
  3. volatile-random:移除设置过过期时间的随机key
  4. volatile-ttl:移除即将过期的key
  5. noeviction:不移除任何key,只返回一个错误

总结:

        redis过期删除策略是采用惰性删除和定期删除两种方式组合进行的,惰性删除能够保证过期的数据我们在获取时一定获取不到,而定期删除设置合适的频率,则可以保证无效的数据及时释放,而不会一直占用内存

        但是redis是部署在物理机上的,不可能一直无限扩充内存,当内存达到我们的设定的界限后,便会自动触发redis的内存淘汰策略。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Labels and Databases for Mac:强大的标签与数据库管理工具

Labels and Databases for Mac是一款集标签制作与数据库管理于一体的强大工具,专为Mac用户打造,旨在提供高效、便捷的标签制作与数据管理体验。 这款软件拥有丰富的内置标签格式,用户可轻松创建各种标签、信封和卡片,满足个性化需…

掌控网络流量,优化网络性能 - AnaTraf网络流量分析仪登场

在当今日新月异的网络环境中,网络流量监控和性能诊断已成为企业IT部门不可或缺的重要工作。只有充分了解网络流量状况,才能有效优化网络性能,提高业务运营效率。针对这一需求,全新推出的AnaTraf网络流量分析仪应运而生,为企业提供全面的网络监控和性能诊断解决方案。 快速定位…

Java双亲委派机制

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 概述 Java程序在运…

pygame实现鼠标绘制并调节画笔大小

pygame实现鼠标绘制并调节画笔大小 pygame介绍调节画笔大小鼠标绘制效果 pygame介绍 Pygame是一个开源的Python库,专为电子游戏开发而设计。它建立在SDL(Simple DirectMedia Layer)的基础上,允许开发者使用Python这种高级语言来实…

C语言趣味代码(五)

我想以此篇结束关于C语言的博客,因为在C语言拖得越久越不能给大家带来新的创作,在此我也相信大家对C语言已经有了一个新的认知。进入正题,在这一篇中我主要编一个“英语单词练习小程序”来给大家展开介绍,从测试版逐步改良&#x…

数据结构——图的基础知识与其表示

一:定义 由顶点的集合和边的集合组成;常以 G(V,E) 表示,G 代表图,V代表 顶点的集合,E代表边的集合; 如图: 在G1图中,有 0~4 五个顶点,有 0-1,0-2&…

专题五_位运算(2)

目录 面试题 01.01. 判定字符是否唯一 解析 题解 268. 丢失的数字 解析 题解 371. 两整数之和 解析 题解 面试题 01.01. 判定字符是否唯一 面试题 01.01. 判定字符是否唯一 - 力扣(LeetCode) 解析 题解 class Solution { public:bool isUnique…

Ubuntu上使用audit2allow解决Android Selinux问题

1.安装工具 sudo apt install policycoreutils 2.运行命令 提前用dmesg或者串口抓取kernel log 遇到错误,提示需要用-p指定policy file,然偶尝试创建一个policy空文件,用-p选项,遇到如下错误 3.规避问题 首先跟进错误log的堆栈…

面试集中营—Spring篇

Spring 框架的好处 1、轻量:spring是轻量的,基本的版本大约2MB; 2、IOC:控制反转,Spring的IOC机制使得对象之间的依赖不再需要我们自己来控制了,而是由容易来控制,一个字:爽&#xf…

leetcode-有重复数字的全排列-98

题目要求 思路 1.同【没有重复项的全排列-97】这个题一样,都是递归的题,区别在于这个可能会包含重复的数字,因此,不能只是简单的通过两个值是否相等然后用标志位标记,而是新增了一个数组,这个数组专门用于…

libevent的使用

文章目录 libevent封装的框架思想常用函数分析使用fifo的读写未决和非未决bufferevent特性bufferevent函数客户端和服务器连接和监听libevent实现socket通信 libevent封装的框架思想 libevent框架:1. 创建 event_base (乐高底座)2. 创建 事件evnet 3. 将事件 添加…

【C++练级之路】【Lv.20】位图和布隆过滤器(揭开大数据背后的神秘面纱)

快乐的流畅:个人主页 个人专栏:《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 引言一、位图1.1 位图的概念1.2 位图的优势1.3 位图的模拟实现1.3.1 成员变量与默认成员函数1.3.2 test1.3.3…

AI智能分析视频监控行业的发展趋势和市场发展浅析

监控视频AI智能分析技术的现状呈现出蓬勃发展的态势,这一技术源于计算机视觉和人工智能的研究,旨在将图像与事件描述之间建立映射关系,使计算机能够从视频图像中分辨出目标信息。 在技术上,监控视频AI智能分析技术已经实现了对视…

Jenkins 2.164.3 安装插件(当前官网正式版本: 2.440.3 LTS)

Jenkins 2.164.3安装插件 1. 安装jenkins1.1 宿主机安装1.2 docker安装(linux) 2. 登录jenkins3. 修改配置文件 这篇文章如果放在5、6年前写出来毫无意义,因为安装2.164.3之后,推荐的插件即可自动安装。但是在2024年,当前正式版本是2.440.3 L…

【论文阅读】 Loss Functions for Image Restoration with Neural Networks

Loss Functions for Image Restoration with Neural Networks 论文地址摘要I. 引言II 相关工作用于图像恢复的神经网络B 找到更好的解决方案。 三、图像恢复的损失层A. l1 错误 The l1 ErrorB. SSIMC. MS-SSIMD. The Best of Both Worlds: MS-SSIM L1 四、结果A. Joint Denois…

四化智造MES(WEB)对接打通金蝶云星空余料入库查询(入库记录查询)接口与生产退料单新增接口

四化智造MES(WEB)对接打通金蝶云星空余料入库查询(入库记录查询)接口与生产退料单新增接口 接通系统:四化智造MES(WEB) “MES助力智能制造过程控制:MES管理生产订单的整个生产流程,通过对生产过…

npm install 及使用cordova打包常见错误大全(附解决方案)

问题1、cb() 这是我们在install过程中最最常见问题,网络上的解决方式也都是大同小异,要么就是升级node(误人子弟),项目里的node是不可以随意升级的,它有可能会导致其他依赖又不适配,起始很多时候就是由于咱们配置的镜像…

Linux基础之git与调试工具gdb

目录 一、git的简单介绍和使用方法 1.1 git的介绍 1.2 git的使用方法 1.2.1 三板斧之git add 1.2.2 三板斧之git commit 1.2.3 三板斧之git push 二、gdb的介绍和一些基本使用方法 2.1 背景介绍 2.2 基本的使用方法 一、git的简单介绍和使用方法 1.1 git的介绍 Git是一…

记录一下3月底到4月的前端开发工程师面经

文章会持续更新 1.https 原理(加密 证书) 客户端使用https的url访问web服务器,要求与服务器建立ssl连接web服务器收到客户端请求后,会将网站的证书(包含公钥)传送一份给客户端客户端收到网站证书后会检查证…

学术咸鱼入门指南(2)

巧用思维导图阅读文献 化整为零:读文献,从拆分文章的结构开始 大家在初步接触自己学科的论文时,要了解清楚基本的范式,日后读起来就比较顺了。 科研论文的第一部分,是文章的标题,摘要和关键词&#xff0…
最新文章