SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
节约
Instagram Redis实
               Tony Deng
     http://twitter.com/wolfdeng
   http://friendfeed.com/tonydeng
   http://delicious.com/wolf.deng
    http://wolfchina.blogbus.com



                 1
Instagram 绍

• Instagram   说       App         级   应
                       App



• Instagram            达     3亿



                  2
户       储

Instagram   们           张   谁




                3
过图       ID        查 户UID                   应
•查询

•                                         EC2   high-
memory                储(17GB       34GB    68GB         费
    )

•        Instagram现       构 Instagram对Redis
    经验

•              这样        务         启            预热

                               4
库   储



5
应         库   update        务   联
查询    X

     为                 现   维护   库




                6
Redis实现



   7
简单        实现

Redis String结构       Key-valve   储




                 8
简单         实现

    Redis String结构          Key-valve   储

set media:1155315 939
get media:1155315
>939




                        8
简单             实现

    Redis String结构                Key-valve     储

set media:1155315 939
get media:1155315
>939

    1155315     图       ID   939        户ID
们        张图      ID      为key         户       UID
为value      储    key-value对

                              8
测试结

   1,000,000       69.92M
300,000,000张         20.48GB




               9
测试结

   1,000,000           69.92M
300,000,000张               20.48GB



               过17GB   预



                  9
办



10
现   还   优       们        key   储
纯       key值对        销




                11
现   还   优       们          key   储
纯       key值对          销

经过实验                 54.66MB 总
16GB    满 预




                11
+                       纯


 21
                 20.48



15.75
                                  16.01



  10.5



      5.25


             0
                         string


                          12
还        办



    13
Hash结构



  14
Hash结构   单   Hash                 时进     压
缩   储            节约

这                        hash-zipmap-max-entries




                    15
Hash结构    单      Hash                 时进     压
缩   储             节约

这                            hash-zipmap-max-entries


经过实验     hash-zipmap-max-entries设     为1000时
     较       过1000      HSET        导    CPU
变
                        15
进

HSET “mediabucket:1155” “1155315” “9399”
HGET “mediabucket:1155” “1155315”
>”939”




                        16
进

HSET “mediabucket:1155” “1155315” “9399”
HGET “mediabucket:1155” “1155315”
>”939”

 过   7     图   ID               Hash结构   key    证
      Hash            3        key       1000




                          16
测试结




 17
测试结


1,000,000   key         13.67MB
总                 4GB    满   应




                   17
+                           纯



30



22.5

               20.48

     15                         16.01



     7.5

                                             4.00
           0
                                                    hash
                       string


                                        18
还   优    吗



    19
HSET “1155” “315” “939”
HGET “1155” “315”
>”939”




           20
HSET “1155” “315” “939”
    HGET “1155” “315”
    >”939”


Hash结构   key值变 纯              Hash
    结构      key变



               20
测试结




 21
测试结


            9.75MB
总         为2.85GB




     21
+                           纯



30



22.5

              20.48

     15                        16.01



     7.5

                                            4.00          2.85
          0
                                                   hash
                      string


                                       22
还   优    吗



    23
24
优




    24
优

    储产        时   爱




         24
instagram-engineering.tumblr.com




              25

Mais conteúdo relacionado

Semelhante a 节约内存:Instagram的redis实践

D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践Jackson Tian
 
淘宝前端优化
淘宝前端优化淘宝前端优化
淘宝前端优化锐 张
 
淘宝前台系统优化实践“吞吐量优化”-Qcon2011
淘宝前台系统优化实践“吞吐量优化”-Qcon2011淘宝前台系统优化实践“吞吐量优化”-Qcon2011
淘宝前台系统优化实践“吞吐量优化”-Qcon2011Yiwei Ma
 
我对后端优化的一点想法
我对后端优化的一点想法我对后端优化的一点想法
我对后端优化的一点想法mysqlops
 
Redis 存储分片之代理服务twemproxy 测试
Redis 存储分片之代理服务twemproxy 测试Redis 存储分片之代理服务twemproxy 测试
Redis 存储分片之代理服务twemproxy 测试kaerseng
 
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析iammutex
 
阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化guiyingshenxia
 
阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化colderboy17
 
PHP Optimization for Millions Visits Level
PHP Optimization for Millions Visits LevelPHP Optimization for Millions Visits Level
PHP Optimization for Millions Visits LevelHo Kim
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理zijia
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理zijia
 
稳定、高效、低碳 -淘宝软件基础设施构建实践
稳定、高效、低碳  -淘宝软件基础设施构建实践稳定、高效、低碳  -淘宝软件基础设施构建实践
稳定、高效、低碳 -淘宝软件基础设施构建实践Wensong Zhang
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化丁 宇
 
Hbase介绍
Hbase介绍Hbase介绍
Hbase介绍Kay Yan
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现iammutex
 

Semelhante a 节约内存:Instagram的redis实践 (17)

D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
 
HBase
HBaseHBase
HBase
 
淘宝前端优化
淘宝前端优化淘宝前端优化
淘宝前端优化
 
淘宝前台系统优化实践“吞吐量优化”-Qcon2011
淘宝前台系统优化实践“吞吐量优化”-Qcon2011淘宝前台系统优化实践“吞吐量优化”-Qcon2011
淘宝前台系统优化实践“吞吐量优化”-Qcon2011
 
我对后端优化的一点想法
我对后端优化的一点想法我对后端优化的一点想法
我对后端优化的一点想法
 
Redis 存储分片之代理服务twemproxy 测试
Redis 存储分片之代理服务twemproxy 测试Redis 存储分片之代理服务twemproxy 测试
Redis 存储分片之代理服务twemproxy 测试
 
[Crypto Course] Hash
[Crypto Course] Hash[Crypto Course] Hash
[Crypto Course] Hash
 
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析
 
阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化
 
阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化
 
PHP Optimization for Millions Visits Level
PHP Optimization for Millions Visits LevelPHP Optimization for Millions Visits Level
PHP Optimization for Millions Visits Level
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理
 
稳定、高效、低碳 -淘宝软件基础设施构建实践
稳定、高效、低碳  -淘宝软件基础设施构建实践稳定、高效、低碳  -淘宝软件基础设施构建实践
稳定、高效、低碳 -淘宝软件基础设施构建实践
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
 
Hbase介绍
Hbase介绍Hbase介绍
Hbase介绍
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现
 

Mais de Tony Deng

一页纸项目管理
一页纸项目管理一页纸项目管理
一页纸项目管理Tony Deng
 
Docker at the gate
Docker at the gateDocker at the gate
Docker at the gateTony Deng
 
《我们如何工作》—质量保障
《我们如何工作》—质量保障《我们如何工作》—质量保障
《我们如何工作》—质量保障Tony Deng
 
《我们如何工作》- 产品经理和工程师如何有效沟通
《我们如何工作》- 产品经理和工程师如何有效沟通《我们如何工作》- 产品经理和工程师如何有效沟通
《我们如何工作》- 产品经理和工程师如何有效沟通Tony Deng
 
我们为何工作--找到正确的工作方式
我们为何工作--找到正确的工作方式我们为何工作--找到正确的工作方式
我们为何工作--找到正确的工作方式Tony Deng
 
漫谈职业规划
漫谈职业规划漫谈职业规划
漫谈职业规划Tony Deng
 
一次Http请求过程分析
一次Http请求过程分析一次Http请求过程分析
一次Http请求过程分析Tony Deng
 
一次Code review引发的思考
一次Code review引发的思考一次Code review引发的思考
一次Code review引发的思考Tony Deng
 
My sql迁移总结
My sql迁移总结My sql迁移总结
My sql迁移总结Tony Deng
 
一次项目的探险旅程
一次项目的探险旅程一次项目的探险旅程
一次项目的探险旅程Tony Deng
 
Scrum敏捷开发模型
Scrum敏捷开发模型Scrum敏捷开发模型
Scrum敏捷开发模型Tony Deng
 
Shoutv 冯晓东
Shoutv 冯晓东Shoutv 冯晓东
Shoutv 冯晓东Tony Deng
 
技术债务的形成
技术债务的形成技术债务的形成
技术债务的形成Tony Deng
 
我们不了解的计算机世界(二)
我们不了解的计算机世界(二)我们不了解的计算机世界(二)
我们不了解的计算机世界(二)Tony Deng
 
我们不了解的计算机世界(一)--Unix目录结构的来历
我们不了解的计算机世界(一)--Unix目录结构的来历我们不了解的计算机世界(一)--Unix目录结构的来历
我们不了解的计算机世界(一)--Unix目录结构的来历Tony Deng
 
实时任务调度
实时任务调度实时任务调度
实时任务调度Tony Deng
 
晁盖与宋江的“兄弟情谊”
晁盖与宋江的“兄弟情谊”晁盖与宋江的“兄弟情谊”
晁盖与宋江的“兄弟情谊”Tony Deng
 
非常靠谱 Html 5
非常靠谱 Html 5 非常靠谱 Html 5
非常靠谱 Html 5 Tony Deng
 

Mais de Tony Deng (20)

一页纸项目管理
一页纸项目管理一页纸项目管理
一页纸项目管理
 
Docker at the gate
Docker at the gateDocker at the gate
Docker at the gate
 
《我们如何工作》—质量保障
《我们如何工作》—质量保障《我们如何工作》—质量保障
《我们如何工作》—质量保障
 
《我们如何工作》- 产品经理和工程师如何有效沟通
《我们如何工作》- 产品经理和工程师如何有效沟通《我们如何工作》- 产品经理和工程师如何有效沟通
《我们如何工作》- 产品经理和工程师如何有效沟通
 
我们为何工作--找到正确的工作方式
我们为何工作--找到正确的工作方式我们为何工作--找到正确的工作方式
我们为何工作--找到正确的工作方式
 
SDN介绍
SDN介绍SDN介绍
SDN介绍
 
漫谈职业规划
漫谈职业规划漫谈职业规划
漫谈职业规划
 
一次Http请求过程分析
一次Http请求过程分析一次Http请求过程分析
一次Http请求过程分析
 
图解Git
图解Git图解Git
图解Git
 
一次Code review引发的思考
一次Code review引发的思考一次Code review引发的思考
一次Code review引发的思考
 
My sql迁移总结
My sql迁移总结My sql迁移总结
My sql迁移总结
 
一次项目的探险旅程
一次项目的探险旅程一次项目的探险旅程
一次项目的探险旅程
 
Scrum敏捷开发模型
Scrum敏捷开发模型Scrum敏捷开发模型
Scrum敏捷开发模型
 
Shoutv 冯晓东
Shoutv 冯晓东Shoutv 冯晓东
Shoutv 冯晓东
 
技术债务的形成
技术债务的形成技术债务的形成
技术债务的形成
 
我们不了解的计算机世界(二)
我们不了解的计算机世界(二)我们不了解的计算机世界(二)
我们不了解的计算机世界(二)
 
我们不了解的计算机世界(一)--Unix目录结构的来历
我们不了解的计算机世界(一)--Unix目录结构的来历我们不了解的计算机世界(一)--Unix目录结构的来历
我们不了解的计算机世界(一)--Unix目录结构的来历
 
实时任务调度
实时任务调度实时任务调度
实时任务调度
 
晁盖与宋江的“兄弟情谊”
晁盖与宋江的“兄弟情谊”晁盖与宋江的“兄弟情谊”
晁盖与宋江的“兄弟情谊”
 
非常靠谱 Html 5
非常靠谱 Html 5 非常靠谱 Html 5
非常靠谱 Html 5
 

节约内存:Instagram的redis实践

  • 1. 节约 Instagram Redis实 Tony Deng http://twitter.com/wolfdeng http://friendfeed.com/tonydeng http://delicious.com/wolf.deng http://wolfchina.blogbus.com 1
  • 2. Instagram 绍 • Instagram 说 App 级 应 App • Instagram 达 3亿 2
  • 3. 储 Instagram 们 张 谁 3
  • 4. 过图 ID 查 户UID 应 •查询 • EC2 high- memory 储(17GB 34GB 68GB 费 ) • Instagram现 构 Instagram对Redis 经验 • 这样 务 启 预热 4
  • 5. 储 5
  • 6. 库 update 务 联 查询 X 为 现 维护 库 6
  • 8. 简单 实现 Redis String结构 Key-valve 储 8
  • 9. 简单 实现 Redis String结构 Key-valve 储 set media:1155315 939 get media:1155315 >939 8
  • 10. 简单 实现 Redis String结构 Key-valve 储 set media:1155315 939 get media:1155315 >939 1155315 图 ID 939 户ID 们 张图 ID 为key 户 UID 为value 储 key-value对 8
  • 11. 测试结 1,000,000 69.92M 300,000,000张 20.48GB 9
  • 12. 测试结 1,000,000 69.92M 300,000,000张 20.48GB 过17GB 预 9
  • 14. 还 优 们 key 储 纯 key值对 销 11
  • 15. 还 优 们 key 储 纯 key值对 销 经过实验 54.66MB 总 16GB 满 预 11
  • 16. + 纯 21 20.48 15.75 16.01 10.5 5.25 0 string 12
  • 17. 办 13
  • 19. Hash结构 单 Hash 时进 压 缩 储 节约 这 hash-zipmap-max-entries 15
  • 20. Hash结构 单 Hash 时进 压 缩 储 节约 这 hash-zipmap-max-entries 经过实验 hash-zipmap-max-entries设 为1000时 较 过1000 HSET 导 CPU 变 15
  • 21. 进 HSET “mediabucket:1155” “1155315” “9399” HGET “mediabucket:1155” “1155315” >”939” 16
  • 22. 进 HSET “mediabucket:1155” “1155315” “9399” HGET “mediabucket:1155” “1155315” >”939” 过 7 图 ID Hash结构 key 证 Hash 3 key 1000 16
  • 24. 测试结 1,000,000 key 13.67MB 总 4GB 满 应 17
  • 25. + 纯 30 22.5 20.48 15 16.01 7.5 4.00 0 hash string 18
  • 26. 优 吗 19
  • 27. HSET “1155” “315” “939” HGET “1155” “315” >”939” 20
  • 28. HSET “1155” “315” “939” HGET “1155” “315” >”939” Hash结构 key值变 纯 Hash 结构 key变 20
  • 30. 测试结 9.75MB 总 为2.85GB 21
  • 31. + 纯 30 22.5 20.48 15 16.01 7.5 4.00 2.85 0 hash string 22
  • 32. 优 吗 23
  • 33. 24
  • 34. 24
  • 35. 储产 时 爱 24

Notas do Editor

  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