1 .Net内置内存缓存
asp.net 种缓存的实现:HttpContext.Cache. 缓存的数据是放在web服务器的进程的内厝里。在不支持HttpContext的地方可以使用MemoryCache.Default(System.Runtime.Caching这个程序集中),HttpContext.Cache其实就是对MemoryCache的封装。
//写入
MemoryCache.Default.Add("age", 66, DateTimeOffset.Now.AddMinutes(1));
//读取
if (MemoryCache.Default.Contains("name"))
{
int age = (int)MemoryCache.Default["age"];
}
使用场景: 效率高,在可预期数据量不大的情况下使用
2 Memcached
简介:
- 它是一个专门用来做缓存的服务器,而且缓存的数据都在内存中。
- mc的核心职能是KV内存管理,value存储最大为1M,它不支持复杂数据结构(哈希、列表、集合、有序集合等);
- mc不支持持久化;
安装
https://www.runoob.com/memcached/window-install-memcached.html
连接
- Install-Package EnyimMemcached
- 存入的是键值对。存入数据的3种模式 Set Replce Add,没有特殊要求一般使用set就行了
- Set:存在则覆盖,不存在则新找
- Replce:存在则覆盖,并且返回true;不存在不处理,返回false
- Add:存在不处理,返回false;不存在则新找,返回true
- 如果存入的是一个对象,该对象必须是可序列化的.[Serializable]
- Remove 删除键值对
- Get 根据Key获取值
MemcachedClientConfiguration memConfig = new MemcachedClientConfiguration();
memConfig.AddServer("127.0.0.1:11211");
//节点定位算法会自动处理故障服务器
memConfig.NodeLocatorFactory = new KetamaNodeLocatorFactory();
using (MemcachedClient memClient = new MemcachedClient(memConfig))
{
memClient.Store(Enyim.Caching.Memcached.StoreMode.Set, "Name", "猪八戒", TimeSpan.FromSeconds(5));
string name = (string)memClient.Get("Name");
if (name != null)
{
Console.WriteLine(name);
}
}