ssdb数据库对比mysql_SSDB 和 Redis 的优缺点各有哪些?

redis是内存数据库,ssdb是面向硬盘的存储,二者在存储格式和读写方式上有着根本的不同。前面回答里提到的zrevrange 和 zrevrangebyscore慢,而zrange 和 zrangebyscore 还能接受,其实就是说逆序遍历比顺序遍历慢得多,其根本原因就在于逆序遍历的时候,会多一个“记录头部”定位的过程,需要不断尝试去定位到两条记录的“分界点”,而顺序遍历的时候则不需要,因为读完一条记录直接就到了下一条记录的“分界点”,并且像rocksdb之类的存储引擎都会把数据长度保存在记录的元信息里,只需要按长度读取数据就可以了。redis则不存在类似问题,因为它是完全基于指针和偏移量在内存中进行寻址来读取数据的,寻址效率高了好多个数量级。

ssdb貌似就是一个个人项目,但代码质量还是不错的,整个设计思想比较简洁。

ssdb的主从复制效率很低。binlog和数据是分开存储的,日志冗余较多,由于ssdb本身要在多线程条件下才能发挥出更好的性能,为了使多个线程在写入binlog时能保证操作顺序和原子性,ssdb的binlog数据结构上用了一把全局锁,可想而知,这里的锁竞争会很影响性能。

另外,ssdb默认也没有集群管理的支持。

ssdb的好处,和swapdb(http://github.com/JRHZRD/swapdb)一样,都可以省钱。如果有需要,可以尝试swapdb,它结合了redis和ssdb的优点,实现了基于LFU的热度统计和冷热交换,做到了低成本和高性能的高平衡。

redis的好处,那就多了。缺点就是纯内存,比用SSD花钱。


版权声明:本文为weixin_36376992原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。