E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
Redis源码学习
redis源码分析之对象系统源码分析-string, list链表,hash哈希,set集合,zset有序集合
=====================================================
redis源码学习
系列文章:redis源码分析之sha1算法分析redis源码分析之字典源码分析
chen_song_
·
2019-10-14 20:27
Redis源码探秘
redis源码分析之内存编码分析 intset, ziplist编码分析
=====================================================
redis源码学习
系列文章:redis源码分析之sha1算法分析redis源码分析之字典源码分析
chen_song_
·
2019-10-10 01:34
Redis源码探秘
redis源码分析之内存淘汰策略的原理分析
=====================================================
redis源码学习
系列文章:redis源码分析之sha1算法分析redis源码分析之字典源码分析
chen_song_
·
2019-10-08 02:27
算法
Redis源码探秘
Redis源码学习
(一)
redis-4.0.10版本源码redis源码的main入口在server.c中,程序启动之后,主要分为两个阶段:1.各种初始化;2.执行事件循环;首先看一下初始化阶段的各个步骤:配置加载和初始化:这一步表示redis服务器基本数据结构和各种参数的初始化。在Redis源码中,Redis服务器是用一个叫做redisServer的struct来表达的,里面定义了Redis服务器赖以运行的各种参数,比如
Bobhu1995
·
2019-07-05 14:13
源码学习
Redis源码学习
——Redis字典扩容问题
通过上一篇对dictScan函数的分析,我们引出了两个问题,就是Redis字典在进行扩容的时候,会从size=8直接扩容到size=64吗?那段代码块真的有用吗?下面我们就通过查看源码,逐步来探索一下这个问题。想要探索这个问题的答案,我们首先要看一下字典会在什么时候进行扩容,首先查看到的函数是:*根据需要,初始化字典(的哈希表),或者对字典(的现有哈希表)进行扩展*T=O(N)staticint_
damanchen
·
2019-04-23 14:33
Redis
Redis源码学习
基本数据结构之动态字符串sds
一、sds是什么字符串是Redis中最为常见的数据存储类型,其底层实现是简单动态字符串sds(simpledynamicstring),是可以修改的字符串。它的内存管理模式类似于c++中的vector,它采用预分配冗余空间的方式来减少内存的频繁分配。关联源码sds.c/sds.htypedefchar*sdssds实际上就是一个char指针。它来自于跟它相关的结构体的一部分,其中一共有5个结构体相
lixin_karl
·
2019-04-04 16:07
Scrapy-
redis源码学习
defaults:默认参数配置connection:建立Redis连接utilsqueue:任务调度队列dupefilter:实现request去重scheduler:远程任务调度spiders:赋予Scrapyspiders远程调度pipelines:默认数据收集存储Scrapy是Python的一个非常强大的爬虫库,但是当我们要爬取的页面非常多的时候,单个主机的处理能力就不能满足我们的需求了(无
pyfreyr
·
2018-07-02 21:40
scrapy
【Redis学习笔记】2018-05-29
redis源码学习
之跳跃表
顺风车运营研发团队谭淼跳跃表(skiplist)是一种有序的数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到指向其他节点的目的。在Redis中,有序集合是通过跳跃表和hash实现的。一、跳跃表为了更好的阅读下面的文章,建议先对跳跃表的基本概念进行学习,链接如下:https://www.cnblogs.com/a8457...二、数据结构先看一下与跳跃表有关的数据结构。1、zskip
LNMPR源码研究
·
2018-06-14 00:00
redis
Redis源码学习
1、Redis内置数据结构之双向链表listhttp://blog.csdn.net/xiejingfa/article/details/509380282、Redis内置数据结构之字符串sdshttp://blog.csdn.net/xiejingfa/article/details/509725923、Redis内置数据结构之字典dicthttp://blog.csdn.net/xiejing
workming
·
2016-05-20 17:39
redis
程序开发
Redis源码学习
Redis内置数据结构之双向链表listhttp://blog.csdn.net/xiejingfa/article/details/50938028Redis内置数据结构之字符串sdshttp://blog.csdn.net/xiejingfa/article/details/50972592Redis内置数据结构之字典dicthttp://blog.csdn.net/xiejingfa/art
workming
·
2016-05-20 17:39
redis
Redis源码学习
(一)内存管理
什么是RedisRedis相关资源Redis内存管理Redis内存管理代码分析参考文献什么是RedisRedis是一个key-value数据库。Redis可以部署在利用tcpsocket或者其他的协议连接的主从模式集群上。它提供了一些指令,我们可以通过这些指令来访问其存储的数据。不同的进程均可查询和修改。 Redis主要有以下几个特点: 1、Redis是存在磁盘上面的,即使数据经常在服务器的内存
sylar_d
·
2016-03-03 19:00
redis
数据库
内存管理
Redis源码学习
四、字典
Redis源码学习
四、字典字典介绍字典,又称符号表(symboltable)、关联数组或映射(map),是一种用于保存键值对(key-value)的抽象数据结构。
u010994304
·
2016-01-24 14:00
Redis源码学习
感悟
自己利用空余时间看Redis源码已经有一个月了。之所以研究Redis源码,是因为研究源码是提升相对较快的一个途径,Redis作为一款成熟的分布式缓存软件,通过学习Redis源码可以加深对各种数据结构的认识,使自己能够灵活运用数据结构。同时Redis在设计中处处体现着尽可能节省空间的理念,这对自己在今后的软件设计中也是大有裨益的。相比Memcache的网络库采用libevent,Redis自己实现自
codingWen
·
2016-01-15 17:00
redis源码分析
Redis源码学习
感悟
自己利用空余时间看Redis源码已经有一个月了。之所以研究Redis源码,是因为研究源码是提升相对较快的一个途径,Redis作为一款成熟的分布式缓存软件,通过学习Redis源码可以加深对各种数据结构的认识,使自己能够灵活运用数据结构。同时Redis在设计中处处体现着尽可能节省空间的理念,这对自己在今后的软件设计中也是大有裨益的。相比Memcache的网络库采用libevent,Redis自己实现自
codingWen
·
2016-01-15 17:00
redis源码分析
redis sentinel 主从切换(failover)解决方案,详细配置
redissentinel主从切换(failover)解决方案,详细配置作者:oyhk 2013-10-1023:55:49 0评论 629浏览《
Redis源码学习
笔记》主从复制博客分类
明舞
·
2015-08-24 20:00
Redis源码学习
:字符串
Redis源码学习
:字符串1.初识SDS1.1SDS定义Redis定义了一个叫做sdshdr(SDSorsimpledynamicstring)的数据结构。
dc_726
·
2015-05-30 08:00
redis
源码
sds
Redis源码学习
:Lua脚本
Redis源码学习
:Lua脚本1.SublimeText配置我是在Win7下,用SublimeText+Cygwin开发的,配置方法请参考《SublimeText3下C/C++开发环境搭建》。
dc_726
·
2015-05-22 22:00
redis
lua
redis源码学习
(集群)
集群是一种分布式的思想,把数据存储到各个节点上去提供服务。分布式一个重要的步骤,就是分片。那redis集群是怎么分片的呢,以及集群服务的稳定性和可靠性怎么保证。下面就来剖析下。1.集群是怎么创建的,分片怎么设计的?分片原理:redis的核心数据是个hashtable,分片是按照key值来划分,再reds里面叫槽(slot),集群中的各个节点都会分一些槽,用于存储它们的数据。客户端在请求集群的服务时
hhh3h
·
2015-01-29 23:00
redis源码学习
(客户端)
大概介绍redis客户端设计主要是存储客户的链接,请求,请求解析的命令,执行结果。先看server的结构和client的结构,server里面有多个client,相当于一个服务端可以连多个客户端,服务端根据事件触发模式依次处理客户端的请求。server结构structredisServer{ /*General*/ //配置文件的绝对路径 char*configfile;/*Absolutec
hhh3h
·
2015-01-27 22:00
Redis源码学习
2-内存管理
开始还想着分析一下redis内存管理函数的,在网上找到一篇很不错的分析文章,干脆直接拿来用好了。原文地址:http://blog.ddup.us/?p=136Redis中到处都会进行内存分配操作。为了屏蔽不同平台之间的差异,以及统计内存占用量等,Redis对内存分配函数进行了一层封装,程序中统一使用zmalloc,zfree一系列函数,位于zmalloc.h,zmalloc.c文中。上边说过,封装
jinyeweiyang
·
2014-11-09 22:00
Redis源码学习
1——基本数据结构sds
[-]sdshdr结构sdsnew构建字符串sdscatsds字符串扩展sdsclear清除最近好几次用到redis,但是一直没有时间来好好学习下redis的原理,打算最近花一个月的空余时间来整理学习下redis的源码。redis本身非常简洁,下载源码直接make就ok了,而且似乎没有依赖第三方库什么的。先从基本的数据结构开始把,主要参考了http://www.redisbook.com/en/l
jinyeweiyang
·
2014-11-09 22:00
Redis源码学习
3-基本数据结构之双向链表
[-]楔子双向链表定义基本函数listCreate创建列表listRelease释放列表listAddNodeHead在表头添加节点listAddNodeTail在表尾添加节点listInsertNode在指定节点前后插入节点listDelNode删除链表中指定节点迭代器及相关函数迭代器定义相关函数listGetIterator迭代器创建迭代器释放迭代指针调整函数listIterNext迭代函数1
jinyeweiyang
·
2014-11-09 22:00
Redis源码学习
4-基本数据结构之字典
[-]Redis基本数据结构-字典字典概念相关函数创建字典添加键值对到字典获取元素值其他参考资料Redis基本数据结构-字典 1、字典概念 Redis是一个键值对数据库,在很多地方用到字典。Redis字典的实现采用的是比较经典的哈希表方式实现的。貌似跟memcached的方法有点像,很久之前看过部分memcached,现在忘得差不多了。Redis的字典定义如下:[cpp] viewplaincop
jinyeweiyang
·
2014-11-09 22:00
[置顶]
Redis源码学习
-AOF
前言网络上也有许多介绍redis的AOF机制的文章,但是从宏观上介绍aof的流程,没有具体分析在AOF过程中涉及到的数据结构和控制机制。昨晚特别看了2.8源码,感觉源码中的许多细节是值得细细深究的。特别是list*aof_rewrite_buf_blocks结构。仔细看源码,会发现原来看网络文章多的到的领会是片面的,最好的学习还是得自己动手...原文链接:http://blog.csdn.net/
ordeder
·
2014-09-14 18:00
redis
AOF
redis sentinel 主从切换(failover)解决方案,详细配置
redissentinel主从切换(failover)解决方案,详细配置作者:oyhk 2013-10-1023:55:49 0评论 629浏览《
Redis源码学习
笔记》主从复制博客分类
myrainblues
·
2014-05-24 20:00
redis
Redis源码学习
-Master&Slave的命令交互
0.写在前面 VersionRedis2.2.2 Redis中可以支持主从结构,本文主要从master和slave的心跳机制出发(PING),分析redis的命令行交互。 在Redis中,server为每个连接建立一个redisClient数据对象,来描述对应的连接。其中,redisClient为命令交互设置了缓冲区。querybuf用于存储客户端送过来的命令,buf和reply
jiayichendddd
·
2014-01-31 12:00
Redis源码学习
之【事件机制】
介绍Redis实现了自己的一套和libevent类似的事件驱动机制,主要用于处理时间事件和文件事件。文件事件底层主要是指网络IO事件的处理,底层使用的可能是select,epoll,或者是kqueue。Redis使用自己实现的AE而不是像memcache使用的libevent使得其性能更好,因为libevent为了其通用性增加了很多扩展功能显然会降低使用它的性能。源码ae.hae.c分析总体流程简
陈鸿儒
·
2014-01-06 11:17
redis
redis sentinel 主从切换(failover)解决方案,详细配置
redissentinel主从切换(failover)解决方案,详细配置作者:oyhk2013-10-1023:55:490评论629浏览《
Redis源码学习
笔记》主从复制博客分类:Redisredisc
pi9nc
·
2014-01-01 17:58
server
redis sentinel 主从切换(failover)解决方案,详细配置
redissentinel主从切换(failover)解决方案,详细配置作者:oyhk 2013-10-1023:55:49 0评论 629浏览《
Redis源码学习
笔记》主从复制博客分类
pi9nc
·
2014-01-01 17:00
[置顶]
Redis源码学习
-NoSql复杂类型对象的hash管理(二:List)
0.背景接上文(http://blog.csdn.net/ordeder/article/details/16893621),对list结构在dict中的存储进行分析(REDIS_ENCODING_LINKEDLIST)。1. 执行命令:#set name ordeder #setcommand,设置"ordeder"字符串的key为name# rpush mylist “Hello”
ordeder
·
2013-11-24 16:00
redis
list
[置顶]
Redis源码学习
-Master&Slave的命令交互
0.写在前面 VersionRedis2.2.2 Redis中可以支持主从结构,本文主要从master和slave的心跳机制出发(PING),分析redis的命令行交互。 在Redis中,server为每个连接建立一个redisClient数据对象,来描述对应的连接。其中,redisClient为命令交互设置了缓冲区。querybuf用于存储客户端送过来的命令,buf和reply
ordeder
·
2013-11-13 23:00
redis
slave
master
命令行
交互
Redis源码学习
4-基本数据结构之字典
Redis基本数据结构-字典 1、字典概念 Redis是一个键值对数据库,在很多地方用到字典。Redis字典的实现采用的是比较经典的哈希表方式实现的。貌似跟memcached的方法有点像,很久之前看过部分memcached,现在忘得差不多了。Redis的字典定义如下:/* *字典 * *每个字典使用两个哈希表,用于实现渐进式rehash */ typedefstructdict{ //特定于类型
ssjhust123
·
2013-10-26 22:00
Redis源码学习
3-基本数据结构之双向链表
1楔子双向链表为redis列表类型的实现方法之一,列表类型实现除了用到双向链表,还有压缩列表。因为双向链表占用内存较多,所以redis优先采用压缩列表来实现自己的列表类型。压缩列表后续分析,先看看双向链表的代码。 双向链表作为一个基本的数据结构,在很多书上都会有描述了,下面就一个个函数看看redis的双向链表的实现方法。文件参见src/adlist.c和src/adlist.h。关于这个命名是双向
ssjhust123
·
2013-10-14 12:00
Redis源码学习
2-内存管理
开始还想着分析一下redis内存管理函数的,在网上找到一篇很不错的分析文章,干脆直接拿来用好了。原文地址:http://blog.ddup.us/?p=136Redis中到处都会进行内存分配操作。为了屏蔽不同平台之间的差异,以及统计内存占用量等,Redis对内存分配函数进行了一层封装,程序中统一使用zmalloc,zfree一系列函数,位于zmalloc.h,zmalloc.c文中。上边说过,封装
ssjhust123
·
2013-10-12 17:00
Redis源码学习
1——基本数据结构sds
最近好几次用到redis,但是一直没有时间来好好学习下redis的原理,打算最近花一个月的空余时间来整理学习下redis的源码。redis本身非常简洁,下载源码直接make就ok了,而且似乎没有依赖第三方库什么的。先从基本的数据结构开始把,主要参考了http://www.redisbook.com/en/latest/index.html#,非常赞的关于redis的站点,作者huangz1990对
ssjhust123
·
2013-10-09 22:00
《
Redis源码学习
笔记》RDB
《
Redis源码学习
笔记》文章列表由于图片较大,缩放较为模糊,请双击打开查看原图^_^在主从复制过程中,我们提到过RDB文件,作为Redis持久化方式之一,RDB把数据库某一时刻的内容,也就是快照,以二进制的方式记录到文件
DiaoCow
·
2013-09-25 11:00
redis
c
《
Redis源码学习
笔记》AOF
《
Redis源码学习
笔记》文章列表由于图片较大,缩放较为模糊,请双击打开查看原图^_^Redis提供两种持久化方式,RDB和AOF;与RDB不同,AOF可以完整的记录整个数据库,而不像RDB只是数据库某一时刻的快照
DiaoCow
·
2013-09-23 16:00
redis
c
《
Redis源码学习
笔记》键过期
《
Redis源码学习
笔记》文章列表Redis可以为数据库中的每一个键关联一个过期时间,当到达指定时间后Redis就会把该键从数据库中删除,eg:redis127.0.0.1:6379>setexname5diaocow
DiaoCow
·
2013-09-09 07:00
redis
c
《
Redis源码学习
笔记》主从复制
《
Redis源码学习
笔记》文章列表由于图片较大,缩放较为模糊,请双击打开查看原图^_^主从复制简单来说就是把一台redis数据库中的数据同步到另一台redis数据库,并且按照数据流向,数据的发送者我们称作
DiaoCow
·
2013-09-09 07:00
redis
c
《
Redis源码学习
笔记》事务
《
Redis源码学习
笔记》文章列表Redis中的事务,提供了一种“将多个命令打包并且一次执行”的方式;当用户输入MULTI命令时,就打开了客户端REDIS_MULTI选项,客户端从“非事务状态”切换到“
DiaoCow
·
2013-09-08 16:00
redis
c
《
Redis源码学习
笔记》文章列表
《
Redis源码学习
笔记》数据结构-字典 2. 《
Redis源码学习
笔记》事件库 3. 《
Redis源码学习
笔记》事务 4. 《
Redis源码学习
笔记》发布/订阅 5.
DiaoCow
·
2013-09-08 16:00
redis
c
《
Redis源码学习
笔记》事件库
《
Redis源码学习
笔记》文章列表Redis没有使用第三方事件库来处理socket(譬如Libevent),而是自己实现了一个非常精巧的事件库(加上注释不到600行代码),这使得我们可以更加专注于Redis
DiaoCow
·
2013-09-08 16:00
redis
c
《
Redis源码学习
笔记》数据结构-字典
《
Redis源码学习
笔记》文章列表由于图片较大,缩放较为模糊,请双击打开查看原图^_^要看懂redis代码,其中重要的一步就是要看懂它里面所使用的数据结构,而在这不算少的数据结构中,最重要的就是字典,它几乎就是
DiaoCow
·
2013-09-08 16:00
redis
c
《
Redis源码学习
笔记》发布/订阅
《
Redis源码学习
笔记》文章列表Redis的SUBSCRIBE命令,可以让客户端订阅任意数量的频道,每当有新消息发送到某个频道时,Redis就会把这消息发送给所有订阅该频道的客户端;如下图:客户端Client
DiaoCow
·
2013-09-08 16:00
redis
c
Redis源码学习
之【暂停说明】
由于要去实习,暂时中断
Redis源码学习
系列博客的撰写工作,后续会在尽快抽时间完成整个系列文章的撰写。
qqyanchong
·
2013-03-20 12:00
redis
Redis源码学习
之【命令协议格式】
介绍本来这篇要介绍Redis的命令解析的,但是要想对Redis的命令解析有更直观的了解,必须先了解Redis的命令协议格式。源码暂无(或者是是在network.c中吧)分析Requests*CRLF$CRLFCRLF...$CRLFCRLFRedis最新支持的二进制安全的请求通用格式如上所示。具体的实例有:*3$3SET$5mykey$7myvalue转换为实际的每个字节的形式字符串为:"*3\r
qqyanchong
·
2013-03-18 14:00
redis
Redis源码学习
之【网络通信框架】
介绍前面两篇文章主要介绍了Redis对epoll和socket的封装,这篇就开始详细介绍Redis网络通信的具体实现。简单说来Redis的网络通信主要实现了服务器监听客户端连接并处理的主要流程和实现。源码networking.c分析网络通信流程说明Redis网络通信主要原理和一般的异步网络编程框架类似,都是使用服务器端的socket进行监听到来的连接然后创建该连接对应的socket,然后对该soc
qqyanchong
·
2013-03-18 10:00
redis
Redis源码学习
之【Tcp Socket封装】
介绍Redis对linuxsocket的封装,虽然在该封装中也含有对unixsocket的封装,但是普遍来说使用的tcpsocket。和上一篇的epoll的封装类似,都是通过调用底层的socket的函数完成一些列的方便的函数调用封装。源码anet.hanet.c分析主要包含以下几个封装函数(这里仅介绍关于Tcpsocket的封装函数)anetTcpconnect:创建socket并调用底层的con
qqyanchong
·
2013-03-18 08:00
redis
Redis源码学习
之【epoll封装】
介绍在上一篇博文中说到了在Redis的事件处理中使用到了底层的linuxepoll,根据Redis的实现可以使用其他的多路通信层,但是在一般的linux服务器中使用的最多的还是epoll所以这里主要介绍一下epoll。Redis并没有直接的使用linux的epoll而是对其进行了一个简单的封装。源码ae_epoll.c分析在原有的linuxepoll的基础上进行封装,主要封装了一下几个函数:aeA
qqyanchong
·
2013-03-17 15:00
redis
Redis源码学习
之【事件机制】
介绍Redis实现了自己的一套和libevent类似的事件驱动机制,主要用于处理时间事件和文件事件。文件事件底层主要是指网络IO事件的处理,底层使用的可能是select,epoll,或者是kqueue。Redis使用自己实现的AE而不是像memcache使用的libevent使得其性能更好,因为libevent为了其通用性增加了很多扩展功能显然会降低使用它的性能。源码ae.hae.c分析总体流程简
qqyanchong
·
2013-03-17 14:00
redis
上一页
1
2
3
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他