摘要:以 Redis-6.0.6 为例,先从仓库将镜像拉下来: docker pull redis:6.0.6 Redis 的配置文件和数据文件不能放在镜像中,这里选择容器中的目录和宿主机上一致,这样更方便管理。以 /data/redis 为 Redis 的主目录,配置文件放在目录 /data/redis
阅读全文
摘要:FLUSHALL和FLUSHDB是单机命令,所以清空集群需要在所有Master节点上均执行一次。下载:https://github.com/eyjian/redis-tools/blob/master/clear_redis_cluster.sh #!/bin/bash # Batch to cle
阅读全文
摘要:说明 编译 redis-6.0,要求 C11 编译器,否则会遇到大量如下所示的错误: server.h:1051:5: 错误:expected specifier-qualifier-list before ‘_Atomic’server.c:1032:31: 错误:‘struct redisSer
阅读全文
摘要:延迟监控 参考官方文档 https://redis.io/topics/latency-monitor 启用 redis 延迟监控 CONFIG SET latency-monitor-threshold 100 单位:毫秒,100表示一百毫秒。如果将 latency-monitor-thresho
阅读全文
摘要:工具下载: https://github.com/eyjian/redis-tools/blob/master/move_redis_slot.sh 支持迁移已有的keys。 #!/bin/sh# 迁移 slot 工具,但一次只能迁移一个 slot # # 使用时,需要指定如下几个参数: # 1)参
阅读全文
摘要:官方参考:https://redis.io/commands/cluster-setslot。示例:将值为8的slot从源节点A迁移到目标节点B。 1) 在目标节点B上执行,从节点A导入slot到节点B: CLUSTER SETSLOT 8 IMPORTING src-A-node-id 对于迁移的
阅读全文
摘要:目录 目录 1 1. 概念 1 1.1. 双指针 1 1.2. 指针数组 1 1.3. 数组指针 1 1.4. 常见指针定义解读 1 2. 区别 2 3. 兼容性 2 4. 为何列数须相等? 2 5. “1”的含义 3 6. 回归本质 3 7. “*”和“[]” 7 1. 概念 1.1. 双指针 指
阅读全文
摘要:Redis的list经常被当作队列使用,左进右出,一般生产者使用lpush压入数据,消费者调用rpop取出数据。 这是很自然的行为,然而有时会发现lpush成功,但rpop并没有取到数据,特别是一些客户端库封装了rpop操作,添加了调用者无感知的自动重试。数据凭空消失,找不到问题所在。 实际上,这是
阅读全文
摘要:目录 目录 1 1. 前言 1 2. 执行方式 1 3. 执行过程 3 4. 使用原则 3 1. 前言 Redis的实现保证eval的执行是原子的,即使eval执行的lua超时,Redis也不会自动终止执行。 官方说明如下: When a script reaches the timeout it
阅读全文
摘要:简使用pop,不能保证最少消费一次,比如pop超时可能中途丢失,或者消费者处理过程中异常而未能处理完。 解决此问题有多种方法: 1) 方法一:使用rpoplpush替代pop 这种方法相当于建立了一个回滚,由于操作是在redis端完成的,可保证数据不会丢,当消费者完成业务逻辑后,再清掉lpush的另
阅读全文
摘要:客户端的超时时长分连接超时和读写超时,如果是基于hiredis的实现,则读写超时是合在一起的,同一参数控制。 在hiredis中,读写超时调用函数redisSetTimeout设置,可以看到没有区分读和写: int redisSetTimeout(redisContext *c, const str
阅读全文
摘要:REdis功能强大众所周知,能够大幅简化开发和提供大并发高性能,但截止到REdis 5.0.5仍然存在如下几大问题: 1. 一致性问题 这是由于REdis的主从复制采用的是异步复制,异常时可能发生主节点的数据未能复制到从节点,导致从节点提升为主节点后缺失部分数据。虽然REdis提供WAIT命令来使得
阅读全文
摘要:目录 目录 1 1. 前言 1 2. 配置项 1 3. redisServer 2 4. feedReplicationBacklog-写repl_backlog 3 5. addReplyReplicationBacklog-读repl_backlog 4 1. 前言 注意,repl_backlo
阅读全文
摘要:版本:redis-5.0.5 参考:http://redis.io/topics/cluster-tutorial。 集群部署交互式命令行工具:https://github.com/eyjian/redis-tools/tree/master/deploy 集群运维命令行工具:https://git
阅读全文
摘要:redis.conf中的maxmemory定义REdis可用最大物理内存,有多种书写方式,以下均为合法: maxmemory 1048576 maxmemory 1048576B maxmemory 1000KB maxmemory 100MB maxmemory 1GB maxmemory 100
阅读全文
摘要:平台:x86_64 结论:Zset的最大分数不要超过18014398509481982(17位数字,54位二进制),否则不会得到期望的值。 REdis:5.0.4 Zset采用double存储分数值(score),而incrbyfloat和hincrbyfloat采用的是long double存储数
阅读全文
摘要:redis.conf中的no-appendfsync-on-rewrite默认值为no,表示在重写AOF文件或RDB文件时阻塞fsync。 如果重写AOF或RDB文件时长过长,则在日志中可以看到如下信息:Asynchronous AOF fsync is taking too long (disk
阅读全文
摘要:对于REdis集群,如果设置了requirepass,则一定要设置masterauth,否则从节点无法正常工作,查看从节点日志可以看到哪下内容:19213:S 22 Apr 2019 10:52:17.389 * Connecting to MASTER 1.6.18.16:218119213:S
阅读全文
摘要:RDB配置:save 900 1save 300 10save 60 10000stop-writes-on-bgsave-error nordbcompression yesrdbchecksum yesrepl-diskless-sync noaof-use-rdb-preamble nordb
阅读全文
摘要:分析版本:REdis-5.0.4。 REdis命令处理流程可分解成三个独立的流程(不包括复制和持久化): 1) 接受连接请求流程; 2) 接收请求数据和处理请求流程,在这个过程并不会发送处理结果给Client,而只是将结果数据写入响应缓冲,将由响应请求流程来发送; 3) 响应请求流程。 上述三个流程
阅读全文