![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 72
qiny_123
这个作者很懒,什么都没留下…
展开
-
Redis相关面经
分布式锁 为什么使用分布式锁 随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的Java API并不能提供分布式锁的能力。为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式锁要解决的问题! 也就是说,相同的服务部署到不同的服务器上,如何保证相同的共享变量的一致性,即保证在同一时刻只能由一台服务器中的共享变量被一条线程修改。如线程1对jvm1中的变量A修改,如果没有原创 2021-08-06 15:26:11 · 137 阅读 · 0 评论 -
集群
集群中的数据结构 在clusterState中保存了一个跳跃表。用来保存该节点中槽(socre)与键(member)之间的关系,跳跃表中节点以score排序。优点:节点可以方便对属于某个和某些槽的所有数据库键进行批量操作。 ...原创 2021-03-23 15:37:11 · 70 阅读 · 0 评论 -
Sentinel(哨兵)
Sentinel本质上是一个运行在特殊模式下的Redis服务器。其可以监视任意多个主服务器,以及这些主服务器的所有从服务器;当主服务器下线时,自动将从服务器升级为新的主服务器,新的主服务器代替下线服务器继续就收命令请求。 Sentinel模式下关键数据结构 从上面结构可知:sentinel服务器中的Sentinel状态中包含了该sentinel监视的所有主服务器实例(即通过dict *master)。在主服务器实例中,又包含着该主服务器所有从服务器实例(dict *slaves)以及监视该主服务的所有se原创 2021-03-21 17:13:57 · 103 阅读 · 0 评论 -
复制
Redis复制功能分为两个操作: (1)同步(先):将从服务器状态更新至与主服务器当前状态一致。 (2)命令传播(后):将主服务器执行的写指令,发送给从服务器。 当一个服务器,要作为另外一个服务器的从服务器时,需要执行slave of ip:port(主服务器的ip:port)。 旧版本同步的实现 同步过程如下: (1)从服务器向主服务器发送SYNC指令 (2)主服务器收到SYNC指令后,执行BGSAVE指令,生成RDB文件,同时使用一个缓冲区记录现在开始执行的所有写指令。(也就是说bgsave时服务器接原创 2021-03-21 12:00:29 · 137 阅读 · 0 评论 -
事件
IO 多路复用 详细见: link. redis默认使用epoll多路复用函数库。 IO多路复用理解:每一个网络连接都对应一个文件描述符(fd),高效的网络服务器都可以供多个客户端同时连接即产生多个文件描述符,然后单线程不断的去轮询这些描述符,如果有消息就处理。大致代码如下: while(true){ for(fdx in fdA -fdE){ if(fdx有数据) 读取fdx,处理数据; } } select IO多路复用 (1)首先将需要被监听的文件描述符放入数组中—fds[],数组中.原创 2021-03-20 19:09:13 · 107 阅读 · 0 评论 -
Redis持久化
RDB持久化 rdb持久化是将Redis在内存中某一时刻数据库状态(每个数据库中的键值对)保存到磁盘中。 RDB文件创建 SAVE指令 redis > SAVE //执行SAVE指令时,服务器进程会阻塞,直到RDB文件创建 OK def SAVE: rdbSave() //主线程执行rdbSave()函数来创建rdb文件,会阻塞Redis服务器进程,服务器不处理任何请求。 BGSAVE指令 redis>BGSAVE //会派生一个子进程来创建rdb文件,主进原创 2021-03-20 16:55:58 · 62 阅读 · 0 评论 -
设置键的生存时间、过期时间以及过期删除策略
设置生存时间和过期时间 设置生存时间----即让键在指定秒数或毫秒数之后过期 expire key ttl---- expire key 5;即让键在5s后过期 pexpire key ttl ---- pexpire key 6;即让键在6ms之后过期 设置过期时间—即让键在某一时刻过期 expireat key timstamp — expire key 1377257300;让键在1377257300这个时刻过期 pexpireat key timestamp ;以毫秒为单位。(前三个指令都原创 2021-03-20 12:03:43 · 434 阅读 · 0 评论