Redis
文章平均质量分 91
菊头蝙蝠
这个作者很懒,什么都没留下…
展开
-
Redis cluster集群原理与配置
Redis主从复制:数据同步原理一、主从复制二、数据同步全量数据同步增量数据同步服务器 RUN ID复制偏移量 offset环形缓冲区三、何时使用全量还是增量数据同步一、主从复制命令:redis-server --replicaof 127.0.0.1 7001执行该命令后,当前服务器得redis-server就会成为127.0.0.1 7001的从数据库了,使用从数据库可以使得数据更加安全。从数据库具有只读属性,不能写。主数据库要给从数据库同步数据才能使用,下面将介绍同步数据的方式二、数据同步原创 2022-05-12 16:38:56 · 3329 阅读 · 0 评论 -
Redis哨兵模式原理
Redis哨兵模式原理一、哨兵模式二、配置三、检测异常(主观下线)四、客观下线五、故障转移六、使用七、缺点一、哨兵模式哨兵模式是Redis可用性的解决方案;它由一个或多个 sentinel 实例构成 sentinel 系统;该系统可以监视任意多个主库以及这些主库所属的从库;当主库处于下线状态,自动将该主库所属的某个从库升级为新的主库;客户端来连接集群时,会首先连接 sentinel,通过 sentinel 来查询主节点的地址,然后再连接主节点进行数据交互。当主节点发生故障时,客户端会重新向 s原创 2022-05-12 14:52:11 · 4983 阅读 · 0 评论 -
Redis主从模式以及数据同步原理:全量数据同步、增量数据同步
Redis主从模式以及数据同步原理:全量数据同步、增量数据同步一、主从复制二、数据同步1、全量数据同步2、增量数据同步3、服务器 RUN ID4、复制偏移量 offset5、环形缓冲区三、何时使用全量还是增量数据同步Redis有三种集群模式,分别是:主从模式、哨兵模式、Cluster模式主从模式是三种模式中最简单的,在主从复制中分为主数据库(master)和从数据库(slave),若master出现宕机,需要手动配置slave转为master。后来为了高可用提出来哨兵模式,可以选择出slave转为ma原创 2022-05-11 21:58:46 · 2583 阅读 · 0 评论 -
Redis持久化原理以及配置
Redis 持久化aofaof的执行流程redis.conf中配置aofaof持久化的内容是什么?aof的缺点其他aof rewriteaofaof的执行流程1.执行命令2.会判断是否开启aof,3.如果开启的话,就将命令写如aof buffer中4.最后根据策略,将aof buffer中的数据刷入磁盘中刷盘策略是什么?持久化什么内容?这条命令的协议数据如何恢复(具体原理)?加载保存的协议数据,解析协议数据成命令,重新执行这些命令redis.conf中配置aof在redis.con原创 2022-05-10 20:29:12 · 744 阅读 · 1 评论 -
redis7.0源码阅读(五):跳表(skiplist)
redis跳表zslCreateNodezslCreatezslFreeNodezslFreezslGetRank理想跳表与redis中跳表区别zslRandomLevelzslInsertzslDeletezslDeleteNode上图总共有4层,自下往上,分别为level=1,2,3,4typedef struct zskiplist { struct zskiplistNode *header, *tail; unsigned long length; int level原创 2022-05-10 14:07:06 · 331 阅读 · 0 评论 -
redis7.0源码阅读(四):Redis中的IO多线程(线程池)
redis7.0源码阅读(四):Redis中的IO多线程(线程池)一、Redis中的IO多线程原理二、设置io多线程(调试设置)三、Redis中的IO线程池1、读取任务`readQueryFromClient`2、主线程将 待读客户端 添加到Read任务队列(生产者)`postponeClientRead`3、多线程Read IO任务 `handleClientsWithPendingReadsUsingThreads`4、多线程write IO任务(消费者)`handleClientsWithPendin原创 2022-05-09 22:15:07 · 1359 阅读 · 0 评论 -
redis7.0源码阅读(三):哈希表扩容、缩容以及rehash
redis7.0源码阅读(三):哈希表扩容、缩容以及rehash一、哈希冲突二、哈希表扩容1.定位到相应的代码部分2.扩容条件写时复制(copy on write):fork持久化3.扩容大小三、哈希表缩容(resize)1.缩容的条件 `htNeedsResize`2.如何缩容 `dictResize`3.什么时候需要缩容呢? `databasesCron`四、rehash1.为什么需要rehash?2.`dictRehash`3.渐进式rehash4.定时任务触发rehash5.rehash未完成的时候原创 2022-05-08 22:31:25 · 1647 阅读 · 0 评论 -
redis7.0源码阅读(二):redis的基本存储结构
redis7.0源码阅读(一):redis的基本存储结构一、redis的基本存储结构二、数据库`redisDb`三、哈希表`dict`四、哈希数据类型`dictType`五、哈希实体(键值对)`dictEntry`一、redis的基本存储结构内存数据库:redisDb键值对:dict键值对的数据类型:dictType键值对实体:dictEntry二、数据库redisDbtypedef struct redisDb { dict *dict; /* The原创 2022-05-08 21:53:04 · 694 阅读 · 0 评论 -
redis7.0源码阅读(一):源码安装(如何去高效阅读源码)
redis7.0源码阅读--源码安装(如何去高效阅读源码)1.在vscode中打开redis7.0文件目录2.配置task.json3.配置launch.json4.启动5.遇到的一些问题jemalloc/jemalloc.h: No such file or directory阅读源码的方式:通过vscode来进行源码阅读,在redis-server执行的过程中,在想要阅读的部分打上断点,在redis-cli发送命令的时候,就会停在断点上,这样一步步阅读更加合适。首先下载来redis7.0源码官网下原创 2022-05-08 14:41:51 · 1369 阅读 · 0 评论 -
Redis协议与异步方式(redis网络层、pipeline、事务、lua脚本、ACID特性、发布订阅、hiredis实现同步连接与异步连接)
redis 网络层redis只有一个网络io,其他都是内存操作,所以在单线程下性能较高每个连接,可以当作一个队列。对于一个连接而言,是串行执行的(A1A2A3),对于整体而言,是并发执行(比如:A1B1B2A2)如果一定要按照A1A2A3执行,不受其他命令的影响(不想把B1、B2插入中间),就要把A1A2A3构成一个事务mysql中是以B+树为存储结构,redis(kv数据库)中整体是通过hashtable来组织的redis pipeline下图第三个是使用pipleline的方式,更为高效原创 2022-05-08 13:22:01 · 590 阅读 · 0 评论 -
Redis相关命令详解及其原理:Redis基本操作、数据结构以及应用
redisredis中的数据结构redis基本使用打开redis服务端redis客户端连接服务端key-valuehsetlist查看所有的key使用redis的基本步骤stringredis默认有16个数据库redis只能单线程使用,同时只能使用一个数据库,用字典的方式组织起来,而mysql使用b+树组织的redis中的数据结构redis中的string是安全字符串,不会被’\0’隔开redis基本使用打开redis服务端打开redis服务端,redis.conf是服务端的配置文原创 2022-05-05 20:34:33 · 602 阅读 · 0 评论