.NET 中的缓存管理

2019-01-03 03:10发布

.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);
}

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

3条回答
Summer. ? 凉城
2楼-- · 2019-01-03 03:47

最好的方法是归类,就是对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;
// }
查看更多
Explosion°爆炸
3楼-- · 2019-01-03 03:48

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

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

查看更多
一夜七次
4楼-- · 2019-01-03 03:52

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

查看更多
登录 后发表回答