using Bunny.Common.Connect;
using Bunny.Dao.Models.System;
using Newtonsoft.Json;
using StackExchange.Redis;
namespace Bunny.Service.IService.Service;
public class RedisOptionService : IRedisOptionService
{
private readonly IDatabase _redisDatabase = RedisContext.RedisDatabase;
///
/// 添加Redis中一个值
///
///
///
public void AddStringValue(string key, string value)
{
_redisDatabase.StringSet(key, value);
}
///
/// 查询字符串Key
///
///
public string QueryStringKey(string key)
{
return _redisDatabase.StringGet(key).ToString();
}
///
/// 添加时间限制的key
///
///
///
public void AddTimeRedisKey(string key, string value)
{
// 时间限制为 6 秒
_redisDatabase.StringSet(key, value, TimeSpan.FromSeconds(6.0));
}
///
/// var keepTtl = false: 可选参数,表示是否保留已存在键的过期时间。如果设置为true,并且键已经设置了过期时间,那么新设置的键将保留原有的过期时间。
///
///
///
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);
}
///
/// Redis存入JSON内容
///
///
public string AddJson()
{
var post = new Post
{
PostId = 1,
Title = "存入JSON内容",
Content = "正在存入JSON内容"
};
var json = JsonConvert.SerializeObject(post);
_redisDatabase.StringSet("postKey", json);
return json;
}
///
/// 删除Redis中key
///
///
public void DeleteKey(string key)
{
_redisDatabase.StringGetDelete(key);
}
///
/// Redis中的事务
///
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 ? "事务执行成功!" : "事务执行失败!";
}
///
/// Redis设置Hash值
///
///
///
public void AddHashWithRedis(string key, double keyExpire)
{
_redisDatabase.HashSet(key, "key", "value");
// 设置过期时间为6秒
_redisDatabase.KeyExpire(key, TimeSpan.FromSeconds(keyExpire));
}
}