在.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
类,里面进行Add
和 Remove
的集中操作(代码示例如下):
//移除key的代码
Task RemoveCache(IEnumerable<string> cacheKeyList)
{
var tasks = cacheKeyList.Select(cacheKey=>_cache.RemoveAsync(cacheKey)).Cast<Task>().ToList();
await Task.WhenAll(tasks);
}
上面的代码,我还是觉得有点不够理想;
我想请问一下大家在项目中是如何处理缓存相关的,是否有示例项目代码供参考?
最好的方法是归类,就是对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; // }
h缓存失效方法.orchard项目里是根据一个什么依赖来做.
没学会.你可以试着看看orchard的缓存模块.
w 我通常是把缓存的key根据业务来进行分类,然后都定义成一个字符串常量放一个类里,常量的命名加上业务前缀