Redis过期问题探究

news/2024/4/25 23:04:16/文章来源:https://blog.csdn.net/chenjf0221/article/details/128440241

过期精度

Redis2.4及以前的版本,过期时间有0-1秒的误差

Redis2.6起,过期时间误差缩小到0-1毫秒

过期和持久

Keys的过期时间使用Unix时间戳存储(从Redis2.6开始以毫秒为单位)。这意味着即使Redis实例不可用,时间也是一直在流逝的,因此要处理好过期的工作,计算及必须采用稳定的时间,如果你将RDB文件在两台时钟不同步的电脑间同步,所有的keys装载时就会过期

正在运行的实例也会检查计算机的时钟,如设置了一个key的有效期是1000秒,然后设置你的计算机时间为未来2000秒,这是key会立即失效,而不是等待1000秒之后

Redis如何淘汰过期的keys

被动、主动

被动:当客户端尝试访问它时,key会被发现并主动的过期

主动:有些过期的keys,永远不会访问他们。所以定时随机测试设置keys的过期时间。

           具体就是Redis每秒10次做的事情

           1:测试随机的20个keys进行相关过期检测

           2:删除所以已经过期的keys

           3:如果有多于25%的keys过期,重复步骤1

平凡的概率算法,基本上的假设是,样本是密钥空间,并且不端重复过期检测,直到过期的kyes的的百分比低于25%,意味着在任何给定的时刻,最多会清楚1/4的过期keys

在复制AOF时如何处理过期

当一个key过期,DEL将会随着AOF文字一起合成到所有附加的slaves,在master实例中,这种方法是集中的,并且不存在一致性错误的机会。当slaves连接到master时,不会独立过期keys(会等到master执行DEL命令),它们仍然会在数据集里面存在,所有当slave当选为master时淘汰keys会独立执行,然后成为master

redis线程模型及单线程为什么快

1:IO模型使用了多路复用器,在linux系统中使用的是EPOLL

      类似netty的BOSS,WORKER使用一个EventLoopGroup(threads=1)

2:单线程的Reactor模型,每次循环取socket中的命令然后逐一操作,可以保证socket中的指令是按顺序的,不保证不同的socket也就客户端的命令的顺序性

3:命令操作在单线程中顺序操作,没有多线程的困扰不需要锁的复杂度,在操作数据上相对是原子性

架构设计模型

1:自身的内存存储数据,读写操作不涉及磁盘IO

2:redis提供了value具备类型为每种类型实现了一些操作命令

      实现了计算向数据移动,而非数据向计算移动,这样在IO的成本上有一定的优势且在数据结构类型上,丰富了一些统计类属性,读写操作中,写操作会O(1)负载度更新length类属性,使得读操作也是O(1)的

redis事务

MULTI、EXEC、DISCARD、和WATCH是Redis事务相关的命令。事务可以一次执行多个命令,并且有一下两个保证:

        1:事务是一个单独的隔离操作:事务中的所有命令都会序列化,按顺序地执行。事务在执行的过程中,不会被其它客户端发送来的命令请求所打断

        2:事务是一个原子操作:事务中的命令要么全部执行,要么全部不执行

EXEC命令负责触发并执行事务中的所有命令

        1:如果客户端在使用MULTI开启了一个事务之后,却因为断线没有成功执行EXEC,那么事务中的所有命令都不会被执行

         2:如果客户端成功在开启事务之后执行EXEC,那么事务中的所有命令都会被执行

Redis事务不支持回滚

         1:从实用性的角度说,失败的命令是由编程错误造成的

         2:因不需要对回滚支持,所以Redis内部可以保持简单快速

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

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

相关文章

Day 04 - Composition API_ref reactive 函数

1.ref函数 作用: 定义一个响应式的数据; 语法: const xxx ref(initValue) 创建一个包含响应式数据的引用对象(reference对象,简称ref对象)。 JS中操作数据: xxx.value 模板中读取数据: 不需要.value,直…

Vue CLI系列之生成打包报告

文章の目录一、通过命令行参数的形式生成报告二、通过可视化的UI面板直接查看报告写在最后打包时,为了直观地发现项目中存在的问题,可以在打包时生成报告。生成报告的方式有两种: 一、通过命令行参数的形式生成报告 "scripts": {…

【Axure高保真原型】移动端钱包原型模板

今天和大家分享移动端钱包的原型模板,里面包含了11大模块,各个模块都是高保真高交互的原型模板,大家可以在演示地址里体验哦 【原型预览及下载地址】 https://axhub.im/ax9/4c3757a85d201a4c/#c1 这个原型还可以在手机上演示哦&#xff0c…

【精准三点定位求解汇总】利用Python或JavaScript高德地图开放平台实现精准三点定位(经纬度坐标与平面坐标转换法求解、几何绘图法求解)

【精准三点定位求解汇总】利用Python或JavaScript高德地图开放平台实现精准三点定位(经纬度坐标与平面坐标转换法求解、几何绘图法求解) 众所周知,如果已知三个点的坐标,到一个未知点的距离,则可以利用以距离为半径画…

JavaScript的原型链

JavaScript的原型链 JavaScript的继承主要是通过原型链实现的,所以理解原型链是掌握JavaScript继承的关键一环。原型链的继承的基本思想是通过原型链继承多个引用类型的属性和方法。 理解原型链 关于原型链的定义与理解: 每个构造函数都有一个原型对…

Sentinel流控

Sentinel 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 1.sentinel特性 Sentinel 具有以下特征: 丰富的应用场景: Sentinel 承接了…

【折腾服务器 3】群晖学习版中安装 Active Backup for Business 及相关配置 =)

Catch UP 书接上回,在 ESXi 中安装了群晖系统,这个系统主要是用来给 Windows 物理机做备份的,因此在本片主要讲解如何配置 Active Backup for Business 软件。 Chapter 1 设置存储空间 上一篇博客中,安装群晖时分配了一个 32GB…

【高精度定位】关于GPS、RTK、PPK三种定位技术的探讨

高精度定位通常是指亚米级、厘米级以及毫米级的定位,从市场需求来看,定位的精度越高往往越好。“高精度、低成本”的定位方案无疑将是未来市场的趋势。 在物联网时代,大多数的应用或多或少都与位置服务相关联,尤其是对于移动物体而…

「 理财与风险控制|养老系列」你想象中的高端养老社区是什么样?

本文主要介绍为什么养老规划需要考虑养老社区的部分,当前市场上养老社区的各种现状,养老社区从各个角度分类,选择养老社区需要关注的要素以及保险保单能够提供的养老权益是怎样的 文章目录01 为什么要关注养老社区?02 为什么关注高…

【docker常用命令】

一、帮助启动类命令 (1)启动docker systemctl start docker(2)停止docker systemctl stop docker(3)重启docker systemctl restart docker(4)查看docker状态 systemctl status…

移动端测试必备技能: adb命令和抓包

移动端测试 是指对移动应用进行的测试,即实体的特性满足需求的程度,进行测试前需要搭建测试环境。 1 移动端自动化环境搭建 1.1 java安装 java JDK 安装jdk-8u181-windows-x64.exe 配置环境变量: JAVA_HOME:D:\developer to…

【c++】STL--vector

前言 想必大家已经对string有所了解了,string是专门用于字符串的。今天讲到的vector则是表示可变大小数组的序列容器。就像数组一样,vectoer也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组…

SpringBoot系列之自动装配原理详解

文章目录前言一、SpringBoot自动配置-Condition-11、观察spring自动创建bean过程2、创建自定义bean对象3、根据条件创建自定义bean二、 SpringBoot自动配置-Condition-2三、SpringBoot自动配置-切换内置web服务器1、查看继承关系图2、shiftdelete 排除Tomcat四、SpringBoot自动…

12.20工作学习记录 力扣 罗马文转数字

每日一题:罗马文转数字 定义两个指针 不断后移 每一次让前一个指针的值累加为sum 最后返回sum 力扣https://leetcode.cn/problems/roman-to-integer/ 最长公共前缀 主要是subString方法 力扣https://leetcode.cn/problems/longest-common-prefix/solutions/现在分词与形容…

圣诞的荒诞小故事并记录互联网协议-五层模型

今天敲代码敲着敲着灵光乍现,突然一个荒诞的故事💡映入脑海。 1.未来和过去: 人高度发达(以下称之为渡) 渡可以打开时空穿越过去(以下称之为旧迹),并且可以进随心所欲的来去自如&a…

基于yolov5s实践国际象棋目标检测模型开发

在我前面的一篇文章中讲解实现了基于改进的yolov5s-spd模型实现了五子棋目标对象检测模型系统的设计开发,这里紧接前文,突发奇想,是否可以借鉴同样的思路实现象棋的检测模型开发呢?理论上面肯定是可以的,但是实际效果如…

详细介绍关于自定义类型:结构体、枚举、联合【c语言】

文章目录结构体结构体的声名特殊的声明结构成员的类型结构的自引用结构体变量的定义和初始化结构体内存对齐修改默认对齐数结构体变量访问成员结构体传参结构体实现位段(位段的填充&可移植性)位段的内存分配位段的跨平台问题枚举枚举类型的定义枚举的…

微信小程序入门

目录 一,简介 二,小程序开发环境搭建 1.申请账号 2.安装开发工具 3.小程序工具使用 三,目录结构以及json配置 1.目录结果 2.json配置 3.JSON 语法 4.WXML 5.wxss 6.JS 逻辑交互 四,小程序宿主环境 1.程序与页面 2.组件…

String 字符串

String 基本介绍 String 应该是 Java 中最常用的一个对象&#xff0c;他不是八种基本数据类型的其中之一&#xff0c;但是随便翻了一下项目代码&#xff0c;用 String 定义的变量超过百分之八十。 public final class Stringimplements java.io.Serializable, Comparable<…

自己整理的vue实现生成分享海报(含二维码),看着网上的没实现

大家好&#xff0c;我是雄雄。 前言 相信大家在许多的场景下&#xff0c;看到过这样的案例。 当我们在某购物app上看好一件商品&#xff0c;想分享给别人时&#xff0c;app会给我们生成一张海报&#xff0c;我们将其保存在手机里面转发给其他人达到分享。当我们逛CSDN的时候&…