using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace WIDESEAWCS_Core.Caches
|
{
|
public interface ICacheService : IDisposable
|
{
|
/// <summary>
|
/// 验证缓存项是否存在
|
/// </summary>
|
/// <param name="key">缓存Key</param>
|
/// <returns></returns>
|
bool Exists(string key);
|
|
/// <summary>
|
/// 添加缓存
|
/// </summary>
|
/// <param name="key">缓存Key</param>
|
/// <param name="value">缓存Value</param>
|
/// <param name="expiresIn">缓存时长</param>
|
/// <param name="isSliding">是否滑动过期(如果在过期时间内有操作,则以当前时间点延长过期时间) //new TimeSpan(0, 60, 0);</param>
|
/// <returns></returns>
|
bool AddObject(string key, object value, int expireSeconds = -1, bool isSliding = false);
|
|
bool Add(string key, string value, int expireSeconds = -1, bool isSliding = false);
|
|
void AddOrUpdate(string key, string value, int expireSeconds = -1, bool isSliding = false);
|
|
void AddOrUpdate(string key, object value, int expireSeconds = -1, bool isSliding = false);
|
|
/// <summary>
|
/// 删除缓存
|
/// </summary>
|
/// <param name="key">缓存Key</param>
|
/// <returns></returns>
|
bool Remove(string key);
|
|
/// <summary>
|
/// 批量删除缓存
|
/// </summary>
|
/// <param name="key">缓存Key集合</param>
|
/// <returns></returns>
|
void Remove(IEnumerable<string> keys);
|
|
/// <summary>
|
/// 获取缓存
|
/// </summary>
|
/// <param name="key">缓存Key</param>
|
/// <returns></returns>
|
T? Get<T>(string key) where T : class;
|
|
object? Get(Type type, string key);
|
|
/// <summary>
|
/// 获取缓存
|
/// </summary>
|
/// <param name="key">缓存Key</param>
|
/// <returns></returns>
|
string? Get(string key);
|
|
#region ConcurrentDictionary风格方法
|
|
/// <summary>
|
/// 尝试添加,仅当Key不存在时添加成功
|
/// </summary>
|
bool TryAdd(string key, string value, int expireSeconds = -1);
|
|
/// <summary>
|
/// 尝试添加对象,仅当Key不存在时添加成功
|
/// </summary>
|
bool TryAdd<T>(string key, T value, int expireSeconds = -1) where T : class;
|
|
/// <summary>
|
/// 尝试获取值,返回是否存在
|
/// </summary>
|
bool TryGetValue(string key, out string? value);
|
|
/// <summary>
|
/// 尝试获取对象,返回是否存在
|
/// </summary>
|
bool TryGetValue<T>(string key, out T? value) where T : class;
|
|
/// <summary>
|
/// 尝试移除并返回被移除的值
|
/// </summary>
|
bool TryRemove(string key, out string? value);
|
|
/// <summary>
|
/// 尝试更新,仅当Key存在时更新
|
/// </summary>
|
bool TryUpdate(string key, string newValue, int expireSeconds = -1);
|
|
/// <summary>
|
/// 获取或添加:Key存在则返回现有值,不存在则添加并返回新值
|
/// </summary>
|
string GetOrAdd(string key, string value, int expireSeconds = -1);
|
|
/// <summary>
|
/// 获取或添加(工厂方法):Key存在则返回现有值,不存在则通过工厂方法生成值并添加
|
/// </summary>
|
string GetOrAdd(string key, Func<string, string> valueFactory, int expireSeconds = -1);
|
|
/// <summary>
|
/// 获取或添加对象
|
/// </summary>
|
T GetOrAdd<T>(string key, Func<string, T> valueFactory, int expireSeconds = -1) where T : class;
|
|
#endregion
|
}
|
}
|