zoukankan      html  css  js  c++  java
  • Boost LRU-Cache使用方法简介

        缓存是提高系统运行效率的常用组件,可以将“有效的”业务数据直接返回用户,避免繁琐的计算过程。除了Redis、MemCache等常用缓存系统,应用程序内部也可以根据需要设置一定容量的缓存,减少跨进程调用,提高效率。

        LRU是常用的缓存策略,可以将访问最 频繁的数据保存在有限的缓存中,提高缓存命中率。

        在C++中,可以通过map来保存数据键值对,并通过list将最近使用的数据保存在一端,从list的另一端来清除过期数据的方法实现一个缓存系统。

        然而,我们没必要自己再造一个轮子。Boost-1.65.1版本开始引入了lru_cache算法,通过模板的方式可以方便的实例化出各种类型的缓存对象。

        下面简单介绍boost lru_cache的使用方法。

        

    #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

  • 相关阅读:
    VB.NET 操作16进制文件
    MATLAB串口通信与实时数据处理
    matlab中 @文件夹名/+文件夹名 的含义
    C#中的换行符、回车
    利用monkeyrunner给Android屏幕连续截图的小程序
    设计模式之结构型模式
    《设计模式》读书笔记(一)
    开发Android小应用——短信控制的浮动窗
    《重构》读书笔记(一)
    设计模式之行为模式
  • 原文地址:https://www.cnblogs.com/rd-log/p/7850969.html
Copyright © 2011-2022 走看看