using FreeRedis; using JetBrains.Annotations; using Microsoft.Extensions.Options; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Text.Json; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; namespace JiShe.CollectBus.FreeRedisProvider; public class FreeRedisProviderService : IFreeRedisProviderService, ISingletonDependency { private FreeRedisOptions freeRedisOptions; /// /// FreeRedis /// public FreeRedisProviderService(IOptions options) { freeRedisOptions = options.Value; } [NotNull] public IRedisClient FreeRedis { get { return GetClient(); } } /// /// 获取 FreeRedis 客户端 /// /// public IRedisClient GetClient() { string connectionString = $"{freeRedisOptions.Configuration},defaultdatabase={freeRedisOptions.DefaultDB}"; var redisClinet = new RedisClient(connectionString); redisClinet.Serialize = obj => JsonSerializer.Serialize(obj); redisClinet.Deserialize = (json, type) => JsonSerializer.Deserialize(json, type); redisClinet.Notice += (s, e) => Trace.WriteLine(e.Log); return redisClinet; } /// /// 切换Redis数据库 /// /// /// public IRedisClient GetDatabase(int index = 0) { var redisClinet = GetClient(); redisClinet.GetDatabase(index); return redisClinet; } }