using Bunny.Common.Connect; using Bunny.Dao.Entity.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)); } }