redis 添加部分方法

feature-flyModify
陈伟 2025-06-17 15:18:47 +08:00
parent aa9a1597eb
commit 7c9891bd1d
1 changed files with 112 additions and 4 deletions

View File

@ -1,7 +1,4 @@
using System;
using Enyim.Caching;
using Enyim.Caching.Memcached;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Options;
using StackExchange.Redis;
namespace Infrastructure.Cache
@ -59,5 +56,116 @@ namespace Infrastructure.Cache
{
return func(id);
}
/// <summary>
/// HSET - 将哈希表 key 中的字段 field 的值设为 value。
/// </summary>
/// <param name="key">键</param>
/// <param name="field">字段</param>
/// <param name="value">值</param>
public void HashSet<T>(string key, string field, T value)
{
iDatabase.HashSet(new RedisKey(key),
new[] { new HashEntry(new RedisValue(field), new RedisValue(value.ToString() ?? string.Empty)) });
}
/// <summary>
/// HGET - 获取哈希表中的指定字段的值。
/// </summary>
/// <param name="key">键</param>
/// <param name="field">字段</param>
/// <returns>字段对应的值</returns>
public object HashGet(string key, string field)
{
return iDatabase.HashGet(key, field);
}
/// <summary>
/// HEXISTS - 查看哈希表中是否存在指定字段。
/// </summary>
/// <param name="key">键</param>
/// <param name="field">字段</param>
/// <returns>是否存在</returns>
public bool HashCheck(string key, string field)
{
return iDatabase.HashExists(key, field);
}
/// <summary>
/// HDEL - 删除一个或多个哈希表字段。
/// </summary>
/// <param name="key">键</param>
/// <param name="fields">要删除的字段数组</param>
/// <returns>移除数量</returns>
public long HashDel(string key, string[] fields)
{
var redisFields = fields.Select(f => new RedisValue(f)).ToArray();
return iDatabase.HashDelete(new RedisKey(key), redisFields);
}
/// <summary>
/// HLEN - 获取哈希表中字段的数量。
/// </summary>
/// <param name="key">键</param>
/// <returns>字段数量</returns>
public long HashLen(string key)
{
return iDatabase.HashLength(key);
}
/// <summary>
/// EXPIRE - 为键设置过期时间(秒)。
/// </summary>
/// <param name="key">键</param>
/// <param name="timeout">过期时间(秒)</param>
/// <returns>是否设置成功</returns>
public bool ExpireKey(string key, long timeout)
{
return iDatabase.KeyExpire(key, TimeSpan.FromSeconds(timeout));
}
/// <summary>
/// GET - 获取键对应的值。
/// </summary>
/// <param name="key">键</param>
/// <returns>键对应的值</returns>
public object Get(string key)
{
return iDatabase.StringGet(key);
}
/// <summary>
/// EXISTS - 判断键是否存在。
/// </summary>
/// <param name="key">键</param>
/// <returns>是否存在</returns>
public bool CheckExist(string key)
{
return iDatabase.KeyExists(key);
}
/// <summary>
/// DEL - 删除键。
/// </summary>
/// <param name="key">键</param>
/// <returns>是否删除成功</returns>
public bool Del(string key)
{
return CheckExist(key) && iDatabase.KeyDelete(key);
}
/// <summary>
/// LLEN - 获取列表的长度。
/// </summary>
/// <param name="key">键</param>
/// <returns>列表长度</returns>
public long ListLen(string key)
{
return iDatabase.ListLength(key);
}
}
}