Boost LRU-Cache使用方法簡介

    緩存是提升系統運行效率的經常使用組件,能夠將「有效的」業務數據直接返回用戶,避免繁瑣的計算過程。除了Redis、MemCache等經常使用緩存系統,應用程序內部也能夠根據須要設置必定容量的緩存,減小跨進程調用,提升效率。ios

    LRU是經常使用的緩存策略,能夠將訪問最 頻繁的數據保存在有限的緩存中,提升緩存命中率。算法

    在C++中,能夠經過map來保存數據鍵值對,並經過list將最近使用的數據保存在一端,從list的另外一端來清除過時數據的方法實現一個緩存系統。緩存

    然而,咱們不必本身再造一個輪子。Boost-1.65.1版本開始引入了lru_cache算法,經過模板的方式能夠方便的實例化出各類類型的緩存對象。spa

    下面簡單介紹boost lru_cache的使用方法。code

    

#lru_cache頭文件,這是個header-only庫,不須要其餘模塊
#include <string>
#include <iostream>
using namespace std;
#include <boost/compute/detail/lru_cache.hpp>
 
int main()
{
     const int iCacheSize=100;
     #初始化時設置緩存容量
     boost::compute::detail::lru_cache<string, string> ssCache(iCacheSize);
 
     #插入數據
     ssCache.insert( "ZhangSan" , "Beijing" );
     ssCache.insert( "LiSi" , "Shanghai" );
 
     #查找並獲取數據
     string s( "ZhangSan" );
     if (ssCache.contains(s))
     {
         #注意!get方法返回的是一個boost::optional<string>對象,而不是直接返回存入其中的Value類型的對象!
         boost::optional<string> o_Region=ssCache.get(s);
         #咱們能夠經過boost::optional<string>的get()來獲取Value對象
         string sRegion=o_Region.get();
         cout << s << " comes from " << sRegion << endl;
     }
 
     return 0;
}

零一積流|IT參考 原創文章,轉載請註明出處: http://www.it-refer.com/2017/11/13/boost-lru-cache-usage對象

相關文章
相關標籤/搜索