Redis
文章平均质量分 89
___是六月呀~
一只很菜的菜鸟在努力学java
展开
-
Redis数据结构
SDS:简单动态字符串数据结构:杜绝缓存溢出:当需要对SDS进行修改时,会先检查SDS的空间是否满足要求,如果不能,就会自动将SDS的空间扩展至所需大小,在执行修改工作。内存分配策略3.1 空间预分配(用于优化SDS的增长操作)如果SDS空间需要扩展,redis不仅会给SDS分配所需的空间,还会额外分配未使用的空间。未使用空间的大小由SDS的长度决定。如果SDS长度小于1MB,则未使用空间free = 使用空间len;如果大于1MB,则每次分配1MB的未使用空间。3.2 惰性空间释放(用于原创 2021-08-02 10:27:37 · 73 阅读 · 0 评论 -
Redis设计与实现——Redis的发布与订阅
目录订阅频道——SUBSCRIBE模式订阅——PSUBCRIVE发送消息查看订阅信息:订阅频道——SUBSCRIBEstruct redisServer{ ... dict *pubsub_channels}字典的键是某个被订阅的频道,字典的值是一个链表,记录所有订阅这个频道的客户端。订阅命令 SUBSCRIBE退订命令:UNSUBSCIRBE如果某个频道对应的值为NULL,即没有客户端了,就会被删除这个键。模式订阅——PSUBCRIVEstrcut redisServer{原创 2021-07-08 15:38:26 · 120 阅读 · 0 评论 -
Redis设计与实现——Redis集群
集群相关概念节点槽指派键与槽的关联重新分片ASK错误相关概念集群:由一个或多个节点组成的,是Redis提供的分布式数据库方案。集群通过分片来进行数据共享,并提供复制和故障转移功能。节点:一个集群模式下的Redis服务器。槽:整个集群数据库分为16384个槽节点节点通过握手和响应握手来组成一个集群通过CLUSTER NODES 可以查看集群节点信息。节点启动Redis服务器在启动时根据 cluster-enable来决定是否开启集群模式。相较于普通的服务器,节点会将集群模式下需要的数据原创 2021-07-08 14:54:30 · 279 阅读 · 0 评论 -
Redis设计与实现——Redis Sentinel(哨兵)
概念由一个或者多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器。并在被监视的主服务器进入下线状态时,自动将下线的主服务器属下的某个从服务器升级为新的主服务器,并由这个新的主服务代替已下线的主服务器继续处理命令请求。如果已下线的前主服务回复上线,则会被降级这新的主服务器的从服务器。一个Sentinel可以监视多个主服务器,一个主服务器也可以被多个Sentinel监视。Sentinel的初始化初始化服务器:Sentinel本质上是一个特殊模原创 2021-07-02 16:26:41 · 192 阅读 · 0 评论 -
Redis设计与实现——Redis主从复制
主从复制概念复制实现旧的复制实现(2.8以前)新的复制实现复制的实现概念主从服务器:假设有两台服务器,分别为:127.0.0.1:12345和127.0.0.1:6379127.0.0.1:12345> SLAVEOF 127.0.0.1:6379OK通过SLAVEOF命令,使得127.0.0.1:12345成为127.0.0.1:6379从服务器。即此时:从服务器(slave):127.0.0.1:12345主服务器(master):127.0.0.1:63792. 从服务器复原创 2021-07-01 15:04:48 · 72 阅读 · 0 评论 -
Redis设计与实现——Redis服务器
服务器命令请求过程具体实现过程serverCron函数初始化服务器命令请求过程以SET命令为例客户端向服务器发送:SET key value;——> 服务端接收并处理请求,并产生OK命令;——> 服务端向客户端发送命令回复OK;——> 客户端接收并打印具体实现过程客户端发送请求命令服务器执行命令服务端将命令回复发送给客户端serverCron函数serverCron函数默认每隔100ms执行一次更新服务器时间缓存struct redisSe原创 2021-06-30 15:32:15 · 85 阅读 · 0 评论 -
Redis设计与实现——Redis客户端
客户端客户端通用属性普通客户端的创建于关闭伪客户端客户端struct redisServer{ …… list *clients; ……}通用属性typedef struct redisClient{ …… //通用属性 int fd robj *name int flags sds querybuf robj **argv int argc struct redisCommand *cmd char buf[REDIS_REPLY_CHUNK原创 2021-06-29 16:44:22 · 179 阅读 · 0 评论 -
Redis设计与实现——Redis 事件
事件文件事件概念文件事件处理器文件事件的类型文件事件处理器时间事件分类组成实例:serverCon函数事件的调度与执行文件事件概念Redis服务器通过套接字与客户端(或者其他Redis服务器)进行链接,而文件事件就是服务器对套接字操作的抽象。服务器与客户端(或其他Redis服务器)的通信会产生相应的文件事件,而服务器则通过监听并处理这些事来完成一系列网络通信操作。文件事件处理器用于处理网络事件,以单线程方式运行。组成部分:套接字 + I/O多路复用程序 + 文件事件分派器 + 事件处理器。I/原创 2021-06-29 15:23:25 · 88 阅读 · 0 评论 -
Redis设计与实现——Redis 持久化
持久化Redis持久化概念:Redis持久化概念:什么是持久化:因为Redis是内存数据库,它将自己的数据库状态存储在内存中,如果进程一旦退出aaa原创 2021-06-28 15:57:04 · 69 阅读 · 0 评论 -
Redis设计与实现——Redis 数据库知识点整理
Redis 数据库知识点整理Redis 数据库整理1. Redis服务器默认创建16个数据库2. 切换数据库3. 数据库中值得保存——以键值对形式保存4. 读写键空间时的维护操作5. 键的生存时间和过期时间6.过期键的判定:7.过期键的删除策略Redis 数据库整理1. Redis服务器默认创建16个数据库db 是一个数组,保存服务器中所有的数据库dbnum 表示需要创建的数据库数量2. 切换数据库SELECT 2 //表示选择的数据库这时,clientServer中的db就会指向db[原创 2021-06-25 16:56:12 · 167 阅读 · 0 评论 -
Redis学习一
Redis学习Redis的作用:用作缓存:与Memcached相比,首先Redis支持的数据类型更丰富;第二Redis支持数据持久化;第三:Reids有灾难恢复机制;第四:Memcached 过期数据的删除策略只用了惰性删除,而 Redis 同时使用了惰性删除与定期删除。事件发布或订阅高速队列Redis数据结构:基本数据类型:String ; Hash ; Set ; List ; SortedSet;bitmap其他: HyperLogLog; Geo; Pub/SubRedis Mo原创 2021-06-08 16:19:58 · 73 阅读 · 0 评论