首页 > 数据库 >Redis相关

Redis相关

时间:2023-12-26 10:47:09浏览次数:37  
标签:hash 数组 删除 过期 Redis key 相关

2023.12.26 臭宝今天早上起床没拉粑粑,so  sad     o(╥﹏╥)o

 

 

1.Redis为什么快?

Redis是存在内存中的,Redis是单线程的,避免上下文切换。

渐进式Rehash

Redis的所有数据都是存在一个hash数组上的,hash数组每个元素都是一个链表(所有类型都是,如String,hash,list,set,zset,bitmap),类似于hashmap的结构。

数组的长度一开始很小,随着数据不断插入,数组需要扩容,扩容后需要对所有元素进行Rehash,把1万个数据的Rehash分成1万条请求来执行,旧的hash数组和新的hash数组都可以用来查询,

因为redis是单线程的,所以在Rehash的过程中也可以对数据进行操作,避免了rehash导致卡顿的问题。

缓存时间戳

使用Redis很多情况下都需要设置过期时间,而Redis在设置过期时间的过程中,需要调用系统的时间函数,这个过程很耗费时间,所以Redis后台有个定时任务来每毫秒读取时间存到缓存,从而提高插入速度

 

  2. Redis过期策略和内存淘汰机制

Redis过期策略:

  定期删除:Redis会将所有设置了过期时间的key放到一个过期字典中,默认每秒进行10次扫描过期的key,每次扫描删除20个已过期的key,如果删除的key数量超过总数量的1/4,那么再次进行扫描。所以Redis设置过期时间时,要给过期时间加上一个随机数范围,防止定时任务持续扫描卡顿。

  上面说的是主库的删除策略,从库的过期策略是,在主库的key过期删除后,会在AOF文件中新增一条del删除指令,然后把这条指令同步到所有备库,因为是异步的,所以可能会存在主从数据不一致问题。

  惰性删除:过期的key在被访问的时候才删除

  因为定期删除可能会存在部分过期key没有被删除的情况,所以reds的过期策略是这两种删除策略的结合。

未完待续!

标签:hash,数组,删除,过期,Redis,key,相关
From: https://www.cnblogs.com/javarook/p/17927599.html

相关文章

  • Redis进阶 Lua函数
    1.可以直接声明一个局部变量来接收函数,也可以直接简写localsquare=function(i)returni*iend简写:localfunctionsquare(i)returni*iend 2.当调用函数时,参数是一一对应的,如果多了参数,则会忽略,少则会将对应位置的参数赋值为nil 3.如果想要实现可变参数个数,也......
  • jieba分词 | 西游记相关分词,出现次数最高的20个。
    代码1importjieba23txt=open("《西游记》.txt","r",encoding='utf-8').read()45words=jieba.lcut(txt)#使用精确模式对文本进行分词67counts={}#通过键值对的形式存储词语及其出现的次数89forwordinwords:10iflen(word)==......
  • 美团面试:ES+Redis+MySQL高可用,如何实现?
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • Ubuntu上安装、使用Redis的详细教程
    sudoapt-getupdatesudoapt-getinstallredis启动方式二systemctlstartredis-server启动方式三serviceredis-serverstart重启redisserviceredis-serverrestart关闭redisserviceredis-serverstop查看redis状态serviceredis-serverstatus4、在宿主机连接redis根据以......
  • aioredis
    importasyncioimportaioredisfromconfig.env_configimportREDIS_URLclassRedisClient:def__init__(self,url,decode_responses=True,max_connections=30):self.url=urlself.decode_responses=decode_responsesself.max_c......
  • Redis发布订阅
    Redis的发布订阅(Pub/Sub)是一种消息传递模式,允许消息的发布者(publisher)将消息发送给订阅者(subscriber)。基本概念:发布者(Publisher):发布消息的客户端。订阅者(Subscriber):接收并处理发布者发送的消息的客户端。频道(Channel):消息被发布到的特定通道。发布者将消息发布到指定频道,接受者从频......
  • Redis分布式锁
    1.分布式锁的方案分类方案原理优点缺点基于数据库mysql数据库表的唯一索引1.表创建唯一索引2.加锁:执行insert语句,成功则加锁成功,失败则加锁失败3.解锁:执行delete语句完全利用DB实现,实现简单1.锁无超时自动失效机制,有死锁风险2.不支持锁冲入,不支持阻塞等待3.操作数据......
  • 在arm架构的银河麒麟系统部署Redis
    以下是在arm架构的银河麒麟系统上部署Redis的详细步骤:1.创建文件夹首先,在合适的位置创建必要的文件夹。在本例中,我们将创建/opt/redis和/usr/src/redis两个文件夹。mkdir/opt/redismkdir/usr/src/redis2.准备Redis及其依赖库移动redis-6.2.12.tar.gz到/usr/src/redis......
  • Docker专题学习之相关概述
    前言其实第一次听说Docker还是好几年前,但是一直满足于当前的技术栈,无法突破自己的舒适圈,导致技术栈有些落后。今天正式开启一个新的专题学习,Docker容器技术~......
  • PMP-5.10 管理相关方参与
    一、管理相关方参与基础内容 0.涉及领域:(1)沟通管理计划沟通管理计划描述与相关方沟通的方法、形式和技术。(2)风险管理计划风险管理计划描述了风险类别、风险偏好和报告格式。这些内容都可用于管理相关方参与。(3)相关方参与计划相关方参与计划为管理相关方期望提供......