- UID
- 2
- 精华
- 积分
- 7736
- 威望
- 点
- 宅币
- 个
- 贡献
- 次
- 宅之契约
- 份
- 最后登录
- 1970-1-1
- 在线时间
- 小时
|
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 [url]https://github.com/redis/redis.git[/url]
- cd redis && make && make install
- redis-server &
- pip3 install redis
复制代码
- git clone [url]https://github.com/ideawu/ssdb.git[/url]
- 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([random.choice('0123456789abcdef') for i in range(n)])
- test_count = 10000
- key_l = [rand_str(10) for i in range(test_count)]
- val_l = [rand_str(1024) for i in range(test_count)]
- cu = redis.Redis()
- cu.flushdb()
- begin_ts = time.time()
- for i in range(test_count):
- cu.set(key_l[i], val_l[i])
- cu.get(key_l[i])
- 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[i], val_l[i])
- cu.get(key_l[i])
- diff_ts = (time.time() - begin_ts) * 1000
- print("ssdb timeelapse", diff_ts)
复制代码
结果:
redis timeelapse 1965.770959854126
ssdb timeelapse 2156.818389892578
可见对于get/set这种最基本操作,redis略快于ssdb,毕竟是内存操作
|
|