起因
ledisdb是一个參考ssdb。採用go实现,底层基于leveldb,相似redis的高性能nosql数据库,提供了kv,list,hash以及zset数据结构的支持。
我们如今的应用极大的依赖redis。但随着我们用户量越来越大,redis的内存越来越不够用。而且replication可能还会导致超时问题。
尽管兴许我们能够通过加入多台机器来解决。可是在现有机器配置以下。我们仍希望单台机器承载很多其它的用户。另外,由于业务的特性,我们事实上并不须要将全部的数据放到内存。仅仅须要存放当前活跃用户。
经过我们的调研,发现ssdb已经非常好的帮我们攻克了这个问题,它提供了跟redis一致的接口(当然有些地方还是略微不同)。可是底层採用leveldb进行存储。
依据其官网的描写叙述。性能已经接近甚至超越了redis。
本着造轮子的精神。我决定用go实现一个相似的db。取名为ledisdb。也就是level-redis-db,为啥不用现成的ssdb,我觉得有例如以下几个原因:
go语言开发的高速。这点毋庸置疑,尽管性能上面铁定离c++的代码有差距。可是我能够高速的进行原型搭建并实验。实际上,我在非常短的时间里面就开发出了ledisdb。让我兴许继续开发有了信心。
leveldb的研究。我一直非常想将leveldb应用到我们的项目中,作为本机热点数据的首选数据存储方式。通过ledisdb,让我对leveldb的使用有了非常多经验。
redis的熟悉,尽管我用了非常久的redis,可是非常多redis的命令仍然须要去查手冊。通过实现ledisdb,我更加熟悉了redis的命令,同一时候,由于要了解这个命令redis怎样实现。