SlideShare a Scribd company logo
1 of 32
Download to read offline
redis




yubaofu
主题

●   Redis 主要内存结构及主体执流程
●   Redis rehash 介绍
●   Redis 持久化
●   Redis 协议
●   Redis 应用实例
Redis 是什么

●   Redis 是 REmote DIctionary Server 的缩写 .
●   Redis is an open source, advanced key-
    value store. It is often referred to as a
    data structure server since keys can
    contain strings, hashes, lists, sets and
    sorted sets.
Redis 应用场景

●   对复杂数据结构的支持
●   sns 中的关系及统计类的应用
●   top 排名类的应用
Redis 内存数据结构
Redis dict 内存结构
Redis dict 结构源码
Redis key-vale
Key 字符串 通过 sds 实现 struct sdshdr {int len;
  int free;char buf[];
  };
Value typedef struct redisObject {
  unsigned type:4;unsigned notused:2;
  unsigned encoding:4; unsigned lru:22;
   int refcount;
   void *ptr;
} //redis.h
Redis db
Redis db

●   Redis 默认 db 数量是 16 个
●   Client 可以用 select 命令选择 db, 之后的操
    作都在这个 db 上
●   默认第 1 个 db, 即索引为 0 的 db
Redis 主流程
Redis 两个重要的函数
     r
Redis 两个重要的函数

●   ServerCron 定时函数
     每 100ms 执行
●   ServerCron 工作
        如果当前没有后台运行 dump 数据保存到文的
        进程,则可以根据内存使用情况重新调整
        hashTables 大小
        记录些日志
        判断是否有正在进行 dump 数据到文件的后台
        进程
         完成主从复制
Redis io 处理
Redis rehash
●   Dict 结构里 ht[2] 属性
●   默认情况下 ht[0],reash 时使用 ht[1]
●   Rehash 时使用分批 rehash , 每次只 rehash
    部分
●   bucket 初始为 4, 根据需要以 2 的 n 次方增加
    和 java hashmap 扩容大小一样。
Redis rehash 扩容条件

●   _dictExpandIfNeeded 函数判断是否扩容


    初始化时
    (Size/bucket >=1&&(dict_can_resize||
    size/bucked>5))
Redis 扩容判断源码
Redis 扩容 -切换 ht
   re
Redis 持久化方式

●   Dump 出整个库
●   AOF 模式 ( 没研究,这里不细讲 )
●   主从复制
Redis dump

●   主进程 fork 出一个子进程,利于 copy on
    write ,子进程 dump 整个库
●   触发条件
    save 主进程 dump
    bgsave fork 出子进程来 dump
    slave 连接了
●   配置文件里设置
    save 900 1
Redis dump 源码解析 1
Reids dump 源码解析 2
Redis dump 解析 3
Redis 主从复制

●   Slave 在命令行执行 slaveof ip port
    或在配置文件里配置
●   Slave 时 master 要执行 dump
●   同步完成后,以后每次按需复制
●   没有增量复制的方式,每次 slave down 后,要
    重新从 master 复制整个库
Redis 重启

●   从 dump.rdb 文件里读取数据,重建整个库
Redis 通信 协议

●   *<number of arguments> CR LF
●   $<number of bytes of argument 1> CR LF
●   <argument data> CR LF
●   ...
●   $<number of bytes of argument N> CR
    LF
●   <argument data> CR LF
Redis pipelining 模式

●   一次发送多个命令,减少网络传输
●   服务器将命令放到 queue, 结果按请求顺序返回
    给 client
●   内部 api 数据统计就采用了 pipelining
Redis 应用实例
Redis 应用
Redis 各数据类型结构

●   Redis 各数据结构内存结构 ( 还没研究 )
Thanks
参考资料

●   Redis 官网
●   Redis 源代码
●   网上分析 redis 的文章

More Related Content

What's hot

百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010Chuanying Du
 
NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹國昭 張
 
Building the Production Ready EB level Storage Product from Ceph - Dongmao Zhang
Building the Production Ready EB level Storage Product from Ceph - Dongmao ZhangBuilding the Production Ready EB level Storage Product from Ceph - Dongmao Zhang
Building the Production Ready EB level Storage Product from Ceph - Dongmao ZhangCeph Community
 
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discusseverestsun
 
Mongo db 簡介
Mongo db 簡介Mongo db 簡介
Mongo db 簡介昱劭 劉
 
云计算环境中Ssd在cassandra测试的性能表现
云计算环境中Ssd在cassandra测试的性能表现 云计算环境中Ssd在cassandra测试的性能表现
云计算环境中Ssd在cassandra测试的性能表现 july19850903
 
Memcached vs redis
Memcached vs redisMemcached vs redis
Memcached vs redisqianshi
 
Concurrency model for mysql data processing@rubyconf.tw 2012
Concurrency model for mysql data processing@rubyconf.tw 2012Concurrency model for mysql data processing@rubyconf.tw 2012
Concurrency model for mysql data processing@rubyconf.tw 2012Mu-Fan Teng
 
Mr&ueh数据库方面
Mr&ueh数据库方面Mr&ueh数据库方面
Mr&ueh数据库方面Tianwei Liu
 
Redis 介绍 -田琪
Redis 介绍 -田琪Redis 介绍 -田琪
Redis 介绍 -田琪Shaoning Pan
 
高性能No sql数据库redis
高性能No sql数据库redis高性能No sql数据库redis
高性能No sql数据库redispaitoubing
 
Leveldb background
Leveldb backgroundLeveldb background
Leveldb background宗志 陈
 
硬件体系架构浅析
硬件体系架构浅析硬件体系架构浅析
硬件体系架构浅析frogd
 
深入Docker的资源管理
深入Docker的资源管理深入Docker的资源管理
深入Docker的资源管理SpeedyCloud
 
Spark sql培训
Spark sql培训Spark sql培训
Spark sql培训Jiang Yu
 
“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosqlknuthocean
 

What's hot (20)

百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010
 
NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹
 
Redis介绍
Redis介绍Redis介绍
Redis介绍
 
Building the Production Ready EB level Storage Product from Ceph - Dongmao Zhang
Building the Production Ready EB level Storage Product from Ceph - Dongmao ZhangBuilding the Production Ready EB level Storage Product from Ceph - Dongmao Zhang
Building the Production Ready EB level Storage Product from Ceph - Dongmao Zhang
 
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discuss
 
Level db
Level dbLevel db
Level db
 
Mongo db 簡介
Mongo db 簡介Mongo db 簡介
Mongo db 簡介
 
Mongo db 特性
Mongo db 特性Mongo db 特性
Mongo db 特性
 
云计算环境中Ssd在cassandra测试的性能表现
云计算环境中Ssd在cassandra测试的性能表现 云计算环境中Ssd在cassandra测试的性能表现
云计算环境中Ssd在cassandra测试的性能表现
 
Memcached vs redis
Memcached vs redisMemcached vs redis
Memcached vs redis
 
Concurrency model for mysql data processing@rubyconf.tw 2012
Concurrency model for mysql data processing@rubyconf.tw 2012Concurrency model for mysql data processing@rubyconf.tw 2012
Concurrency model for mysql data processing@rubyconf.tw 2012
 
Mr&ueh数据库方面
Mr&ueh数据库方面Mr&ueh数据库方面
Mr&ueh数据库方面
 
Redis 介绍 -田琪
Redis 介绍 -田琪Redis 介绍 -田琪
Redis 介绍 -田琪
 
Hbase
HbaseHbase
Hbase
 
高性能No sql数据库redis
高性能No sql数据库redis高性能No sql数据库redis
高性能No sql数据库redis
 
Leveldb background
Leveldb backgroundLeveldb background
Leveldb background
 
硬件体系架构浅析
硬件体系架构浅析硬件体系架构浅析
硬件体系架构浅析
 
深入Docker的资源管理
深入Docker的资源管理深入Docker的资源管理
深入Docker的资源管理
 
Spark sql培训
Spark sql培训Spark sql培训
Spark sql培训
 
“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql
 

Viewers also liked

Understanding query-execution806
Understanding query-execution806Understanding query-execution806
Understanding query-execution806yubao fu
 
MySQL Sandbox - A toolkit for laziness
MySQL Sandbox - A toolkit for lazinessMySQL Sandbox - A toolkit for laziness
MySQL Sandbox - A toolkit for lazinessGiuseppe Maxia
 
搜索技巧
搜索技巧搜索技巧
搜索技巧lnptao
 
56 Query Optimization
56 Query Optimization56 Query Optimization
56 Query OptimizationMYXPLAIN
 
Ethernet Technology
Ethernet Technology Ethernet Technology
Ethernet Technology Ali Usman
 

Viewers also liked (7)

Understanding query-execution806
Understanding query-execution806Understanding query-execution806
Understanding query-execution806
 
MySQL Sandbox - A toolkit for laziness
MySQL Sandbox - A toolkit for lazinessMySQL Sandbox - A toolkit for laziness
MySQL Sandbox - A toolkit for laziness
 
搜索技巧
搜索技巧搜索技巧
搜索技巧
 
Vim再入門
Vim再入門Vim再入門
Vim再入門
 
56 Query Optimization
56 Query Optimization56 Query Optimization
56 Query Optimization
 
Explain
ExplainExplain
Explain
 
Ethernet Technology
Ethernet Technology Ethernet Technology
Ethernet Technology
 

Similar to Redis介绍

Python小团队不妨知道的技术
Python小团队不妨知道的技术Python小团队不妨知道的技术
Python小团队不妨知道的技术jie.wang
 
Another Introduce to Redis
Another Introduce to RedisAnother Introduce to Redis
Another Introduce to Redisjiaqing zheng
 
Redis配置文件说明
Redis配置文件说明Redis配置文件说明
Redis配置文件说明jimmyyem
 
Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2redhat9
 
Redis介绍
Redis介绍Redis介绍
Redis介绍锐 张
 
Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结redhat9
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲84zhu
 
Erlang游戏开发
Erlang游戏开发Erlang游戏开发
Erlang游戏开发litaocheng
 
Track1dongsiying4
Track1dongsiying4Track1dongsiying4
Track1dongsiying4drewz lin
 
Nginx+常见应用技术指南
Nginx+常见应用技术指南Nginx+常见应用技术指南
Nginx+常见应用技术指南andy54321
 
Redis 存储分片之代理服务twemproxy 测试
Redis 存储分片之代理服务twemproxy 测试Redis 存储分片之代理服务twemproxy 测试
Redis 存储分片之代理服务twemproxy 测试kaerseng
 
Redis slideshare
Redis slideshareRedis slideshare
Redis slideshareliaoxu
 
InnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCCInnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCCfrogd
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎frogd
 
Redis在唯品会的应用实践.pdf
Redis在唯品会的应用实践.pdfRedis在唯品会的应用实践.pdf
Redis在唯品会的应用实践.pdfjaydenhu
 
编辑器设计U editor
编辑器设计U editor编辑器设计U editor
编辑器设计U editortaobao.com
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践taobao.com
 
Heartbeat+my sql+drbd构建高可用mysql方案
Heartbeat+my sql+drbd构建高可用mysql方案Heartbeat+my sql+drbd构建高可用mysql方案
Heartbeat+my sql+drbd构建高可用mysql方案cao jincheng
 
Web Caching Architecture and Design
Web Caching Architecture and DesignWeb Caching Architecture and Design
Web Caching Architecture and DesignHo Kim
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版Jackson Tian
 

Similar to Redis介绍 (20)

Python小团队不妨知道的技术
Python小团队不妨知道的技术Python小团队不妨知道的技术
Python小团队不妨知道的技术
 
Another Introduce to Redis
Another Introduce to RedisAnother Introduce to Redis
Another Introduce to Redis
 
Redis配置文件说明
Redis配置文件说明Redis配置文件说明
Redis配置文件说明
 
Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2
 
Redis介绍
Redis介绍Redis介绍
Redis介绍
 
Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲
 
Erlang游戏开发
Erlang游戏开发Erlang游戏开发
Erlang游戏开发
 
Track1dongsiying4
Track1dongsiying4Track1dongsiying4
Track1dongsiying4
 
Nginx+常见应用技术指南
Nginx+常见应用技术指南Nginx+常见应用技术指南
Nginx+常见应用技术指南
 
Redis 存储分片之代理服务twemproxy 测试
Redis 存储分片之代理服务twemproxy 测试Redis 存储分片之代理服务twemproxy 测试
Redis 存储分片之代理服务twemproxy 测试
 
Redis slideshare
Redis slideshareRedis slideshare
Redis slideshare
 
InnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCCInnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCC
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎
 
Redis在唯品会的应用实践.pdf
Redis在唯品会的应用实践.pdfRedis在唯品会的应用实践.pdf
Redis在唯品会的应用实践.pdf
 
编辑器设计U editor
编辑器设计U editor编辑器设计U editor
编辑器设计U editor
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
Heartbeat+my sql+drbd构建高可用mysql方案
Heartbeat+my sql+drbd构建高可用mysql方案Heartbeat+my sql+drbd构建高可用mysql方案
Heartbeat+my sql+drbd构建高可用mysql方案
 
Web Caching Architecture and Design
Web Caching Architecture and DesignWeb Caching Architecture and Design
Web Caching Architecture and Design
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
 

Redis介绍