最近关注了一下ssdb,他的特色是基于文件存储系统因此它支撑量大的数据而不由于内存的限制受取约束.从官网的测试报告来看其性能也很是出色和redis至关,所以能够使用他表明redis来进行k-v数据业务的处理.想法老是美好的,不过现实中就可能很是骨感. git
以于针对Redis和ssdb的几个读操进行一个简单的性能测试对比,这个测试不是直接在本机调用Redis和ssdb. 而是经过一个程序在别的服务器上调用.测试指令(get,hget,lregion)如下是测试结果截图 github
测试代码 redis
private void HGetHandler(RedisClient e) { while (mRuning) { long index = System.Threading.Interlocked.Increment(ref mIndex); ProtobufKey key = "user_" + Data.Import.Users[(int)(index % Data.Import.Users.Count)].Name; key.Get<Model.Order, Model.Employee, Model.Customer>(e); System.Threading.Interlocked.Increment(ref mCount); } } private void LRegionHandler1TO2(RedisClient e) { while (mRuning) { ProtobufList<Model.Order> list = "Orders"; list.Range(1, 2, e); System.Threading.Interlocked.Increment(ref mCount); } } private void LRegionHandler50TO60(RedisClient e) { while (mRuning) { ProtobufList<Model.Order> list = "Orders"; list.Range(50, 60, e); System.Threading.Interlocked.Increment(ref mCount); } } private void LRegionHandler100TO110(RedisClient e) { while (mRuning) { ProtobufList<Model.Order> list = "Orders"; list.Range(100, 110, e); System.Threading.Interlocked.Increment(ref mCount); } } private void GetHandler(RedisClient e) { while (mRuning) { long index = System.Threading.Interlocked.Increment(ref mIndex); ProtobufKey key = "user_" + Data.Import.Users[(int)(index % Data.Import.Users.Count)].Name; key.Get<Model.User>(e); System.Threading.Interlocked.Increment(ref mCount); } }
从测试结果看来差距仍是很是明显,并不象官网那样说得这么理想.虽然SSDB效率上不如REDIS,但其基于磁盘存储有着其最大的优点,毕竟不少业务数据远超过服务器内存的容量. c#
我的站:www.ikende.com 服务器
我的开源项目github.com/IKende 性能