ssdb(leveldb server) vs redis
DESCRIPTION
SSDB - A LevelDB server with zset data typeTRANSCRIPT
![Page 1: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/1.jpg)
SSDB(LevelDB) vs Redis
ideawu
https://code.google.com/p/zdb/
![Page 2: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/2.jpg)
问题 数据有 : a, b, c, d, e(5 个单位 )
内存容量 : 4 个单位 硬盘容量 : 100 个单位
问题 : 内存放不下所有数据 数据可以放硬盘 , 但硬盘较慢
![Page 3: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/3.jpg)
Redis 存储结构memory aof(log)a=1 a=1b=2 b=2c=1 a=3d=1 c=6 a=1e is LOST! d=7 e=3 d=1 b=2 c=3 a=1 c=1
![Page 4: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/4.jpg)
Redis 查找 先查找内存 如果内存中没找到 , 那就真的没找到 上例中 , e 因内存容量限制被丢弃了 ...
![Page 5: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/5.jpg)
LevelDB 内部存储结构memory log level 0 ... level n
a=1 a=1 a=3 a=1b=2 b=2 b=2 b=2c=1 a=3 c=6 c=1d=7 c=6 a=1 a=1 d=7 d=7 d=7 e=3 e=3 e=3 d=1 b=2 a=1 c=3 b=2 a=1 c=1 c=1
![Page 6: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/6.jpg)
LevelDB 查找 先查内存 直接跳过 log, 查 level0
level0 有重叠 , 从新到旧查找 查 level1...
![Page 7: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/7.jpg)
Redis 和 LevelDB 简单介绍 Redis
网络字典服务器 除 KV, 支持丰富的数据类型 , 如 list, zset 在互联网公司有广泛应用 C 语言开发
LevelDB Google 公司 Bigtable 系统存储引擎的开源版本 KV 存储 , 数据有序 应用不广泛 , 作为 Chrome 的内嵌存储引擎 , 作为一
些开源分布式系统的存储引擎 C++ 语言开发
![Page 8: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/8.jpg)
Redis vs LevelDBRedis LevelDB
持久化存储
写速度快
完全内存查找 , 速度极快 若内存找不到 , 再找硬盘 , 速度受影响
网络支持 只是一个 C/C++ 编程语言库
受限于内存容量 , 硬盘只作为备份 存储容量不受内存容量限制 , 依赖硬盘
主从同步机制不完善
![Page 9: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/9.jpg)
SSDB - LevelDB 服务器 基于 LevelDB 引擎封装网络服务 (epoll) 替代 Redis 或者和 Redis 搭配使用 支持 Redis 的常用关键数据结构 客户端 API 与 Redis 相似
![Page 10: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/10.jpg)
SSDB vs Redis
![Page 11: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/11.jpg)
SSDB vs Redis 随机读写测试 在 M 个写连接和 N 个读连接持久请求的情况下 ,
+1 个连接 , 分别测试读写性能 用 PHP 进行读和写 , SSDB 和 Redis 代码基本一
样 用 Python fork 多进程
![Page 12: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/12.jpg)
随机读写 – 0 写 0 读 +1 测
![Page 13: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/13.jpg)
随机读写 – 1 写 4 读 +1 测
![Page 14: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/14.jpg)
随机读写 – 2 写 8 读 +1 测
![Page 15: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/15.jpg)
随机读写 – 3 写 12 读 +1 测
![Page 16: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/16.jpg)
随机读写 – 4 写 16 读 +1 测
![Page 17: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/17.jpg)
SSDB Redis 命令对比 - KV
keys() 返回全部数据 , scan() 支持分页
![Page 18: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/18.jpg)
SSDB Redis 命令对比 - ZSET
zRangeByScore(name, score_start, score_end, options);
zscan(name, key_start, score_start, score_end, limit);
![Page 19: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/19.jpg)
SSDB Redis 命令对比 - HASHMAP
SSDB 的 hkeys/hscan 支持分页
![Page 20: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/20.jpg)
支持断点续传的主从同步 Redis 的主从同步一旦异常中断 , 就得从头再来 SSDB 可以从上一个断点开始同步
![Page 21: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/21.jpg)
TODO 性能 分布式
![Page 22: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/22.jpg)
链接 https://code.google.com/p/zdb/ https://code.google.com/p/leveldb/ http://redis.io/ https://github.com/ideawu/ssdb
![Page 23: SSDB(LevelDB server) vs Redis](https://reader036.vdocuments.pub/reader036/viewer/2022081417/5588fa2ed8b42a10688b472b/html5/thumbnails/23.jpg)
FINThanks