59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C#
		
	
	
	
using LY.App.Extensions.DI;
 | 
						|
using StackExchange.Redis;
 | 
						|
using System.Text.Json;
 | 
						|
 | 
						|
namespace LY.App.Common.Redis
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// redis 连接服务
 | 
						|
    /// </summary>
 | 
						|
    public class RedisService
 | 
						|
    {
 | 
						|
        private readonly IDatabase _db;
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 构造函数
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="connectionString"></param>
 | 
						|
        public RedisService(string connectionString)
 | 
						|
        {
 | 
						|
            var redis = ConnectionMultiplexer.Connect(connectionString);
 | 
						|
            _db = redis.GetDatabase();
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 泛型存储数据到 Redis
 | 
						|
        /// </summary>
 | 
						|
        public async Task<bool> SetAsync<T>(string key, T value, TimeSpan? expiry = null)
 | 
						|
        {
 | 
						|
            string jsonData = JsonSerializer.Serialize(value);
 | 
						|
            return await _db.StringSetAsync(key, jsonData, expiry);
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 泛型获取数据
 | 
						|
        /// </summary>
 | 
						|
        public async Task<T?> GetAsync<T>(string key)
 | 
						|
        {
 | 
						|
            string jsonData = await _db.StringGetAsync(key);
 | 
						|
            return jsonData is not null ? JsonSerializer.Deserialize<T>(jsonData) : default;
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 删除 Key
 | 
						|
        /// </summary>
 | 
						|
        public async Task<bool> DeleteAsync(string key)
 | 
						|
        {
 | 
						|
            return await _db.KeyDeleteAsync(key);
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 检查 Key 是否存在
 | 
						|
        /// </summary>
 | 
						|
        public async Task<bool> ExistsAsync(string key)
 | 
						|
        {
 | 
						|
            return await _db.KeyExistsAsync(key);
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |