![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
REDIS
qq_26249609
这个作者很懒,什么都没留下…
展开
-
Redis源码剖析和注释(二十四)--- Redis Sentinel实现(哨兵操作的深入剖析)
Redis Sentinel实现(下)本文是Redis Sentinel实现(上)篇文章的下半部分剖析。主要剖析以下内容:哨兵的使命Redis Sentinel实现下哨兵的使命1 周期性的操作11 建立连接12 发送监控命令13 判断节点的主观下线状态14 判断主节点的客观下线状态15 对主节点执行故障转移151 故障转移开始152 选择一个要晋升的从节点153 使从节...转载 2020-02-24 16:06:52 · 211 阅读 · 0 评论 -
Redis源码剖析和注释(二十三)--- Redis Sentinel实现(哨兵的执行过程和执行的内容)
Redis Sentinel实现(上)Redis Sentinel 介绍和部署请参考Redis Sentinel 介绍与部署sentinel.c文件详细注释:Redis Sentinel详细注释本文会分为两篇分别接受Redis Sentinel的实现,本篇主要将Redis哨兵的执行过程和执行的内容。Redis Sentinel实现上Redis Sentinel 介绍和部署Redi...转载 2020-02-24 14:35:41 · 169 阅读 · 0 评论 -
Redis源码剖析和注释(二十二)--- Redis 复制(replicate)源码详细解析
Redis 复制(replicate)实现复制的介绍Redis为了解决单点数据库问题,会把数据复制多个副本部署到其他节点上,通过复制,实现Redis的高可用性,实现对数据的冗余备份,保证数据和服务的高度可靠性。关于复制的详细配置和如何建立复制,请参考:Redis 复制功能详解 。Redis 复制replicate实现复制的介绍复制的实现1 主从关系的建立2 主从网络连接建立3...转载 2020-02-19 17:09:14 · 371 阅读 · 0 评论 -
Redis源码剖析和注释(二十一)--- 单机服务器实现
Redis 单机服务器实现Redis 服务器Redis服务器负责与客户端建立网络连接,处理发送的命令请求,在数据库中保存客户端执行命令所产生的数据,并且通过一系列资源管理措施来维持服务器自身的正常运转。本次主要剖析server.c文件,本文主要介绍Redis服务器的一下几个实现:命令的执行过程Redis服务器的周期性任务maxmemory的策略Redis服务器的main函数其他的...转载 2020-01-21 11:48:02 · 162 阅读 · 0 评论 -
Redis 学习笔记(十二)Redis 复制功能详解
Redis 复制(Replication)复制介绍分布式数据库为了获取更大的存储容量和更高的并发访问量,会将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上。Redis为了解决单点数据库问题,会把数据复制多个副本部署到其他节点上,通过复制,实现Redis的高可用性,实现对数据的冗余备份,保证数据和服务的高度可靠性。复制的建立建立复制的配置方式有三种。在red...转载 2020-01-21 11:11:34 · 144 阅读 · 0 评论 -
Redis源码剖析和注释(二十)--- 网络连接库剖析(client的创建/释放、命令接收/回复、Redis通信协议分析等)
Redis 网络连接库剖析Redis网络连接库介绍Redis网络连接库对应的文件是networking.c。这个文件主要负责客户端的创建与释放命令接收与命令回复Redis通信协议分析CLIENT 命令的实现我们接下来就这几块内容分别列出源码,进行剖析。客户端的创建与释放redis 网络链接库的源码详细注释2.1客户端的创建Redis 服务器是一个同时与多个客户端建立连...转载 2020-01-20 11:19:27 · 378 阅读 · 0 评论 -
Redis源码剖析和注释(十九)--- Redis 事件处理实现
Redis 事件处理实现Redis事件介绍Redis服务器是一个事件驱动程序。下面先来简单介绍什么是事件驱动。所谓事件驱动,就是当你输入一条命令并且按下回车,然后消息被组装成Redis协议的格式发送给Redis服务器,这就会产生一个事件,Redis服务器会接收该命令,处理该命令和发送回复,而当你没有与服务器进行交互时,那么服务器就会处于阻塞等待状态,会让出CPU从而进入睡眠状态,当事件触...转载 2020-01-19 16:52:17 · 182 阅读 · 0 评论 -
Redis源码剖析和注释(十八)--- Redis AOF持久化机制
Redis AOF持久化机制AOF持久化介绍Redis中支持RDB和AOF这两种持久化机制,目的都是避免因进程退出,造成的数据丢失问题。RDB持久化:把当前进程数据生成时间点快照(point-in-time snapshot)保存到硬盘的过程,避免数据意外丢失。AOF持久化:以独立日志的方式记录每次写命令,重启时在重新执行AOF文件中的命令达到恢复数据的目的。Redis RDB持久化...转载 2020-01-17 11:29:36 · 265 阅读 · 0 评论 -
Redis源码剖析和注释(十七)--- RDB持久化机制
Redis RDB持久化机制RDB的介绍因为Redis是内存数据库,因此将数据存储在内存中,如果一旦服务器进程退出,服务器中的数据库状态就会消失不见,为了解决这个问题,Redis提供了两种持久化的机制:RDB和AOF。本篇主要剖析RDB持久化的过程。RDB持久化是把当前进程数据生成时间点快照(point-in-time snapshot)保存到硬盘的过程,避免数据意外丢失。1.1 RD...转载 2020-01-16 11:46:23 · 191 阅读 · 0 评论 -
Redis源码剖析和注释(十六)---- Redis输入输出的抽象(rio)
Redis 输入输出的抽象(rio)概述rio是Redis对IO操作的一个抽象,可以面向不同的输入输出设备,例如一个缓冲区IO、文件IO和socket IO。一个rio对象提供一下四个方法:read:读操作write:写操作tell:读写的偏移量flush:冲洗缓冲区操作使用C语言,实现面向对象的思想。rio对象的抽象rio结构体如下:rio.c 和 rio.h 文件详细...转载 2020-01-16 10:36:56 · 145 阅读 · 0 评论 -
Redis源码剖析和注释(十五)---- 通知功能实现与实战 (notify)
Redis 通知功能实现与实战通知功能介绍客户端可以通过 订阅与发布功能(pub/sub)功能,来接收那些以某种方式改动了Redis数据集的事件。目前Redis的订阅与发布功能采用的是发送即忘(fire and forget)的策略,当订阅事件的客户端断线时,它会丢失所有在断线期间分发给它的事件。通知的类型通知功能的类型分别为:键空间通知(key-space notificat...转载 2020-01-15 11:38:09 · 719 阅读 · 0 评论 -
Redis源码剖析和注释(十四)---- Redis 数据库及相关命令实现(db)
Redis 数据库及相关命令实现数据库管理命令数据库管理的命令如下表格所示:redis keys命令详解数据库的实现2.1数据库的结构typedef struct redisDb { // 键值对字典,保存数据库中所有的键值对 dict *dict; /* The keyspace for this DB */ // 过期字典...转载 2020-01-14 15:27:04 · 199 阅读 · 0 评论 -
Redis源码剖析和注释(十三)--- 有序集合类型键实现(t_zset)
有序集合类型键实现有序集合命令Redis有序集合命令如下表所示:Redis 有序集合命令详解有序集合类型实现有序集合对象的底层实现类型如下表:Redis 跳跃表源码剖析和注释Redis 字典结构源码剖析和注释Redis 压缩列表源码剖析和注释一个有序集合对象的结构如下:typedef struct redisObject { //对象的数据类型:OBJ_ZSET...转载 2020-01-14 11:40:05 · 174 阅读 · 0 评论 -
Redis源码剖析和注释(十二)--- 集合类型键实现(t_set)
Redis 集合类型键实现(t_set)集合命令介绍redis中所有的集合命令如下:Redis集合命令详解集合类型的实现之前在redis对象系统源码剖析和注释中提到,一个集合类型的对象的编码有两种,分别是OBJ_ENCODING_HT和OBJ_ENCODING_INTSET。关于集合类型底层的两种数据结构的源码剖析和注释,请看下面的博文。Redis 字典结构源码剖析和注...转载 2020-01-14 11:00:06 · 137 阅读 · 0 评论 -
Redis源码剖析和注释(十一)--- 哈希键命令的实现(t_hash)
Redis 哈希键命令实现(t_hash)哈希命令介绍Redis 所有哈希命令如下表所示:Redis 哈希命令详解哈希类型的实现之前在redis对象系统源码剖析和注释中提到,一个哈希类型的对象的编码有两种,分别是OBJ_ENCODING_ZIPLIST和OBJ_ENCODING_HT。redis 压缩列表源码剖析和注释redis 字典结构源码剖析和注释但是默认创建的哈希类型的...转载 2020-01-14 09:40:46 · 179 阅读 · 0 评论 -
利用Redis Sorted Set实现排行榜功能
Redis 有序集合(sorted set)一、向集合中添加(多个)元素和元素分值ZADD key score1 member1 [ score2 member2]1. ZADD runoobkey 1 redis2. ZADD runoobkey 2 mysql 3 java二、遍历集合ZRANGE XXX 0 -1 WITHSCORES1三、 获取有序集合的成员数zca...原创 2019-12-16 17:41:44 · 722 阅读 · 0 评论 -
详解redis的bitmap应用
bitmap的原理、用法原理8bit = 1Bbitmap就是通过最小的单位bit来进行0或者1的设置,表示某个元素对应的值或者状态。一个bit的值,或者是0,或者是1;也就是说一个bit能存储的最多信息是2。用法setBit说明:给一个指定key的值得第offset位 赋值为value。参数:key offset value: bool or int (1 or 0)返回值:...原创 2019-12-16 15:16:28 · 4539 阅读 · 2 评论 -
Redis源码剖析和注释(七)--- 快速列表(quicklist)
https://blog.csdn.net/men_wen/article/details/70229375Redis 快速列表(quicklist)介绍quicklist结构是在redis 3.2版本中新加的数据结构,用在列表的底层实现。通过列表键查看一下:redis 列表键命令详解127.0.0.1:6379> RPUSH list 1 2 5 1000"redis"...转载 2019-01-16 14:02:06 · 1209 阅读 · 1 评论 -
Redis源码剖析和注释(六)--- 压缩列表(ziplist)
https://blog.csdn.net/men_wen/article/details/70176753Redis 压缩列表(ziplist)介绍压缩列表(ziplist)是哈希键的底层实现之一。它是经过特殊编码的双向链表,和整数集合(intset)一样,是为了提高内存的存储效率而设计的。当保存的对象是小整数值,或者是长度较短的字符串,那么redis就会使用压缩列表来作为哈希键的实...转载 2019-01-16 11:09:16 · 185 阅读 · 0 评论 -
RedisDesktopManager连接不上redis
如果一下方法还不行 要config set requirepass 123456 设置密码(linux命令不熟就直接在虚拟机上操作文件吧,简单粗暴)一、注释redis.conf文件中的:bind 127.0.0.1(在一段文字之前打#号为注释) 二、设置密码 为了安全一定要设,而且这里如果不绑定ip也不设密码的话,redis是默认保护模式,只能本虚拟机访问,不允许其他ip访问,本...转载 2018-08-14 15:10:24 · 233 阅读 · 0 评论 -
Redis 学习笔记(二)之字符串类型命令
Redis 学习笔记(二)字符串类型字符串类型是redis中最基本的数据类型,他能存储任何形式的字符串,包括二进制数据。一个字符串类型键允许的数据的最大容量是512MB。命令SET 和 GET类似于读和写变量SET key value [EX seconds] [PX milliseconds] [NX|XX]GET keySET命令的参数:EX seconds:以**秒**...转载 2019-01-04 14:23:51 · 95 阅读 · 0 评论 -
Redis 学习笔记(三)之散列类型命令
Redis 散列类型命令散列类型hash相关的配置在redis.conf文件中,有关hash的配置如下hash-max-ziplist-entries 512 //最大字节说为512字节hash-max-ziplist-value 64 //最多字段数为64hash的介绍散列类型(hash)的键值是一种字典结构,redis也是采用字典结构已键值对的形式存储数据,其存...转载 2019-01-04 14:42:57 · 153 阅读 · 0 评论 -
Redis学习笔记(四) 之KEY相关命令
https://blog.csdn.net/men_wen/article/details/61222069Redis学习笔记(四) 之KEY相关命令KEY 相关命令KEYS查找所有符合给定模式pattern(正则表达式)的 key 。KEYS pattern127.0.0.1:6379> KEYS * 1) "say" 2) "res" 3) "userInfo2"...转载 2019-01-04 14:51:49 · 92 阅读 · 0 评论 -
Redis 学习笔记(五)之列表类型
https://blog.csdn.net/men_wen/article/details/61429145Redis 学习笔记(五)之列表类型介绍列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段,因为其内部实现使用双向链表(double linked list)实现的。与散列类型相同,列表类型最多能容纳2^32 -1 个元素...转载 2019-01-04 15:45:59 · 91 阅读 · 0 评论 -
Redis 学习笔记(六)之 set无序集合
https://blog.csdn.net/men_wen/article/details/61916268Redis 学习笔记(六)之 set无序集合介绍一个集合类型可以存储最多2^32 -1 个字符串集合类型在redis内部使用值为空的散列表(hash table)实现,所以集合中的加入或删除元素等时间复杂度为O(1)。集合具有元素唯一性。set集合命令SADD添加一个或...转载 2019-01-04 16:57:11 · 94 阅读 · 0 评论 -
Redis 学习笔记(七)之 有序集合
https://blog.csdn.net/men_wen/article/details/61920981Redis 学习笔记(七)之 有序集合1.介绍在集合类型的基础上,有序集合类型为集合中的每个元素都关联了一个分数,使得在完成插入、删除的集合类型的操作时,还能够获得分数最高(或最低)的前N个元素等与分数有关的操作。集合元素具有唯一性,但是分数可以相同。2. 比较有序集合类型和...转载 2019-01-04 17:34:30 · 121 阅读 · 0 评论 -
Redis源码剖析和注释(一)---链表结构
https://blog.csdn.net/men_wen/article/details/69396550Redis源码剖析—链表结构redis中的链表在redis中链表的应用非常广泛,例如列表键的底层实现之一就是链表。而且,在redis中的链表结构被实现成为双向链表,因此,在头部和尾部进行的操作就会非常快。通过列表键的命令感受一下双向链表:列表键命令详解127.0.0.1:6...转载 2019-01-07 09:37:45 · 284 阅读 · 3 评论 -
Redis源码剖析和注释(八)--- 对象系统(redisObject)
Redis 对象系统介绍redis中基于双端链表、简单动态字符串(sds)、字典、跳跃表、整数集合、压缩列表、快速列表等等数据结构实现了一个对象系统,并且实现了5种不同的对象,每种对象都使用了至少一种前面的数据结构,优化对象在不同场合下的使用效率。双端链表源码剖析和注释简单动态字符串(SDS)源码剖析和注释字典结构源码剖析和注释跳跃表源码剖析和注释整数集合源码剖析和注释压缩列表...转载 2019-01-17 17:06:04 · 144 阅读 · 0 评论 -
Redis源码剖析和注释(二)--- 简单动态字符串
Redis 简单动态字符串1.介绍Redis兼容传统的C语言字符串类型,但没有直接使用C语言的传统的字符串(以’\0’结尾的字符数组)表示,而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的对象。简单动态字符串在Redis数据库中应用很广泛,例如:键值对在底层就是由SDS实现的。在redis种,有一种数据类型叫string类型,而string类型简单...转载 2019-01-07 14:12:38 · 186 阅读 · 0 评论 -
Redis源码剖析和注释(九)--- 字符串命令的实现(t_string)
https://blog.csdn.net/men_wen/article/details/70325566Redis 字符串键的实现(t_string)字符串命令介绍redis中的所有字符串命令如下:字符串类型命令详解字符串命令的实现字符串命令底层数据结构为 简单动态字符串SDS 。对于字符串命令,无论是命令本身还是参数,都是作为成一个对象对待的。关于redis的对象系统,请参...转载 2019-01-17 17:54:41 · 167 阅读 · 0 评论 -
Redis源码剖析和注释(十)--- 列表键命令实现(t_list)
https://blog.csdn.net/men_wen/article/details/70551119Redis 列表类型命令实现(t_list)1.列表类型命令介绍redis中所有列表类型的命令如下:列表类型命令详解2. 列表类型的实现2.1 列表类型之前在剖析redis对象系统(3.2 版本)的实现时,我们得出列表类型的对象的底层实现的数据结构是快速列表(OBJ_ENC...转载 2019-01-17 18:17:04 · 181 阅读 · 0 评论 -
Redis源码剖析和注释(三)--- Redis 字典结构
Redis 字典结构介绍字典又称为符号表(symbol table)、关联数组(associative array)或映射(map),是一种用于保存键值对(key-value pair)的抽象数据结构。例如:redis中的所有key到value的映射,就是通过字典结构维护,还有hash类型的键值。通过redis中的命令感受一下哈希键。127.0.0.1:6379> HSET us...转载 2019-01-07 17:43:21 · 220 阅读 · 0 评论 -
Redis源码剖析和注释(四)--- 跳跃表(skiplist)
https://blog.csdn.net/men_wen/article/details/70040026Redis 跳跃表(skiplist)跳跃表(skiplist)介绍定义:跳跃表是一个有序链表,其中每个节点包含不定数量的链接,节点中的第i个链接构成的单向链表跳过含有少于i个链接的节点。跳跃表支持平均O(logN),最坏O(N)复杂度的节点查找,大部分情况下,跳跃表的效率可以...转载 2019-01-09 15:44:23 · 181 阅读 · 0 评论 -
Redis源码剖析和注释(五)--- 整数集合(intset)
https://blog.csdn.net/men_wen/article/details/70145752Redis 整数集合(intset)介绍整数集合(intset)是集合键底层实现之一。集合键另一实现是值为空的散列表(hash table),虽然使用散列表对集合的加入删除元素,判断元素是否存在等等操作时间复杂度为O(1),但是当存储的元素是整型且元素数目较少时,如果使用散列表存...转载 2019-01-15 17:01:13 · 117 阅读 · 0 评论 -
PHP-redis中文文档
phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系很有用;以下是redis官方提供的命令使用技巧:下载地址如下:https://github.com/owlient/phpredis(支持redis 2.0.4)Redis::__construct构造函数 $redis = new Redis();connect, open 链接red...转载 2018-08-09 16:19:35 · 699 阅读 · 0 评论