Simple Cache是一个使用go语言开发的简洁、高性能的内存KV数据库,支持Redis协议。
- 支持Redis协议,支持的命令包括SET、SETEX、GET、DEL,你可以使用Redis客户端连接Simple Cache
- 自研NoCopyBuffer做为IO缓存,利用零拷贝技术减少内存复制开销
- 自研FastKV内存存储引擎,避免了go语言GC开销
buffer被分割成一个个的小块,使用链表的形式连接在一起。当buffer node被写满时,无需进行GC,只需要取一个新的buffer node放在最后即可。当最前面的node被使用后,则可直接回收。
当存储元素超过千万时,go语言map造成的单次GC开销达百毫秒以上。但是Go 1.5引入了一个新特性:当map中的key和value都是基础类型时,GC就不会扫到 map 里的 key 和 value。simple_cache利用该特性,使用map[uint64]int作为索引,然后再申请一块巨大的[]byte存储真正的数据,map中只存key的hash值和data的offset。