1、下载nuget包:StackExchange.Redis; 并引用
using StackExchange.Redis;
2、配置信息
cs
/* Redis缓存配置 */
"Redis": {
"Enabled": true,
"ConnectionString": "127.0.0.1:6379,password=123456"
}
3、配置模型
cs
public class RedisConfig
{
public bool Enabled { get; set; }
public string ConnectionString { get; set; }
}
4、编写帮助类
cs
public class RedisHelper
{
private static bool enabled = AppSettings.app(new string[] { "Redis", "Enabled" }).ToUpper() == "TRUE" ? true : false;
private static string connectionString = AppSettings.app(new string[] { "Redis", "ConnectionString" });
private static ConnectionMultiplexer redis;
private static IDatabase db;
private static bool isRun = false;
static RedisHelper()
{
if (enabled)
{
if (IsRedisRunning())
{
// 创建连接
redis = ConnectionMultiplexer.Connect(connectionString);
db = redis.GetDatabase();
}
}
else
{
isRun = false;
}
}
/// <summary>
/// 创建模型
/// </summary>
/// <returns></returns>
/// <exception cref="Exception"></exception>
static RedisConfig GetRedisConfig()
{
if (string.IsNullOrWhiteSpace(connectionString))
{
throw new Exception("未获取到配置的Redis连接字符串信息!请检查");
}
var redisConfig = new RedisConfig()
{
Enabled = enabled,
ConnectionString = connectionString,
};
return redisConfig;
}
/// <summary>
/// 判断Redis是否在运行
/// </summary>
/// <returns></returns>
static bool IsRedisRunning()
{
try
{
// 创建Redis连接
ConnectionMultiplexer connection = ConnectionMultiplexer.Connect(connectionString);
// 获取Redis数据库实例
IDatabase db = connection.GetDatabase();
// 创建GUID、随机数
Random random = new Random();
var testValue = Guid.NewGuid().ToString() + "|" + random.Next(0, 100).ToString();
// 执行一个简单的SET命令
db.StringSet("testKey", testValue);
// 执行一个简单的GET命令
string value = db.StringGet("testKey");
// 关闭连接
connection.Close();
// 如果能够成功执行SET和GET命令,则认为Redis正在运行
isRun = true;
return value == testValue;
}
catch (Exception ex)
{
// 发生异常,可能是Redis未启动或连接失败
Console.WriteLine("Error: Redis运行失败。" + ex.Message);
return false;
}
}
#region 增删改查 (启动 && 在运行)
// 添加数据
public static void Add(string key, string value)
{
if (isRun)
{
db.StringSet(key, value);
}
}
// 查询数据
public static string Get(string key)
{
if (isRun)
{
return db.StringGet(key);
}
return "";
}
// 更新数据
public static void Update(string key, string value)
{
if (isRun)
{
db.StringSet(key, value);
}
}
// 删除数据
public static void Delete(string key)
{
if (isRun)
{
db.KeyDelete(key);
}
}
#endregion
}
帮助类里边有对Redis是否运行进行了一个判断,防止不使用的兄弟在不使用该功能的是否不会出错。
还可以考虑在需要但是没运行时添加日志记录,或者使用其他类似于队列等后续处理
5、测试。
我们可以在用户登录的时候进行缓存token信息。(后续会对其进行过期处理)
cs
var token = JwtHelper.GenerateToken(jwtClaim);
RedisHelper.Add("Login:" + para.UserName, token);
return ApiResultHelper.Success(token);
使用":"划分文件夹。Login为文件夹名称。
6、结果:
正常运行的话是会存入进去的。
不启动或未启动Redis服务时,是不写入的。
7、其他
以上就是对Redis的简单应用了。
在在增删改查的操作中,我们也可以添加一个是否存在key的判断。