前言
Redis 内存数据库,使用起来不是特别的方便,下面进行一个简易的封装,实现简单且轻松的使用。
提示:以下是本篇文章正文内容,下面案例可供参考
一、选择 Redis 包
Redis 的包很多,作者这里采用:StackExchange.Redis 因为其功能完整。
二、使用步骤
1.引入库
代码如下(示例):
using StackExchange.Redis; // 包名:StackExchange.Redis
using Tool;// 因为下面用到了,也可以根据自己的理解,跟换其他方式。包名:Tool.Net
2.编写帮助类
代码如下(示例):
public class RedisClient
{
private static readonly object Locker = new();
private ConnectionMultiplexer redisMultiplexer;
private IDatabase Db { get; set; }
private static RedisClient _redisClient;
public static RedisClient Redis
{
get
{
if (_redisClient == null)
{
lock (Locker)
{
if (_redisClient == null)
{
_redisClient = new RedisClient();
}
}
}
return _redisClient;
}
}
/// <summary>
/// 连接 Redis 库
/// </summary>
public void InitConnect()
{
try
{
var RedisConnection = Tool.Utils.AppSettings.Get("ConnectionStrings:RedisConnectionString");
redisMultiplexer = ConnectionMultiplexer.Connect(RedisConnection);
Db = redisMultiplexer.GetDatabase();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
redisMultiplexer = null;
Db = null;
}
}
#region String
/// <summary>
/// 保存单个key value
/// </summary>
/// <param name="value">保存的值</param>
/// <param name="expiry">过期时间</param>
public bool SetStringKey(string key, string value, TimeSpan? expiry = default)
{
return Db.StringSet(key, value, expiry);
}
/// <summary>
/// 获取单个key的值
/// </summary>
public RedisValue GetStringKey(string key)
{
return Db.StringGet(key);
}
/// <summary>
/// 获取一个key的对象
/// </summary>
public T GetStringKey<T>(string key)
{
if (Db == null)
{
return default;
}
var value = Db.StringGet(key);
if (value.IsNullOrEmpty)
{
return default;
}
return value.ToString().Json<T>();
}
/// <summary>
/// 保存一个对象
/// </summary>
/// <param name="obj"></param>
public bool SetStringKey<T>(string key, T obj, TimeSpan? expiry = default)
{
if (Db == null)
{
return false;
}
string json = obj.ToJson();
return Db.StringSet(key, json, expiry);
}
#endregion
#region Hash
/// <summary>
/// 保存单个key value
/// </summary>
/// <param name="hashFields">保存的值</param>
/// <param name="expiry">过期时间</param>
public void SetHashKey(string key, HashEntry[] hashFields, TimeSpan? expiry = default)
{
Db.HashSet(key, hashFields);
Db.KeyExpire(key, expiry);
}
/// <summary>
/// 保存单个name key value
/// </summary>
/// <param name="value">保存的值</param>
/// <param name="expiry">过期时间</param>
public void SetHashKey(string name, string key, RedisValue value, TimeSpan? expiry = default)
{
Db.HashSet(name, key, value);
Expire(name, expiry);
}
/// <summary>
/// 获取单个key的值
/// </summary>
public RedisValue GetHashKey(string key, string key1)
{
return Db.HashGet(key, key1);
}
/// <summary>
/// 获取单个key的所有键值
/// </summary>
public RedisValue[] HashKeys(string key)
{
return Db.HashKeys(key);
}
/// <summary>
/// 删除单个key的指定键值
/// </summary>
public bool HashDelete(string name, string key)
{
return Db.HashDelete(name, key);
}
/// <summary>
/// 删除单个key的所有键值
/// </summary>
public long HashClear(string key)
{
RedisValue[] redis = HashKeys(key);
return Db.HashDelete(key, redis);
}
#endregion
#region Key Related Operations
/// <summary>
/// 设置键值失效时间
/// </summary>
/// <param name="key"></param>
/// <param name="expiry"></param>
/// <returns></returns>
public bool Expire(string key, TimeSpan? expiry)
{
return Db.KeyExpire(key, expiry);
}
/// <summary>
/// 删除键值
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public bool Delete(string key)
{
return Db.KeyDelete(key);
}
#endregion
}
以上是的示例部分没有包含,包括分布式锁,list,等等。
3.链接字符串配置
代码如下(示例):
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"RedisConnectionString": "127.0.0.1,password=123456,DefaultDatabase=0" //这里是默认地址。
}
}
总结
以上就是今天要讲的内容,本文仅仅简单介绍了 Redis 的使用,而 Redis 提供了大量能使我们快速便捷地处理数据的函数和方法。