🚀 feat(新增): Redis相关操作完成

This commit is contained in:
Bunny 2024-08-09 22:31:06 +08:00
parent ad50dcf6b6
commit 8e3c07a360
5 changed files with 196 additions and 6 deletions

View File

@ -14,4 +14,42 @@ public interface IRedisOptionService
/// </summary> /// </summary>
/// <param name="key"></param> /// <param name="key"></param>
string QueryStringKey(string key); string QueryStringKey(string key);
/// <summary>
/// 添加时间限制的key
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
void AddTimeRedisKey(string key, string value);
/// <summary>
/// var keepTtl = false: 可选参数表示是否保留已存在键的过期时间。如果设置为true并且键已经设置了过期时间那么新设置的键将保留原有的过期时间。
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
void AddTimeRedisKeyTtl(string key, string value);
/// <summary>
/// Redis存入JSON内容
/// </summary>
/// <returns></returns>
string AddJson();
/// <summary>
/// 删除Redis中key
/// </summary>
/// <param name="key"></param>
void DeleteKey(string key);
/// <summary>
/// Redis中的事务
/// </summary>
string SetRedisCreateTransaction(string key, string value);
/// <summary>
/// Redis设置Hash值
/// </summary>
/// <param name="key"></param>
/// <param name="keyExpire"></param>
void AddHashWithRedis(string key, double keyExpire);
} }

View File

@ -1,4 +1,6 @@
using Bunny.Common.Connect; using Bunny.Common.Connect;
using Bunny.Dao.Models.System;
using Newtonsoft.Json;
using StackExchange.Redis; using StackExchange.Redis;
namespace Bunny.Service.IService.Service; namespace Bunny.Service.IService.Service;
@ -26,4 +28,83 @@ public class RedisOptionService : IRedisOptionService
{ {
return _redisDatabase.StringGet(key).ToString(); return _redisDatabase.StringGet(key).ToString();
} }
/// <summary>
/// 添加时间限制的key
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
public void AddTimeRedisKey(string key, string value)
{
// 时间限制为 6 秒
_redisDatabase.StringSet(key, value, TimeSpan.FromSeconds(6.0));
}
/// <summary>
/// var keepTtl = false: 可选参数表示是否保留已存在键的过期时间。如果设置为true并且键已经设置了过期时间那么新设置的键将保留原有的过期时间。
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
public void AddTimeRedisKeyTtl(string key, string value)
{
// var keepTtl = false: 可选参数表示是否保留已存在键的过期时间。如果设置为true并且键已经设置了过期时间那么新设置的键将保留原有的过期时间。throw new NotImplementedException();
// keepTtl 默认是false 如果当前给这个key设置了过期时间但是这个key之前就有过期时间如果是false会覆盖原有的时间如果为true不覆盖原有的时间
_redisDatabase.StringSet(key, value, TimeSpan.FromSeconds(6.0), true);
}
/// <summary>
/// Redis存入JSON内容
/// </summary>
/// <returns></returns>
public string AddJson()
{
var post = new Post
{
PostId = 1,
Title = "存入JSON内容",
Content = "正在存入JSON内容"
};
var json = JsonConvert.SerializeObject(post);
_redisDatabase.StringSet("postKey", json);
return json;
}
/// <summary>
/// 删除Redis中key
/// </summary>
/// <param name="key"></param>
public void DeleteKey(string key)
{
_redisDatabase.StringGetDelete(key);
}
/// <summary>
/// Redis中的事务
/// </summary>
public string SetRedisCreateTransaction(string key, string value)
{
// 创建事务
var transaction = _redisDatabase.CreateTransaction();
// 向事务中添加操作
transaction.StringSetAsync(key, value, TimeSpan.FromSeconds(6.0));
transaction.StringSetAsync("key1", "value1", TimeSpan.FromSeconds(6.0));
// 执行事务
var committed = transaction.Execute();
return committed ? "事务执行成功!" : "事务执行失败!";
}
/// <summary>
/// Redis设置Hash值
/// </summary>
/// <param name="key"></param>
/// <param name="keyExpire"></param>
public void AddHashWithRedis(string key, double keyExpire)
{
_redisDatabase.HashSet(key, "key", "value");
// 设置过期时间为6秒
_redisDatabase.KeyExpire(key, TimeSpan.FromSeconds(keyExpire));
}
} }

View File

@ -37,9 +37,9 @@ public class BaseConfig
private static void UseConfiguration(WebApplicationBuilder builder) private static void UseConfiguration(WebApplicationBuilder builder)
{ {
// 配置日志相关 // 配置日志相关
builder.Logging.AddLog4Net("Config/log4net.config"); // builder.Logging.AddLog4Net("Config/log4net.config");
//配置文件 //配置文件
builder.Services.AddSingleton(new AppSettings(builder.Configuration)); builder.Services.AddSingleton(new AppSettings(builder.Configuration));
// 添加 SignalR // 添加 SignalR

View File

@ -7,7 +7,7 @@ namespace Bunny.WebApi.Controllers;
/// <summary> /// <summary>
/// 操作Redis相关内容 /// 操作Redis相关内容
/// </summary> /// </summary>
[Route("/api/[controller]")] [Route("/api/[controller]/[action]")]
public class RedisOptionController : ControllerBase public class RedisOptionController : ControllerBase
{ {
private readonly IRedisOptionService _redisOptionService; private readonly IRedisOptionService _redisOptionService;
@ -40,4 +40,75 @@ public class RedisOptionController : ControllerBase
var queryStringKey = _redisOptionService.QueryStringKey(key); var queryStringKey = _redisOptionService.QueryStringKey(key);
return Result<string>.Success(queryStringKey); return Result<string>.Success(queryStringKey);
} }
/// <summary>
/// 添加时间限制的key
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <returns></returns>
[HttpPost("AddTimeRedisKey")]
public Result<string> AddTimeRedisKey(string key, string value)
{
_redisOptionService.AddTimeRedisKey(key, value);
return Result<string>.Success(value);
}
/// <summary>
/// 当前存在时
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <returns></returns>
[HttpPost]
public Result<string> AddTimeRedisKeyTtl(string key, string value)
{
_redisOptionService.AddTimeRedisKeyTtl(key, value);
return Result<string>.Success(value);
}
/// <summary>
/// Redis存入JSON内容
/// </summary>
/// <returns></returns>
[HttpGet("AddJson")]
public Result<string> AddJson()
{
var json = _redisOptionService.AddJson();
return Result<string>.Success(json);
}
/// <summary>
/// 删除Redis中key
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
[HttpDelete]
public Result<string> DeleteKey(string key)
{
_redisOptionService.DeleteKey(key);
return Result<string>.Success();
}
/// <summary>
/// Redis中的事务
/// </summary>
/// <returns></returns>
[HttpPost]
public Result<string> SetRedisCreateTransaction(string key, string value)
{
var redisCreateTransaction = _redisOptionService.SetRedisCreateTransaction(key, value);
return Result<string>.Success(redisCreateTransaction);
}
/// <summary>
/// Redis设置Hash值
/// </summary>
/// <returns></returns>
[HttpPost]
public Result<string> AddHashWithRedis(string key, double keyExpire = 6.0)
{
_redisOptionService.AddHashWithRedis(key, keyExpire);
return Result<string>.Success();
}
} }

View File

@ -16,10 +16,10 @@
"Audience": "Audience" "Audience": "Audience"
}, },
"Redis": { "Redis": {
"Host": "192.168.3.98", "Host": "47.120.65.66",
"Port": "6379", "Port": "6379",
"Password": "123456", "Password": "02120212",
"DefaultDB": 0, "DefaultDB": 6,
"AsyncTimeout": 300 "AsyncTimeout": 300
} }
} }