2024-08-09 10:06:17 +08:00
|
|
|
|
using Bunny.Common.Connect;
|
2024-08-09 22:31:06 +08:00
|
|
|
|
using Bunny.Dao.Models.System;
|
|
|
|
|
using Newtonsoft.Json;
|
2024-08-09 10:06:17 +08:00
|
|
|
|
using StackExchange.Redis;
|
|
|
|
|
|
|
|
|
|
namespace Bunny.Service.IService.Service;
|
|
|
|
|
|
|
|
|
|
public class RedisOptionService : IRedisOptionService
|
|
|
|
|
{
|
|
|
|
|
private readonly IDatabase _redisDatabase = RedisContext.RedisDatabase;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 添加Redis中一个值
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="key"></param>
|
|
|
|
|
/// <param name="value"></param>
|
|
|
|
|
public void AddStringValue(string key, string value)
|
|
|
|
|
{
|
|
|
|
|
_redisDatabase.StringSet(key, value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 查询字符串Key
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="key"></param>
|
|
|
|
|
public string QueryStringKey(string key)
|
|
|
|
|
{
|
|
|
|
|
return _redisDatabase.StringGet(key).ToString();
|
|
|
|
|
}
|
2024-08-09 22:31:06 +08:00
|
|
|
|
|
|
|
|
|
/// <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));
|
|
|
|
|
}
|
2024-08-09 10:06:17 +08:00
|
|
|
|
}
|