Key-Value緩存有很多,用的較多的是memcache、redis,他們都是以獨立服務的形式運行,在工作中有時需要嵌入一個本地的key-value緩存,當然已經有LevelDb等,但感覺還是太重量級了。
本文實現了一種超級輕量的緩存,
1、實現代碼僅僅需要400行;
2、性能高效,value長度在1K時測試速度在每秒200萬左右
3、緩存是映射到文件中的,所以沒有malloc、free的開銷,以及帶來的內存泄露、內存碎片等;
4、如果服務掛掉了,重啟后緩存內容繼續存在;
5、如果把緩存映射到磁盤文件就算機器掛了,緩存中內容還是會存在,當然有可能會出現數據損壞的情況;
6、一定程度上實現了LRU淘汰算法,實現的LRU不是全局的只是一條鏈上的,所以只能說在一定程序上實現了;
7、穩定,已經在多個項目中運用,線上部署的機器有幾十臺,運行了大半年了沒出過問題;
8、普通的緩存key、value都是字符串的形式,此緩存的key、value都可以是class、struct對象結構使用更方便;
老規矩直接上代碼:
|
新聞熱點
疑難解答