采用Tokyo Cabinet的一些问题

我们经常需要一些内存数据库,进行key-value的插入,查询,更新操作。需求基本上有几个层次

  1. 内存操作,方便使用

  2. 处理快,稳定性,占用内存多少等

  3. 持久化问题

在这里说说用过的一些Nosql。没有持久化的,Glib hash等;持久化的,BDB,TCHDB,Redis等。

一般来说Ghash就够了,接口简单,性能也很好。需要持久化,最轻量级的莫过于TCHDB,不需要安装什么东西,也不会产生维护进程,调用lib库接口,被大量使用。但是问题是,不够稳定,持久化的文件会损坏,死锁。更要命的当数据量大的时候,一部分数据在内存一部分在磁盘,这时候进行查询或者遍历操作时,磁盘IO占用很大,导致CPU利用率飙升。

最近做集群服务器,为了解决服务器之前数据同步共享,也为了解决TCHDB带来的CPU问题,研究了一下Redis的方案。结论

  1. Redis天生就是CS模型,可支持一组集群设备,一个数据服务器

  2. 对于一台服务器,epool模型多线程的数据操作支持问题?可支持。多线程问题,有一篇博文写的很好,

http://blog.csdn.net/educast/article/details/37565639

总之,redis是很好的选择。




你可能感兴趣的:(采用Tokyo Cabinet的一些问题)