using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.Caching.Redis;
using System;
using System.Collections.Generic;
using System.Text;
namespace CC.Yi.Common.Cache
{
public class RedisCacheService :ICacheWriter
{
private RedisCache _redisCache = null;
public RedisCacheService(RedisCacheOptions options)
{
_redisCache = new RedisCache(options);
}
///
/// 获取缓存
///
/// 缓存key
///
public string Get(string key)
{
try
{
if (!string.IsNullOrEmpty(key))
{
return Encoding.UTF8.GetString(_redisCache.Get(key));
}
else
{
return string.Empty;
}
}
catch
{
return null;
}
}
///
/// 添加缓存
///
/// 缓存key
/// 缓存值
/// 绝对过期时间(分钟)
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);
}
///
/// 移除缓存
///
/// 缓存key
public void Remove(string key)
{
if (!string.IsNullOrEmpty(key))
{
_redisCache.Remove(key);
}
}
///
/// 更新缓存
///
/// 缓存key
/// 缓存值
///
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)
});
}
}
}
}