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