
Redis
文章平均质量分 87
XP-Code
这个作者很懒,什么都没留下…
展开
-
Redis 哨兵模式和集群模式中的选主流程
文章目录一、Paxos 算法二、Raft 算法三、哨兵模式的选主流程四、集群模式的选主流程一、Paxos 算法Paxos 算法是一种分布式一致性算法,所谓的分布式一致性算法就是在分布式系统中,可以保证多个节点中数据的值是一致的的算法。为什么需要一致性数据不能存在单个节点(主机)上,否则可能出现单点故障。多个节点(主机)需要保证具有相同的数据。一致性算法就是为了解决上面两个问题。Paxos 是一种强一致性算法,又可以分为:Basic PaxosMulti Paxos二、Raft 算原创 2021-10-03 10:38:18 · 1746 阅读 · 1 评论 -
Redis 中的底层数据结构:SkipList
SkipList 是zset的底层实现之一,它的数据结构定义如下:typedef struct zskiplistNode { //层 struct zskiplistLevel { //前进指针 struct zskiplistNode *forward; //跨度 unsigned int span; } level[]; //后退指针 struct zskiplistNode *backward; //分值 double score; //成员对象 robj *原创 2021-04-21 12:39:09 · 513 阅读 · 0 评论 -
Redis 主从复制功能和部分重同步的实现
旧版复制功能在处理断线复制情况时,会重复复制之前已经复制过的部分数据,造成效率低下问题。Redis从2.8版本开始,使用PSYNC命令替代了旧版的SYNC命令来执行复制操作。PSYNC命令具有完整重同步(full synchronization)和部分重同步两种模式(partial synchronization):完整重同步:处理初次复制情况,从服务器(Slave)先让主服务器(Master)创建并发送RDB文件,然后再将主服务器的缓冲区里的命令发送给从服务器,以此完成同步;部分重同步:用于处理断原创 2021-04-13 18:47:00 · 508 阅读 · 0 评论 -
Redis 中的文件事件
1. 事件Redis服务器是一个事件驱动程序,服务器需要处理以下两种事件:文件事件(file event):Redis服务器通过套接字与客户端(或其他Redis服务器)连接,而文件事件就是服务器对套接字操作的抽象。服务器与客户端(或其他Redis服务器)的通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络通信操作。时间时间(time event):Redis服务器中的一些操作需要在给定的时间点执行,而时间事件就是Redis对这类操作的抽象。2. 文件事件处理器Redis原创 2021-04-12 11:32:35 · 495 阅读 · 1 评论 -
Redis的AOF、RDB和复制功能对过期键的处理
一、过期键1. 设置键的生存时间或过期时间通过EXPIRE命令为键设置过期时间,单位是秒:redis> SET key valueOKredis> EXPIRE key 5(integer) 1redis> GET key //5秒内"value"redis> GET key //5秒后(nil)还可以通过PEXPIRE设置过期时间,单位是毫秒。除了这种设置剩余存活时间的方式,还可以通过EXPIREAT或者PEXPIREAT为键设置具体的过期时间。redi原创 2021-04-11 17:54:51 · 970 阅读 · 0 评论 -
Redis 字典rehash过程
rehash原创 2021-04-04 06:25:23 · 1640 阅读 · 0 评论 -
Redis 简单动态字符串底层实现
SDS原创 2021-04-04 06:23:57 · 197 阅读 · 0 评论 -
Redis 实现限流器的三种方法
方法一:基于Redis的setnx的操作我们在使用Redis的分布式锁的时候,大家都知道是依靠了setnx的指令,在CAS(Compare and swap)的操作的时候,同时给指定的key设置了过期实践(expire),我们在限流的主要目的就是为了在单位时间内,有且仅有N数量的请求能够访问我的代码程序。所以依靠setnx可以很轻松的做到这方面的功能。比如我们需要在10秒内限定20个请求,那么我们在setnx的时候可以设置过期时间10,当请求的setnx数量达到20时候即达到了限流效果。代码比较简单就不原创 2020-11-28 09:38:20 · 3538 阅读 · 1 评论 -
单机Redis实现分布式锁
思路先拿 setnx 来争抢锁,抢到之后,再用 expire 给锁加一个过期时间防止锁忘记了释放。但是如果在 setnx 之后执行 expire之前进程意外 crash 或者要重启维护了,那会怎么样?这个锁就永远得不到释放了。set 指令有非常复杂的参数,可以同时把 setnx 和expire 合成一条指令来用的。package com.xp.lock;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;原创 2020-10-17 16:37:37 · 235 阅读 · 0 评论