博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.netcore 使用redis
阅读量:5368 次
发布时间:2019-06-15

本文共 2897 字,大约阅读时间需要 9 分钟。

我们需要添加一个Redis包:Microsoft.Extensions.Caching.Redis,这是官方的

1.在appsettings.json添加配置,如下图:

说明:

CacheProvider: ConnectionString   --- Redis连接       

          InstanceName     ---Redis实例名称   

 2.在startup添加redis服务,如下图

3.缓存接口 ICacheService

 

public interface ICacheService

{
/// <summary>
/// 获取缓存
/// </summary>
/// <param name="key">缓存key</param>
/// <returns></returns>
string Get(string key);
/// <summary>
///
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
string GetString(string key);
/// <summary>
///
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
void AddString(string key, string value);
/// <summary>
/// 添加缓存
/// </summary>
/// <param name="key">缓存key</param>
/// <param name="value">缓存值</param>
/// <param name="ExpirationTime">绝对过期时间(分钟)</param>
void Add(string key, string value, int ExpirationTime = 20);
/// <summary>
/// 移除缓存
/// </summary>
/// <param name="key"></param>
void Remove(string key);
/// <summary>
/// 更新缓存
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="ExpirationTime"></param>
void Replace(string key, string value, int ExpirationTime = 20);

4.实现接口 ICacheService

public class RedisCacheService:ICacheService

{
private RedisCache _redisCache = null;
public RedisCacheService(RedisCacheOptions options)
{
_redisCache = new RedisCache(options);
}
/// <summary>
/// 获取缓存
/// </summary>
/// <param name="key">缓存key</param>
/// <returns></returns>
public string Get(string key)
{
try
{
if (!string.IsNullOrEmpty(key))
{
return Encoding.UTF8.GetString(_redisCache.Get(key));
}
else
{
return string.Empty;
}
}
catch
{
return null;
}
}
/// <summary>
/// 添加缓存
/// </summary>
/// <param name="key">缓存key</param>
/// <param name="value">缓存值</param>
/// <param name="ExpirationTime">绝对过期时间(分钟)</param>
public void Add(string key,string value,int ExpirationTime=20)
{
if (!string.IsNullOrEmpty(key))
{
_redisCache.Set(key, Encoding.UTF8.GetBytes(value), new DistributedCacheEntryOptions()
{
AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(ExpirationTime)
});
}
}

public void AddString(string key, string value)

{
_redisCache.SetString(key,value);
}

public string GetString(string key)

{

return _redisCache.GetString(key);
}

/// <summary>

/// 移除缓存
/// </summary>
/// <param name="key">缓存key</param>
public void Remove(string key)
{
if (!string.IsNullOrEmpty(key))
{
_redisCache.Remove(key);
}
}
/// <summary>
/// 更新缓存
/// </summary>
/// <param name="key">缓存key</param>
/// <param name="value">缓存值</param>
/// <param name="ExpirationTime"></param>
public void Replace(string key, string value, int ExpirationTime = 20)
{
if (!string.IsNullOrEmpty(key))
{
_redisCache.Remove(key);
_redisCache.Set(key, Encoding.UTF8.GetBytes(value), new DistributedCacheEntryOptions()
{
AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(ExpirationTime)
});
}
}
}

转载于:https://www.cnblogs.com/zmaiwxl/p/8855950.html

你可能感兴趣的文章
OC12_自动释放池
查看>>
Saiku资源帖
查看>>
解决手机页面中点击文本框,网页放大问题
查看>>
2-5
查看>>
牛客多校3 A-PACM Team(状压降维+路径背包)
查看>>
HDU - 4284 Travel(floyd+状压dp)
查看>>
1027 制作表格
查看>>
Android之Socket通信、List加载更多、Spinner下拉列表
查看>>
面向对象的介绍与特性
查看>>
typing-python用于类型注解的库
查看>>
20189215 2018-2019-2 《密码与安全新技术专题》第13周作业
查看>>
第四周作业
查看>>
一、HTML基础
查看>>
蓝牙进阶之路 (002) - HC-05与HC-06的AT指令的区别(转)
查看>>
mysql的limit经典用法及优化
查看>>
C#后台程序与HTML页面中JS方法互调
查看>>
mysql 同一个表中 字段a 的值赋值到字段b
查看>>
linux系统可执行文件添加环境变量使其跨终端和目录执行
查看>>
antiSMASH数据库:微生物次生代谢物合成基因组簇查询和预测
查看>>
UNICODE与ANSI的区别
查看>>