![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
源码分析-redis研究
文章平均质量分 65
redis源码分析
一 铭
公众号:大数据架构师修行之路
展开
-
Redis 源码分析--Rehash的实现
在redis中,数据库db的数据结构是struct dict(如下代码所示),而我们插入的数据是保存在d->ht[1].table[h]为头指针的链表中。其中的ht就是hash表。当该hash表的桶的数量到达一定程度时,就需要进行rehash操作。 本文分析redis的rehash过程。原创 2023-05-22 17:32:13 · 915 阅读 · 0 评论 -
RedisRaft介绍
RedisRaft 是一个 Redis 模块,可让您创建强一致性的集群 Redis 部署。该模块使用 Raft 共识算法为 Redis 提供强一致性。注意:该开源项目正在开发中,可以用来研究学习,但暂不能用于生产。原创 2023-05-07 20:07:46 · 1055 阅读 · 0 评论 -
redis4.x源码情景分析-事务的实现原理
概述本文讲述redis的事务的实现原理。基本概念事务(Transactions)事务是一系列命令的集合,这个命令的集合要么全部执行成功,全部执行失败。redis事务类似于传统数据库的事务。事务的使用事务的使用通过multi命令开始,exec命令结束。> MULTIOK> INCR fooQUEUED> INCR barQUEUED> EXEC1)...原创 2019-04-03 15:53:13 · 215 阅读 · 0 评论 -
使用jemalloc来对c,c++程序进行内存管理
概述本文讲述如何在c/c++程序中使用je_malloc内存管理模块来提升c/c++程序的性能。引言在编写c/c++服务器代码时,服务器的性能不仅决定于多线程/进程池模型的使用,还有很大程度上在于如何使用和管理内存。目前比较流行的c/c++代码来看,nginx,memcached,mysql等都有自己的内存管理模块,而redis使用的是第三方的内存管理模块je_malloc或tc_mall...原创 2019-04-05 22:46:47 · 7315 阅读 · 3 评论 -
redis4.x源码情景分析-数据淘汰机制的实现
概述在使用redis时,我们往往会设置一个最大的内存上限,来保证其他应用有足够的内存。当redis使用的内存达到最大的内存上限时会自动的对数据进行淘汰以便有更新的数据能够进来,在redis中可以对淘汰数据的算法进行配置。本文分析redis的数据淘汰功能的实现原理。配置redis最大内存限制配置文件中的最大内存删除策略在redis的配置文件中,可以设置redis内存使用的最大值,当redi...原创 2019-04-01 06:36:35 · 303 阅读 · 0 评论 -
twemproxy0.4原理分析-批量操作(mset,hset等)的实现原理
概述本文描述twemproxy0.4对批量消息处理命令的实现原理。这些命令例如:mset,mget等。引言当客户端发送的是批处理命令(如:mset,hset等)时,可能出现同一条命令的多个key分别发送到多个后端服务器的情况。例如如下命令:mget key1 key2 key3假如后端的redis集群有两台redis服务器,则可能出现以下key分配情况:key1 => re...原创 2019-01-05 15:50:26 · 882 阅读 · 0 评论 -
twemproxy0.4原理分析-消息处理过程原理分析
概述本文讲述了twemproxy0.4的消息处理流程。通过本文可以了解到twemproxy0.4的消息处理全流程。流程总体描述作为一个代理服务器twemproxy0.4,首先要接收来自client的了解,和client端建立好连接;然后,需要后后端的服务器建立连接,并把从client端接收到的连接发送给后端服务器,然后把服务器端的返回信息通过和client的连接发送给client。最后完成整...原创 2019-01-05 12:08:54 · 621 阅读 · 0 评论 -
twemproxy0.4原理分析-消息处理机制概览
概述本文描述twemproxy0.4的消息处理机制的概览。twemproxy0.4会通过FIFO(先进先出)队列的方式来对消息进行排队。本文先介绍一个消息处理的概要框架,后续会详细讲解该消息框架的实现。消息处理框架总述在创建后台网络服务程序时,后台服务的个数是有限的。而来自客户端的请求可能是无限的,但我们需要尽可能的满足客户端的请求,让客户端的体验不至于太差。这样我们就需要对客户端的请求进...原创 2018-12-20 09:57:11 · 298 阅读 · 0 评论 -
twemproxy0.4原理分析-一致性hash算法实现ketama分析
概述本文是一致性hash算法的一种开源代码的实现:ketama的源码分析。本文是我多年前的一篇文章整理而来,以前的那篇文章的链接可以在这里查看。简介若我们在后台使用NoSQL集群,必然会涉及到key的分配问题,集群中某台机器宕机时如何key又该如何分配的问题。若我们用一种简单的方法,n = hash( key)%N来选择n号服务器,一切都运行正常,若再考虑如下的两种情况:一个 cac...原创 2018-12-06 08:42:28 · 772 阅读 · 0 评论 -
twemproxy0.4原理分析-基本原理介绍和优缺点分析
引言接下来将会写一个分析twemproxy的系列。该系列会对twemproxy最新版v0.4的源码进行分析,对设计原理进行剖析,力求用通俗的语言和图来表达设计思想,并结合实际的使用达到深入浅出的效果。概述twemproxy是一个redis和memcached的轻量级分布式代理,本文介绍twemproxy0.4的基本功能、特征和总体架构。twemproxy的总体架构twemproxy的总体...原创 2018-12-06 08:22:17 · 2086 阅读 · 0 评论 -
twemproxy0.4原理分析-系统初始化过程原理分析
概述本文介绍twemproxy的系统初始化过程。该过程包括以下几个方面的内容:读取配置文件,根据配置文件初始化数据结构和后台服务器建立连接,形成服务器连接池初始化事件处理框架,并设置最开始的事件处理函数创建twemproxy的监听socket,并把该监听socket添加到事件处理框架中,用来监听客户端的连接请求。加载配置文件twemproxy0.4是根据YAML文件格式来进行后台...原创 2018-12-12 15:09:51 · 429 阅读 · 1 评论 -
redis源码情景分析—内存结构和布局分析
概述本文讲述redis的内存结构。通过本文,可以对redis保存数据的内存结构有一个清楚的理解,这对于理解的redis各种实现非常必要。理解软件数据结构的设计,也是深入理解任何软件的钥匙。redis内存布局说明redis初始化时会创建一个server结构体,在该结构体中保存了几乎所有redis要用到的数据结构。其中有一个redisDB的指针变量db,指向redisDB结构体的数组。该数组的...原创 2018-10-09 10:12:37 · 507 阅读 · 0 评论