`
isiqi
  • 浏览: 16075097 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Redis内存存储结构分析

阅读更多

from: http://www.searchtb.com/2011/05/redis-storage.html

Redis: A persistent key-value database with built-in net interface written in ANSI-C for Posix systems

1 Redis 内存存储结构

本文是基于 Redis-v2.2.4 版本进行分析.

1.1 Redis 内存存储总体结构

Redis 是支持多key-value数据库(表)的,并用 RedisDb 来表示一个key-value数据库(表). redisServer 中有一个 redisDb *db; 成员变量, RedisServer 在初始化时,会根据配置文件的 db 数量来创建一个 redisDb 数组. 客户端在连接后,通过 SELECT 指令来选择一个 reidsDb,如果不指定,则缺省是redisDb数组的第1个(即下标是 0 ) redisDb. 一个客户端在选择 redisDb 后,其后续操作都是在此 redisDb 上进行的. 下面会详细介绍一下 redisDb 的内存结构.

redis 的内存存储结构示意图

redisDb 的定义:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
typedef struct redisDb
{
dict *dict; /* The keyspace for this DB */
dict *expires; /* Timeout of keys with a timeout set */
dict *blocking_keys; /* Keys with clients waiting for data (BLPOP) */
dict *io_keys; /* Keys with clients waiting for VM I/O */
dict *watched_keys; /* WATCHED keys for MULTI/EXEC CAS */
int id;
} redisDb;
struct

redisDb 中 ,dict 成员是与实际存储数据相关的. dict 的定义如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
background-color: white ! important; float: none ! important; height: auto ! important; line-height: 1.1em ! important; overflow: visible ! important; text-align: right !
分享到:
评论

相关推荐

    redis内存存储结构分析

    redis缓存解决方案和基本命令,redisredis内存存储结构分析.Redis的数据全部放在内存带来了高速的性能,但是也带来一些不合理之处。比如一个中型网站有100万注册用户,如果这些资料要用Redis来存储,内存的容量必须...

    云资源下载V1.2

    (5)Redis内存存储结构分析 (6)redis起步 (7)Redis容量及使用规划 (8)Redis新的存储模式diskstore (9)Redis学习笔记 (11)redis应用场景 (12)redis应用之日志汇总 (13)构建可扩展微博架构 (14)浅谈redis的键值设计 (15...

    Redis精品资料荟萃

    教程名称:Redis精品资料荟萃课程目录:【】Redis Cookbook【】Redis 内存存储结构分析【】Redis 深入浅出【】redis介绍【】Redis学习笔记【】《Redis实战》电子书【】深入了解redis【】高性能NoSQL数据库Redis 盛大...

    redis_3.2.9_内存分布分析

    这是本人分redis内部数据存储结构的过程文档,部分无用细节忽略,这是数据存储结构的分析,没有增、删、改、查的动态处理过程,需要参考部分源码查看

    redis开发的概要介绍与分析

    Redis是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息代理。Redis支持多种数据结构,包括字符串、哈希、列表、集合、有序集合等,并提供了丰富的API供开发者使用。 在Redis开发过程中,...

    聊聊高并发高可用那些事(Kafka、Redis、MySQL)

    # MySQL篇内容 - 一条SQL语句的执行流程 - InnoDB数据读取和写入过程 - 基本数据结构介绍 - MyIsAM InnoDB 等存储引擎 ...- Redis、Memcached 对比分析 - 数据结构以及应用场景 - 缓存雪崩、缓存击穿、缓存穿透 ......

    Redis-Source-Code-Analyze:Redis原始阅读和分析(Redis-3.2.5)-redis source code

    即使始终为它们提供服务并将它们修改到服务器内存中,Redis也会将它们存储在磁盘上。 这意味着Redis速度很快,但这也是非易失性的。 数据结构的实现强调内存效率,因此与使用高级编程语言建模的相同数据结构相比,...

    redis:redis源码分析与个人理解

    即使始终为它们提供服务并将它们修改到服务器内存中,Redis也会将它们存储在磁盘上。 这意味着Redis速度很快,但这也是非易失性的。 数据结构的实现强调内存效率,因此与使用高级编程语言建模的相同数据结构相比,...

    Redis-64-5.0.10.7z

    Redis通常用于缓存、消息队列、实时数据分析、计数器、排行榜等场景,Redis是一个功能强大的键值对存储数据库,具有高速、高可用、可扩展等特点,适用于各种应用场景。 它的主要特点包括: 速度快:Redis使用ANSI ...

    redis-source-analysis:redis-3.2.12源码分析

    即使始终为它们提供服务并将它们修改到服务器内存中,Redis也会将它们存储在磁盘上。 这意味着Redis速度很快,但这也是非易失性的。 数据结构的实现强调内存效率,因此与使用高级编程语言建模的相同数据结构相比,...

    redis安装配置详细教程.pdf

    Redis还具有多种应用场景,如在Web应用中存储会话信息、实现消息队列、排行榜和计数器、分布式锁以及实时分析等。例如,Redis的发布订阅功能可以用来实现消息队列,通过将消息发布到特定的频道,可以让订阅该频道的...

    安装和配置指引,通俗易懂

    Redis是一个开源的内存数据库,它被广泛用作缓存、消息队列和数据存储。Redis支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等,使其非常灵活和强大。 Redis的特点包括: - 高性能:Redis数据存储在...

    Redis常用语法命令及使用示例详解

    Redis是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中介。它支持多种数据类型,包括字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(sorted set)等,并提供了丰富...

    redis源码分析教程之压缩链表ziplist详解

    压缩列表(ziplist)是由一系列特殊编码的内存块构成的列表,它对于Redis的数据存储优化有着非常重要的作用。这篇文章总结一下redis中使用非常多的一个数据结构压缩链表ziplist。该数据结构在redis中说是无处不在也...

    Redis缓存技术在自动气象站资料调用中的优化应用

    为了提高气象自动站资料的检索查询效率,采用基于内存Key-Value结构的Redis数据库技术,通过搭建Redis数据库集群,把数据缓存在内存中并实现主从复制,提出一种适合气象自动站数据特性的数据存储结构模型,使得高...

    java 大数据 spark flink redis hive hbase kafka 面试题 数据结构 算法 设计模式.zip

    存储结构(物理结构):描述数据在计算机中如何具体存储。例如,数组的连续存储,链表的动态分配节点,树和图的邻接矩阵或邻接表表示等。 基本操作:针对每种数据结构,定义了一系列基本的操作,包括但不限于插入、...

    Practical-redis:这本书的代码-Practical Redis

    使用模式包括(但不限于)键值数据库,缓存服务器,消息代理,会话存储,分析引擎等。 关于实用Redis 顾名思义,实用Redis是Redis的动手指南,由代码驱动。 每章都基于一个应用程序(简单到中等复杂性),该应用...

    nosql 入门教程

    4.3.1 用内存映射文件存储数据 74 4.3.2 MongoDB集合和索引使用指南 75 4.3.3 MongoDB的可靠性和耐久性 75 4.3.4 水平扩展 76 4.4 键/值存储Memcached和Redis 78 4.4.1 Memcached的内部结构 78 4.4.2 Redis的...

    使用 Koa + MongoDB + Redis 搭建论坛系统.zip

    内存:包括随机访问内存 (RAM) 和只读存储器 (ROM),用于临时或永久地存储程序和数据供CPU快速访问。 存储设备:如硬盘、固态硬盘 (SSD)、光盘驱动器等,用于长期保存大量的程序和数据。 输入/输出设备:如键盘、...

Global site tag (gtag.js) - Google Analytics