Redis replication 中的探活

2022-03-13
阅读 5 分钟
2.5k
当由于网络或其他原因导致主从 link 断开后,slave 会尝试重建 replication 。在这个过程中,slave 的复制状态机 repl_state 变量会经过一系列流传,最终为 REPL_STATE_CONNECTED 状态。

toa 内核模块分析

2022-03-13
阅读 6 分钟
6.3k
我们知道 LVS 之前有三种负载均衡模式:DR、NAT 和 Tunnel,但都有各自的缺陷,比如 DR 和 NAT 要求 virtual server 与 real server 在同一子网下,而 Tunnel 运维起来比较复杂。因此,为了灵活部署,开发了第四种模式,即 FULLNAT。

Redis Cluster 路由变更

2021-02-23
阅读 8 分钟
3.9k
Redis Cluster 采用去中心化的路由方案,cluster 中的每个 node 都可以感知到完整路由表,为了能够正确地访问到数据,路由表的正确性保证至关重要。

Redis Cluster availability 分析

2021-02-19
阅读 5 分钟
3.1k
当 Redis 以 Cluster 模式启动时,对于一个 master 节点,只有当集群为 CLUSTER\_OK 状态时,才能正常接受访问,这在之前的博客 《Redis Cluster write safety 分析》讨论过。

Redis Cluster write safety 分析

2021-02-19
阅读 7 分钟
2.1k
redis cluster 是 redis 的分布式实现。 如同官方文档 cluster-spec 强调的那样,其设计优先考虑高性能和线性扩展能力,并尽最大努力保证 write safety。

Redis 源码之 cluster 初始化

2021-02-04
阅读 5 分钟
2.9k
Redis Cluster 是官方提出的 redis 分布式集群解决方案,在此之前,也有一些第三方的可选方案,如 codis、Twemproxy 等。cluster 内部使用了 gossip 协议进行通信,以达到数据的最终一致性。详细介绍可参考官网 Redis cluster tutorial。

golang snippet 之 time 使用

2020-05-13
阅读 2 分钟
1.5k
时间格式化与解析 {代码...} 计算时间差 {代码...} 定时器使用 {代码...} 更多使用技巧参考 godoc [链接]

Redis 源码分析之 key 过期

2020-04-07
阅读 9 分钟
4.3k
redis 中设置 key 相对过期时间的命令 EXPIRE/ PEXPIRE,设置 key 绝对过期时间的命令 EXPIREAT/PEXPIREAT,最终都是调用 expireGenericCommand 函数实现的。

Redis 源码分析之数据迁移(2)

2020-04-02
阅读 7 分钟
3.3k
上一篇文章中,详细讲解了 redis cluster 中说数据迁移的流程,那在迁移过程中,节点对正常用户访问是如何处理的呢?本篇文章将探讨一下。

Redis 源码分析之数据迁移(1)

2020-04-02
阅读 14 分钟
3.5k
redis 中的数据迁移是以 key 为单位的,整个迁移过程由一系列命令组成,在官方提供的 ruby 实现的 trib 工具中对整个过程进行了包装串联,在更新的版本的 redis 中,已经将这些逻辑移植到了 redis-cli 中,使用 C 进行了重写。下面进行分步详细讲解。

redis-cli 使用小结

2020-03-26
阅读 2 分钟
5k
本文档将一些 redis-cli 的日常使用较多的用法整理如下,以方便查阅。 完整版使用可以参考 redis 官方文档《 redis-cli, the Redis command line interface》 连接 {代码...} -h redis 服务器 ip -p redis 服务器 port -a 密码 -n 选择要使用的 db 数据导入 加 -x 选项,将 /etc/services 中的内容作为 foo 的 value。 {...

Redis 源码分析之主从复制(4)

2019-11-13
阅读 22 分钟
6.9k
slave 在向 master 发起 TCP 建链,以及复制握手过程中,master 一直把 slave 当成一个普通的 client 来处理。也就是说,不为 slave 保存状态,只是收到 slave 发来的命令进而处理并回复而已。

Redis 源码分析之主从复制(3)

2019-11-07
阅读 29 分钟
5.5k
单机模式下以 SLAVEOF 命令触发;cluster 模式下以 REPLICATE 命令触发,且 cluster 模式下不支持 SLAVEOF 命令。

Redis 源码分析之主从复制(2)

2019-11-07
阅读 5 分钟
4.1k
repl backlog 是一个由 master 维护的固定长度的环形 buffer,默认大小 1M,在配置文件中可以通过 repl-backlog-size 项进行配置。可以把它看成一个 FIFO 的队列,当队列中元素过多时,最早进入队列的元素被弹出(数据被覆盖)。它为了解决上一篇博客中提到的旧版本主从复制存在的问题而存在的。

Redis 源码分析之主从复制(1)

2019-11-07
阅读 4 分钟
2.4k
在分布式系统中,为了解决单点问题,通常会把数据集复制多个副本部署到其他机器,以满足故障恢复和负载均衡等需求。redis 为我们提供的复制功能,实现了相同数据的多个副本,这也是其实现 HA 的基础。

Redigo源码分析

2019-06-25
阅读 14 分钟
4.7k
使用 golang 开发项目时经常会使用到 redis 服务,这时就需要一个趁手的 sdk,所以就在 github 中找了一个 star 较多的项目,这就是本篇的主角 redigo,同时这也是redis 的官方推荐。

Redis 源码分析之故障转移

2019-02-13
阅读 29 分钟
4.3k
集群中每个节点都会定期向其他节点发送 PING 消息,以此来检测对方是否在线,如果接收 PING 消息的节点 B 没有在规定时间(cluster_node_timeout)内回应节点 A PONG 消息,那么节点 A 就会将节点 B 标记为疑似下线(probable fail, PFAIL)。

Redis 持久化之 AOF 重写

2019-01-29
阅读 14 分钟
6.3k
因为 AOF 持久化是通过保存被执行的写命令来记录数据库状态的,所以随着服务器运行时间的流逝,AOF 文件中的内容会原来越多,文件的体积也会越来越大,若不加以控制,体积过大的 AOF 文件很可能对 Redis 服务器、甚至整个宿主计算机造成影响,并且其体积越大,使用 AOF 文件来进行数据还原所需要的时间就越长。

Redis 持久化之 AOF

2019-01-29
阅读 19 分钟
4.3k
除了 RDB 持久化功能之外,Redis 还提供了 AOF(Append Only File)持久化功能。与 RDB 持久化通过保存数据库中的键值对来记录数据库状态不同,AOF 持久化是通过保存 Redis 服务器所执行的写命令来记录数据库状态的。

Golang中下划线的使用

2019-01-06
阅读 2 分钟
5.7k
在 Golang 里, _ (下划线)是个特殊的标识符。前几天看 gin 源码,看到一个有意思的用法。虽然网上的总结博客已有很多,但是总是有点欠缺,于是就有了这一篇,方便以后查阅。

Redis 源码分析之 cluster meet

2018-12-20
阅读 6 分钟
4.9k
一个新启动的节点 B 想要加入一个已有的 cluster,选 cluster 中一个节点 A,在 A 上 meet B。整个流程如下图所示,

Redis 启动流程

2018-12-09
阅读 7 分钟
3.5k
首先要找到启动函数,我们知道 C 程序从 main 函数开始,所以,就找到了“梦想”开始的地方 server.c -> main。这里主要讲启动过程中的主要部分,所以并不会一一涉及到。

Redis 中的事件

2018-08-19
阅读 6 分钟
2.9k
每个 CS 模式程序,尤其是高并发的网络服务端程序都有自己的网络异步事件处理库,Redis不例外。Redis 基于 Reactor 模型 封装了自己的事件驱动模型库。你可能会跟我有一样的疑问,为什么作者不使用已有的成熟的相关库,比如 Libevent 或 Libev?作者是这样跟别人讨论的,感兴趣的可以了解下。下面从源码入手介绍下 Redis...

Redis基本数据结构之双向链表

2018-08-13
阅读 6 分钟
3.9k
链表是一种非常常见的数据结构。由于 redis 使用的 C 语言并没有这种数据结构,因此,作者在 redis 对这一数据结构进行了实现。redis 的链表实现为双向链表,主要用在实现列表键、发布订阅、保存多客户端状态、服务器模块,订阅模块和保存输入命令等方面,使用较广。

dstat工具使用

2018-07-04
阅读 6 分钟
4k
Dstat is a versatile replacement for vmstat, iostat, netstat and ifstat. Dstat overcomes some of their limitations and adds some extra features, more counters and flexibility. Dstat is handy for monitoring systems during performance tuning tests, benchmarks or troubleshooting. Dstat allows you to...

irqbalance详解(其一)

2018-06-29
阅读 7 分钟
14.7k
Irqbalance is a daemon to help balance the cpu load generated by interrupts across all of a systems cpus.

从tcpdump抓包看TCP/IP协议

2018-05-26
阅读 6 分钟
18.2k
因为最近要解析 TCP 报文中 option 段的一块数据,所以不得不详细了解下 TCP/IP 报文。虽然之前看过,很长时间没这么细致地用过,导致了健忘,借着这个机会,通过 tcpdump 抓包分析,详细捋一遍 TCP/IP 报文。

爬虫问题总结

2018-05-19
阅读 4 分钟
4.1k
本文档对日常学习中用 python 做数据爬取时所遇到的一些问题做简要记录,以便日后查阅,部分问题可能因为认识不到位会存在一些误解,敬请告知,万分感谢,共同进步。

go标准库之flag包

2018-05-19
阅读 2 分钟
13.7k
命令行参数常用来为命令行程序指定选项。比如在 wc -l 命令中 -l 就是命令行参数。golang 提供了 flag 包来支持基本的命令行参数解析。

golang工具之present

2018-05-19
阅读 1 分钟
8.4k
Golang Present 是 Golang 社群开发出來的一个简单工具,通过简单的语法可以制作 ppt(语法近似于 Markdown)。