元始天尊 发表于 2021-7-18 19:53:17

redis和ssdb比较

redis是一款key-value型内存数据库,开发存储功能十分方便而广受欢迎,由于内存存储因此处理相当快
ssdb是一款key-value型硬盘数据库,底层依赖于leveldb,在ssd上存储也非常快,ssdb将leveldb封装成类似redis从而易于操作

redis优点:
1. 社区活跃,更新频繁,功能完善
2. 支持各种复杂场景级连,集群模式,主从模式和哨兵模式。高可用。当主服务器宕机时可自动将从服务器切换为主服务器
3. 支持数据备份,读写分离
redis缺点:
1. 纯内存数据库,因此不适合存放大量数据。

2020年7月份我曾使用过redis2个月,当时将所有用户数据存放在redis中,结果内存超出导致崩溃,永久丢失数据。后来多方查找key-value型硬盘数据库,最终选择ssdb,目前ssdb线上功能稳定,赞一个!
ssdb不像redis那样支持众多功能,但是对于小规模的服务器集群也够用了。最主要的是ssdb用的是硬盘空间,比较难耗尽。redis适合做数据缓存,不适合存储大量数据

下面使用简单场景对比一下redis和ssdb的速度(这里只对比get/set操作,其他操作读者有兴趣可以自行尝试):
环境:CentOS7 CPU:1 MEM:1G DISK:20G   

安装:
git clone https://github.com/redis/redis.git
cd redis && make && make install
redis-server &
pip3 install redis

git clone https://github.com/ideawu/ssdb.git
cd ssdb && make && make install
/usr/local/ssdb/ssdb-server -d /usr/local/ssdb/ssdb.conf &
pip3 install pyssdb


测试:
import random
import time
import redis
import pyssdb

rand_str = lambda n:''.join()

test_count = 10000
key_l =
val_l =

cu = redis.Redis()
cu.flushdb()
begin_ts = time.time()
for i in range(test_count):
    cu.set(key_l, val_l)
    cu.get(key_l)
diff_ts = (time.time() - begin_ts) * 1000
print("redis timeelapse", diff_ts)

cu = pyssdb.Client()
cu.flushdb()
begin_ts = time.time()
for i in range(test_count):
    cu.set(key_l, val_l)
    cu.get(key_l)
diff_ts = (time.time() - begin_ts) * 1000
print("ssdb timeelapse", diff_ts)

结果:
redis timeelapse 1965.770959854126
ssdb timeelapse 2156.818389892578

可见对于get/set这种最基本操作,redis略快于ssdb,毕竟是内存操作

页: [1]
查看完整版本: redis和ssdb比较