SlideShare a Scribd company logo
1 of 28
Redis实践
  翁伟
翁伟 / Wuvist
• 新加坡海龟
• 汕头招聘海盗创业中
• email/gtalk/G+: wuvist@gmail.com
• QQ: 124424
• http://twitter.com/Wuvist
Redis是什么?
• 源K/V 数据库
• V支持丰富的数据类型
 • strings, hashes, lists, sets, sorted sets.
• 单机
• 比memcached还快
Redis能做什么?
• 最新数据列表
• 排行榜
• 计数器
• 消息队列
• 缓存
我拿Redis做什么?


• 缓存
 • Cache-Money Pattern
Cache-Money
• Twitter 源:
 • https://github.com/nkallen/cache-money
• “A write-through and read-through caching
  library for ActiveRecord.”
• 基于memcached
• 理想情况下,数据库零读压力
Read Through 直读

• obj = Obj.FetchById(...)
 • 缓存不存在
 • 读取数据库后写入缓存
Active Record

• 透明缓存:
 • 一或者多个等于条件
 • ID排倒序
查询 => Key
• select id from blogs where author_id = x
  and is_deleted = 0 order by id desc
 • blog:author_id=1:is_deleted=0
• select count(*) from blogs where author_id
  = x and is_deleted = 0
 • blog:author_id=1:is_deleted=0/c
Write Through 直写

• Obj.Save()
 • 写入数据库时自动写入缓存
 • 下次直接读取直接命中缓存
实际上...
• 插入新blog:
 • Get: blog:author_id=1:is_deleted=0
 • Deserialized to Array
 • Append to new ID
 • Serialized to bytes
 • Set: blog:author_id=1:is_deleted=0
并发怎么办?

• Check and Save (CAS)
• 有原子操作的Append就好了∼
 • Redis List
上Redis

• Redis List
 • Append 无需Get/Set、无需CAS
• 原生分页支持
更多功能


• 只能ID排倒序
 • Sorted Set: 任意数字化列
Schema - less
• How FriendFeed use mysql?
 • http://bret.appspot.com/entry/how-
    friendfeed-uses-mysql


• 数据表: id + 单二进制列
• 索引表: id + 查询条件列
• Redis 替代索引表
• 查询 => key
• “预先”存储查询结果
• 查询时间 杂度恒定
 • 无“ 杂SQL”
还可以...

• 全文搜索
 • blog:fulltext:title:Redis
• Type Ahead
 • blog:type_ahead:title:re
• 查询 => Key
• 本质上是HashTable查找
• 数据库索引是B+树
 • select * from blogs where author_id > 10
    and is_deleted = 0
• Sorted Set仅实现部分功能
• Redis不能100%替代数据库索引
数据表?
• 消灭MySQL,数据也放Redis
• 内存限制
 • 一半的可用物理内存
 • 1/10问题
   • MySQL解决得较好
分布式


• Redis仅是单机方案
• Sharding容易,但细节。。。
Plurk - LightCloud
• Consistent Hash Ring
  http://opensource.plurk.com/LightCloud/
我选择冬眠...

•   http://redis.io/presentation/Redis_Cluster.pdf
Demo
Q &A
轮子
• MongoDB
 • 最初有误解
• Redis + MySQL的轮子并不   杂,可控程
 度高

• FourSquare / 视觉中国也都为MongoDB
 出   重的学习成本

More Related Content

What's hot

長榮大學/資料庫系統初探
長榮大學/資料庫系統初探長榮大學/資料庫系統初探
長榮大學/資料庫系統初探Lorex L. Yang
 
六角學院 - 資料庫與他們的小夥伴們
六角學院 - 資料庫與他們的小夥伴們六角學院 - 資料庫與他們的小夥伴們
六角學院 - 資料庫與他們的小夥伴們Hao Wei Liou
 
ELK Stack - Kibana操作實務
ELK Stack - Kibana操作實務ELK Stack - Kibana操作實務
ELK Stack - Kibana操作實務Kedy Chang
 
设计高性能mysql应用-TechClub技术沙龙
设计高性能mysql应用-TechClub技术沙龙设计高性能mysql应用-TechClub技术沙龙
设计高性能mysql应用-TechClub技术沙龙banping
 
中正大學/FHIR 快速掃描 R4 版本
中正大學/FHIR 快速掃描 R4 版本中正大學/FHIR 快速掃描 R4 版本
中正大學/FHIR 快速掃描 R4 版本Lorex L. Yang
 
Comment System of 56.com
Comment System of 56.comComment System of 56.com
Comment System of 56.comHo Kim
 
MongoDB gridfs
MongoDB gridfsMongoDB gridfs
MongoDB gridfsXue Wei
 
架構設計-資料存取的選擇
架構設計-資料存取的選擇架構設計-資料存取的選擇
架構設計-資料存取的選擇國昭 張
 
Elastic stack day-2
Elastic stack day-2Elastic stack day-2
Elastic stack day-2YI-CHING WU
 
一个 Mongodb command 的前世今生
一个 Mongodb command 的前世今生一个 Mongodb command 的前世今生
一个 Mongodb command 的前世今生dennis zhuang
 
分布式存储的元数据设计
分布式存储的元数据设计分布式存储的元数据设计
分布式存储的元数据设计LI Daobing
 
Twitter 與 ELK 基本使用
Twitter 與 ELK 基本使用Twitter 與 ELK 基本使用
Twitter 與 ELK 基本使用Mark Dai
 
No sql@vip new
No sql@vip newNo sql@vip new
No sql@vip newChao Zhu
 
2011新版首页总结 技术篇
2011新版首页总结 技术篇2011新版首页总结 技术篇
2011新版首页总结 技术篇传贵 谢
 
慈濟大學/FHIR 快速掃描/DSTU3 版本
慈濟大學/FHIR 快速掃描/DSTU3 版本慈濟大學/FHIR 快速掃描/DSTU3 版本
慈濟大學/FHIR 快速掃描/DSTU3 版本Lorex L. Yang
 
数据架构方面的一些探讨
数据架构方面的一些探讨数据架构方面的一些探讨
数据架构方面的一些探讨Chao Zhu
 
scrapy+sphinx搭建搜索引擎
scrapy+sphinx搭建搜索引擎scrapy+sphinx搭建搜索引擎
scrapy+sphinx搭建搜索引擎Ping Yin
 

What's hot (20)

長榮大學/資料庫系統初探
長榮大學/資料庫系統初探長榮大學/資料庫系統初探
長榮大學/資料庫系統初探
 
六角學院 - 資料庫與他們的小夥伴們
六角學院 - 資料庫與他們的小夥伴們六角學院 - 資料庫與他們的小夥伴們
六角學院 - 資料庫與他們的小夥伴們
 
ELK Stack - Kibana操作實務
ELK Stack - Kibana操作實務ELK Stack - Kibana操作實務
ELK Stack - Kibana操作實務
 
设计高性能mysql应用-TechClub技术沙龙
设计高性能mysql应用-TechClub技术沙龙设计高性能mysql应用-TechClub技术沙龙
设计高性能mysql应用-TechClub技术沙龙
 
中正大學/FHIR 快速掃描 R4 版本
中正大學/FHIR 快速掃描 R4 版本中正大學/FHIR 快速掃描 R4 版本
中正大學/FHIR 快速掃描 R4 版本
 
Comment System of 56.com
Comment System of 56.comComment System of 56.com
Comment System of 56.com
 
fis
fisfis
fis
 
MongoDB gridfs
MongoDB gridfsMongoDB gridfs
MongoDB gridfs
 
架構設計-資料存取的選擇
架構設計-資料存取的選擇架構設計-資料存取的選擇
架構設計-資料存取的選擇
 
Elasticsearch 簡介
Elasticsearch 簡介Elasticsearch 簡介
Elasticsearch 簡介
 
Elastic stack day-2
Elastic stack day-2Elastic stack day-2
Elastic stack day-2
 
一个 Mongodb command 的前世今生
一个 Mongodb command 的前世今生一个 Mongodb command 的前世今生
一个 Mongodb command 的前世今生
 
分布式存储的元数据设计
分布式存储的元数据设计分布式存储的元数据设计
分布式存储的元数据设计
 
Twitter 與 ELK 基本使用
Twitter 與 ELK 基本使用Twitter 與 ELK 基本使用
Twitter 與 ELK 基本使用
 
No sql@vip new
No sql@vip newNo sql@vip new
No sql@vip new
 
2011新版首页总结 技术篇
2011新版首页总结 技术篇2011新版首页总结 技术篇
2011新版首页总结 技术篇
 
慈濟大學/FHIR 快速掃描/DSTU3 版本
慈濟大學/FHIR 快速掃描/DSTU3 版本慈濟大學/FHIR 快速掃描/DSTU3 版本
慈濟大學/FHIR 快速掃描/DSTU3 版本
 
Node分享 展烨
Node分享 展烨Node分享 展烨
Node分享 展烨
 
数据架构方面的一些探讨
数据架构方面的一些探讨数据架构方面的一些探讨
数据架构方面的一些探讨
 
scrapy+sphinx搭建搜索引擎
scrapy+sphinx搭建搜索引擎scrapy+sphinx搭建搜索引擎
scrapy+sphinx搭建搜索引擎
 

Viewers also liked

思考的技術
思考的技術思考的技術
思考的技術eshen
 
My understanding of Git
My understanding of GitMy understanding of Git
My understanding of GitWeng Wei
 
我对ORM的思考
我对ORM的思考我对ORM的思考
我对ORM的思考Wei Weng
 
Migrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to GoMigrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to GoWeng Wei
 
Using Redis at Facebook
Using Redis at FacebookUsing Redis at Facebook
Using Redis at FacebookRedis Labs
 
Everything you always wanted to know about Redis but were afraid to ask
Everything you always wanted to know about Redis but were afraid to askEverything you always wanted to know about Redis but were afraid to ask
Everything you always wanted to know about Redis but were afraid to askCarlos Abalde
 

Viewers also liked (6)

思考的技術
思考的技術思考的技術
思考的技術
 
My understanding of Git
My understanding of GitMy understanding of Git
My understanding of Git
 
我对ORM的思考
我对ORM的思考我对ORM的思考
我对ORM的思考
 
Migrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to GoMigrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to Go
 
Using Redis at Facebook
Using Redis at FacebookUsing Redis at Facebook
Using Redis at Facebook
 
Everything you always wanted to know about Redis but were afraid to ask
Everything you always wanted to know about Redis but were afraid to askEverything you always wanted to know about Redis but were afraid to ask
Everything you always wanted to know about Redis but were afraid to ask
 

Similar to Redis

Another Introduce to Redis
Another Introduce to RedisAnother Introduce to Redis
Another Introduce to Redisjiaqing zheng
 
Mysql调优
Mysql调优Mysql调优
Mysql调优ken shin
 
Redis介绍
Redis介绍Redis介绍
Redis介绍锐 张
 
Introduction to big data
Introduction to big dataIntroduction to big data
Introduction to big data邦宇 叶
 
自助工具助Dba提升效率
自助工具助Dba提升效率自助工具助Dba提升效率
自助工具助Dba提升效率Chao Zhu
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展drewz lin
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展Hesey
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列XiaoJun Hong
 
新浪微博开放平台中的Redis实践
新浪微博开放平台中的Redis实践新浪微博开放平台中的Redis实践
新浪微博开放平台中的Redis实践TangoMe
 
Hbase介绍
Hbase介绍Hbase介绍
Hbase介绍Kay Yan
 
Hadoop con 2015 hadoop enables enterprise data lake
Hadoop con 2015   hadoop enables enterprise data lakeHadoop con 2015   hadoop enables enterprise data lake
Hadoop con 2015 hadoop enables enterprise data lakeJames Chen
 
1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计RolfZhang
 
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
開放原始碼 Ch2.4   app - oss - db (ver 1.0)開放原始碼 Ch2.4   app - oss - db (ver 1.0)
開放原始碼 Ch2.4 app - oss - db (ver 1.0)My own sweet home!
 
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 Chao Zhu
 
Bigdata introduction
Bigdata introductionBigdata introduction
Bigdata introductionTechwiser
 
新浪微博Feed服务架构
新浪微博Feed服务架构新浪微博Feed服务架构
新浪微博Feed服务架构XiaoJun Hong
 
分布式Key Value Store漫谈
分布式Key Value Store漫谈分布式Key Value Store漫谈
分布式Key Value Store漫谈Tim Y
 
分布式Key-value漫谈
分布式Key-value漫谈分布式Key-value漫谈
分布式Key-value漫谈lovingprince58
 
Template mb-kao
Template mb-kaoTemplate mb-kao
Template mb-kaoxwcoder
 

Similar to Redis (20)

Another Introduce to Redis
Another Introduce to RedisAnother Introduce to Redis
Another Introduce to Redis
 
Mysql调优
Mysql调优Mysql调优
Mysql调优
 
HBase
HBaseHBase
HBase
 
Redis介绍
Redis介绍Redis介绍
Redis介绍
 
Introduction to big data
Introduction to big dataIntroduction to big data
Introduction to big data
 
自助工具助Dba提升效率
自助工具助Dba提升效率自助工具助Dba提升效率
自助工具助Dba提升效率
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列
 
新浪微博开放平台中的Redis实践
新浪微博开放平台中的Redis实践新浪微博开放平台中的Redis实践
新浪微博开放平台中的Redis实践
 
Hbase介绍
Hbase介绍Hbase介绍
Hbase介绍
 
Hadoop con 2015 hadoop enables enterprise data lake
Hadoop con 2015   hadoop enables enterprise data lakeHadoop con 2015   hadoop enables enterprise data lake
Hadoop con 2015 hadoop enables enterprise data lake
 
1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计
 
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
開放原始碼 Ch2.4   app - oss - db (ver 1.0)開放原始碼 Ch2.4   app - oss - db (ver 1.0)
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
 
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点
 
Bigdata introduction
Bigdata introductionBigdata introduction
Bigdata introduction
 
新浪微博Feed服务架构
新浪微博Feed服务架构新浪微博Feed服务架构
新浪微博Feed服务架构
 
分布式Key Value Store漫谈
分布式Key Value Store漫谈分布式Key Value Store漫谈
分布式Key Value Store漫谈
 
分布式Key-value漫谈
分布式Key-value漫谈分布式Key-value漫谈
分布式Key-value漫谈
 
Template mb-kao
Template mb-kaoTemplate mb-kao
Template mb-kao
 

Redis

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n