17 redis
文章平均质量分 90
redis
教练、我想打篮球
这个作者很懒,什么都没留下…
展开
-
27 redis 的 sentinel 集群
就我们这里的场景, 挂掉了目前的 master 节点 redis_8002, 然后 redis_8001, redis_8003 的 slave_priority, slave_repl_offset 均相同, 然后就是根据 runId 进行选择了。哨兵的主要作用是 检测 redis 主从集群中的 master 是否挂掉, 单个哨兵节点识别 master 下线为主管下线, 超过 quorum 个 哨兵节点 认为 master 挂掉, 识别为 客观下线。原创 2023-12-22 11:46:09 · 1357 阅读 · 0 评论 -
26 redis 中 replication/cluster 集群中的主从复制
我们这里首先来看 redis 这边实现比较复杂的 replication集群模式我们这里主要关注的是 redis 这边的主从同步的相关实现这边相对比较简单, 我们直接基于 cluster集群模式 进行调试比如这里 master 是 redis_7002, slave 是 redis_7005然后 这里是 master 这边直接同步 相关命令到各个 slave然后这里是在 server.call:3765 进行命令存储到 backlog, aof, 以及同步发送到 slave。原创 2023-12-16 12:29:55 · 1098 阅读 · 0 评论 -
25 redis 中 cluster 集群的工作模式
然后 客户端这边 set, get 的时候, 先根据 key 计算对应存储的 slot, 然后 服务器这边响应 MOVED + 目标机器 给客户端, 然后客户端这边 重新连接目标机器, 然后 将原有的命令发送到 目标机器上面。客户端这边的处理就是, 向服务器发送命令, 如果服务器正常响应, 则处理正常, 如果服务器返回 MOVED + 目标机器, 则连接目标机器, 然后发送命令。所以 这个集群其实就是 转发 + 几对主从, 来实现的集群, 然后 主从本身提供了服务的高可用, 多备份, 完整性, 一致性。原创 2023-12-15 12:50:07 · 462 阅读 · 0 评论 -
24 连接 redis 集群 Illegal character in scheme name at index 0: []r[]e[]d[]i[]s[]:[]/[]/[]:[]7[]0[]0[]6
这也是之前碰到的一个问题, 使用 redisson 连接 redis 集群, 然后 报错如下这里 来大致看一下这个问题这个问题 大概是由于 集群未搭建成功导致的一个问题错误信息如下根据上下文的情况可以知道, 这里是处理 cluster nodes 的结果然后 cluster nodes 响应回来的数据如下, 在 params[1] 中是具体的主机端口连接信息然后我们来看一下 异常情况可以看到 cluster nodes 响应的节点信息 貌似存在问题, 没有 ip 的信息。原创 2023-12-08 17:48:40 · 746 阅读 · 0 评论 -
23 redis 中的中文字符串是以什么编码存储的?
前言呵呵 最近同事问到了这样的一个问题因为在实际的场景中似乎是出现了乱码问题, 他问道 "redis 里面字符串默认是按照什么编码存放的? "呵呵 我一愣, 字节 经过 编码 转换后就是我们常说的 字符然后 映像中 sds 中也没有提到 编码相关阿?呵呵 因此当时 记录下了 这个问题, 今天来看一看这个问题 也可以扩展到 其他的 客户端 和 服务器 之间的数据交互我们这里将着重从 服务端的编码 和 多种不同的客户端 来看一下 客户端的编码处理"你好"...原创 2021-12-31 20:09:21 · 3942 阅读 · 0 评论 -
22 关于 RedissonLock
前言相关介绍主要围绕着 一种常用的分布式锁的实现 RedissonLock呵呵 一种常见的分布式锁, 但是 从工作至今用到的还不是很多吧, 刚好最近 有一些场景需要这方面的知识重新回来梳理一下 这块的知识, 关于这个RedissonLock 很久之前我是看过的, 大概是 17 年的样子吧, 不过 当时没有梳理成文档的形式呵呵 如今再回来看看, 还是稍微有一些成本以下测试用例基于jedis 3.5.2 + redis-6.2.0测试用例/** ...原创 2021-10-02 17:56:50 · 706 阅读 · 0 评论 -
21 pipeline 相关操作
前言相关介绍主要围绕着 redis里面的 pipeline 相关特性如下常用的命令来自于我们常见的教程 :https://www.runoob.com/redis/redis-pipelining.html本文的相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/以下测试用例基于jedis 3.5.2redis pipeline 机制这是基于 redis 的交互协议, 也就是一次 tcp 请求 和 响应的过程中传...原创 2021-09-25 16:19:14 · 418 阅读 · 0 评论 -
20 发布订阅 相关操作
前言相关介绍主要围绕着 redis里面的发布订阅相关特性如下常用的命令来自于我们常见的教程 :https://www.runoob.com/redis/redis-pub-sub.html本文的相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/redis 发布订阅机制订阅 redis-cli 这边订阅了给定的 channel 或者 channelList 或者 channelPattern 或者 channelPatte...原创 2021-09-19 18:51:29 · 177 阅读 · 0 评论 -
19 事务 相关操作
前言相关介绍主要围绕着 redis里面的事务相关特性如下常用的命令来自于我们常见的教程 :https://www.runoob.com/redis/redis-transactions.html本文的相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/redis 事务机制redis 的事务机制相对来说实现的比较简单, 也和我们常见的 数据库的相关事务是存在的较大的差异执行方式大概是如下 : 先执行 multi 启动一个事...原创 2021-09-11 21:25:02 · 395 阅读 · 0 评论 -
18 redis-cli 的启动
前言相关介绍主要围绕着 redis-cli 服务的启动相关redis-cli的启动, 是执行 redis-cli.c 的 int main(int argc, char **argv), 我们这里看的是常用的repl 的情况下的服务的启动流程本文的相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/初始化服务配置这里主要是初始化 redis-cli 的默认配置, 如果不带任何参数的话, 会使用这些默认配置...原创 2021-09-05 18:02:20 · 1140 阅读 · 0 评论 -
17 redis-server 的启动
前言相关介绍主要围绕着 redis 服务的启动相关redis-server 的启动, 是执行 server.c 的 int main(int argc, char **argv), 我们这里看的是 standalone 的情况下的服务的启动流程本文的相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/初始化服务配置初始化 随机种子, 初始化 hashseed, 初始化服务器的配置[server.xxx 系列], 记录命令行参数...原创 2021-08-28 19:37:14 · 6343 阅读 · 0 评论 -
16 zset 相关操作
前言相关介绍主要围绕着如下的一些常用的命令, 来看看 zset 相关操作的具体api如下常用的命令来自于我们常见的教程 :https://www.runoob.com/redis/redis-sorted-sets.html本文的相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/数据结构当 zset 中的元素数量小于zset_max_ziplist_entries(默认为 128), 并且每一个元素长度都小于zset_m...原创 2021-08-21 20:01:03 · 563 阅读 · 0 评论 -
15 set 相关操作
前言相关介绍主要围绕着如下的一些常用的命令, 来看看 hash 相关操作的具体api如下常用的命令来自于我们常见的教程 :https://www.runoob.com/redis/redis-hashes.html本文的相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/数据结构如果 value 均可以使用 longlong 来表示, 则使用 intset 来存储数据否则使用 dict 来存储数据SAD...原创 2021-08-14 22:13:01 · 422 阅读 · 0 评论 -
14 list 相关操作
前言相关介绍主要围绕着如下的一些常用的命令, 来看看 hash 相关操作的具体api如下常用的命令来自于我们常见的教程 :https://www.runoob.com/redis/redis-hashes.html本文的相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/数据存储使用的 quicklist 来存储的数据BLPOP key1 [key2] timeout - 执行 blpop list 20...原创 2021-08-07 20:00:03 · 116 阅读 · 0 评论 -
13 hash 相关操作
前言相关介绍主要围绕着如下的一些常用的命令, 来看看 hash 相关操作的具体api如下常用的命令来自于我们常见的教程 :https://www.runoob.com/redis/redis-hashes.html本文的相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/数据存储当数据元素小于等于hash_max_ziplist_entries(默认为512) 的时候使用的是 ziplist 来存储数据超过了has...原创 2021-07-31 19:51:52 · 132 阅读 · 0 评论 -
12 string 相关操作
前言相关介绍主要围绕着如下的一些常用的命令, 来看看 字符串相关操作的具体api如下常用的命令来自于我们常见的教程 :https://www.runoob.com/redis/redis-strings.html本文的相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/SET key value - 执行 set name jerry ex 100 xx这里可以看出的是 参数的数量要求大于等于 3个, set 里面...原创 2021-07-24 20:40:39 · 278 阅读 · 2 评论 -
11 key 相关操作
前言相关介绍主要围绕着如下的一些常用的命令, 来看看 key 相关操作的具体api如下常用的命令来自于我们常见的教程 :https://www.runoob.com/redis/redis-keys.html本文的相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/DEL key...原创 2021-07-18 16:32:31 · 310 阅读 · 1 评论 -
10 基本说明
前言关于 redis 的一些基本的代码层面上的约束关于一些规范中介绍的东西, 我们这里可以从代码层面上来直观的了解这些东西本文的相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/高级数据结构这里的数据类型指的是给用户用到的这些数据类型, 也就是我们常用的 STRING, HASH, LIST, SET, SORTEDSETRedis provides data structures such as strings, h...原创 2021-07-11 23:11:29 · 183 阅读 · 2 评论 -
08 关于 skiplist
前言关于 redis 的数据结构 skiplist相关介绍主要围绕着如下测试用例, 来看看 skiplist 的存储, 以及 相关的 api本文的 skiplist 相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/单元测试//// Created by Jerry.X.He on 2021/3/4.//#include<iostream>#include "../libs/util.h"using...原创 2021-06-28 21:00:50 · 186 阅读 · 4 评论 -
07 关于 quicklist
前言关于 redis 的数据结构 quicklist相关介绍主要围绕着如下测试用例, 来看看 quicklist 的存储, 以及 相关的 api本文的 quicklist 相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/测试用例//// Created by Jerry.X.He on 2021/3/4.//#include<iostream>#include "../libs/sds.h"#inc...原创 2021-06-19 22:43:12 · 267 阅读 · 0 评论 -
09 关于 lzf 压缩
前言在拷贝前面的这一系列的数据结构的代码的时候, 偶然看到了一个 lzf, 呵呵 稍微看了看本文的 lzf 相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/一个简单并且快速的字符压缩算法比较常规的通过引用计算来压缩字符串的算法关于 lzf 这套代码, redis 项目中也有,liblzf 的官方文档上面的下载也有测试用例//// Created by Jerry.X.He on 2021/2/25...原创 2021-07-03 21:48:43 · 2667 阅读 · 2 评论 -
06 关于 dict
前言关于 redis 的数据结构 dict[hashtable]相关介绍主要围绕着如下测试用例, 来看看 dict[hashtable]的存储, 以及 相关的 api本文的 dict[hashtable]相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/dict[hashtable]这个数据结构映射到 jdk 这边 类似于 java.util.HashMap/HashTable很多操作 也是哈希表的基础操作, 呵呵 相当于又...原创 2021-06-14 08:34:30 · 239 阅读 · 0 评论 -
05 关于 intset
前言关于 redis 的数据结构 intset相关介绍主要围绕着如下测试用例, 来看看 intset 的存储, 以及 相关的 api本文的 intset 相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/测试用例//// Created by Jerry.X.He on 2021/2/25.//#include <iostream>#include "../libs/intset.h"using n...原创 2021-05-30 18:28:52 · 232 阅读 · 0 评论 -
04 关于 adlist
前言关于 redis 的数据结构 adlist相关介绍主要围绕着如下测试用例, 来看看 adlist 的存储, 以及 相关的 api本文的 adlist 相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/adlist 这个数据结构映射到 jdk 这边 类似于 java.util.LinkedList很多操作 也是链表的基础操作, 呵呵 相当于又温习了一遍测试用例//// Created by Jerry...原创 2021-05-22 20:20:12 · 460 阅读 · 0 评论 -
03 关于 zipmap
前言关于 redis 的数据结构 zipmap相关介绍主要围绕着如下测试用例, 来看看 zipmap 的存储, 以及 相关的 api本文的 sds 相关代码 拷贝自 redis-6.2.0代码来自于https://redis.io/这个数据结构在 redis 中已经没有使用了, 呵呵但是在几年前 我看过的一个的一个版本里面, 它应该是作为了 hash 的底层支撑之一吧现在看了一下 hash 的实现, 似乎是 hashtable /ziplist 来支撑业务...原创 2021-05-15 22:02:08 · 268 阅读 · 0 评论 -
02 关于 ziplist
前言关于 redis 的数据结构 ziplist相关介绍主要围绕着如下测试用例, 来看看 ziplist 的存储, 以及 相关的 api本文的 sds 相关代码 拷贝自 redis-6.2.0代码来自于 https://redis.io/测试用例//// Created by Jerry.X.He on 2021-02-21.//#include <iostream>#include "../libs/sds.h"#include ...原创 2021-05-08 21:55:09 · 234 阅读 · 0 评论 -
01 关于 sds
前言关于 redis 的数据结构 sds相关介绍主要围绕着如下测试用例, 来看看 sds 的存储, 以及 相关的 api本文的 sds 相关代码 拷贝自 Redis 2.9.11 (1ce33fe5/1) 64 bit测试用例测试用例如下, 呵呵 我们一个一个的来//// Created by Jerry.X.He on 2021-02-13.//#include <iostream>#include "libs/sds.h"using ...原创 2021-05-01 20:15:26 · 596 阅读 · 0 评论