src/sample/XXX.Plugin.Redis/Service/RedisService.cs

(开头部分) 7KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using CSRedis;
using NetPro.CsRedis;
using System.Diagnostics;

namespace XXX.Plugin.Redis
{
    public interface IRedisService
    {
        int DistributeLock(string lockKey, int timeoutSeconds = 30, bool autoDelay = false);
        Task<string> GetAsync(string key = "one_key");
        Task<long> PublishAsync(string channel, string message);
        Task<bool> SetAsync(string key = "one_key", string value = "one_value",string dbKey=null, TimeSpan? timeSpan = null);
        void ExecutePython(string cmd, string args);
    }

    public class RedisService : IRedisService
    {
        private readonly ILogger<RedisService> _logger;
        private readonly IRedisManager _redisManager;//NetPro封装过的对象接口,提供更丰富功能,本地缓存等
        private readonly IdleBus<CSRedisClient> _redisClient;//CSRedis原生对象,以最原生方式调用,支持操作多个redis库;_redisClient.Get("别名")必须先取出别名对应的redis实例对象进行奥操作

        private static int tempInt = 0;

        /// <summary>
        /// 
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="redisManager"></param>
        /// <param name="redisClient"></param>
        public RedisService(ILogger<RedisService> logger
            , IRedisManager redisManager
            , IdleBus<CSRedisClient> redisClient)
        {
            _logger = logger;
            _redisManager = redisManager;
            _redisClient = redisClient;
        }

        /// <summary>
        /// Redis插入
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <param name="timeSpan"></param>
        /// <returns></returns>
        public async Task<bool> SetAsync(string key = "one_key", string value = "one_value",string dbKey=null, TimeSpan? timeSpan = null)
        {
            //remark:
            //一秒后过期
            TimeSpan.FromSeconds(1);
            //一小时后过期
            TimeSpan.FromHours(1);

            //获取依赖注入的对象方式一:通过静态EngineContext对象引擎获取对象实例
            //var redisManager = EngineContext.Current.Resolve<IRedisManager>();

            //获取依赖注入的对象方式二:通过构造函数注入获取对象实例
            var succeed = await _redisManager.SetAsync(key, value, timeSpan, dbKey);
            //var succeed = await _redisManager.SetAsync(key, value, timeSpan,"2");
            //var succeed1 = await _redisManager.SetAsync(key, value, timeSpan,"1");
后面还有 121 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。