首页 新闻 会员 周边

.NET 中的缓存管理

0
悬赏园豆:100 [已解决问题] 解决于 2018-02-28 17:12

.NET-Core 目前的项目中是使用 Memcached 来进行缓存的存取的,但是最近在使用时有点疑惑的地方:
 有很多的CacheKey,我总不能这样写把

//Save key
_cache.Add("key1");
_cache.Add("key2");
_cache.Add("Key3");
...
//remove key
_cache.Remove("key1");
_cache.Remove("key2");
_cache.Remove("key3");

我目前采取的做法是,抽离出来一个 CacheManage 类,里面进行AddRemove 的集中操作(代码示例如下):

//移除key的代码
Task RemoveCache(IEnumerable<string> cacheKeyList)
{
    var tasks = cacheKeyList.Select(cacheKey=>_cache.RemoveAsync(cacheKey)).Cast<Task>().ToList();

    await Task.WhenAll(tasks);
}

上面的代码,我还是觉得有点不够理想;
我想请问一下大家在项目中是如何处理缓存相关的,是否有示例项目代码供参考?

BUTTERAPPLE的主页 BUTTERAPPLE | 老鸟四级 | 园豆:3190
提问于:2017-07-12 12:40
< >
分享
最佳答案
1

最好的方法是归类,就是对key有规律; http://blog.csdn.net/zhaoxuejie/article/details/7739255

 

如果非要删除也可以用这个:http://www.iyunv.com/thread-140469-1-1.html

$str = $mem->getExtendedStats('cachedump', $number, 0);  //0表示所有  若为其他数值则取多少条  $number为stats items的数值
$line = $str[$host];
foreach ($line as $k=>$v){
$keys[] = $k;
//模糊获取的话
//if (substr($k, 0, 5) === 'data_') {
//          $keys[] = $k;
// }
收获园豆:50
悟行 | 专家六级 |园豆:12559 | 2017-07-12 13:26
其他回答(2)
0

h缓存失效方法.orchard项目里是根据一个什么依赖来做.

没学会.你可以试着看看orchard的缓存模块.

收获园豆:30
吴瑞祥 | 园豆:29449 (高人七级) | 2017-07-12 12:43

您好,请问是这个 Github上的这个Orchard吗?

支持(0) 反对(0) BUTTERAPPLE | 园豆:3190 (老鸟四级) | 2017-07-12 12:44

@BUTTERAPPLE: 是的.不过我看的是1.但是2应该也是差不多的.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-07-12 12:47

@吴瑞祥: 好的,我去看看。谢啦。

支持(0) 反对(0) BUTTERAPPLE | 园豆:3190 (老鸟四级) | 2017-07-12 12:48
0

w 我通常是把缓存的key根据业务来进行分类,然后都定义成一个字符串常量放一个类里,常量的命名加上业务前缀

收获园豆:20
balahoho | 园豆:2050 (老鸟四级) | 2017-07-12 18:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册