src/Library/NetPro.RedisManager/StackExchangeRedisManager.cs

(开头部分) 20KB

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

using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging;
using RedLockNet.SERedis;
using RedLockNet.SERedis.Configuration;
using StackExchange.Redis;
using StackExchange.Redis.KeyspaceIsolation;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Threading;
using System.Threading.Tasks;

namespace NetPro.RedisManager
{
    //[Obsolete]
    internal partial class StackExchangeRedisManager : IRedisManager
    {
        private readonly ConnectionMultiplexer _connection;
        private readonly RedisCacheOption _option;
        private readonly IDatabase _database;
        private IMemoryCache _memorycache;
        private ILogger _logger;

        /// <summary>
        /// 自定义Key的前缀
        /// </summary>
        private string CustomPrefixKey { get; set; }
        public StackExchangeRedisManager(ConnectionMultiplexer connection,
              ISerializer serializer,
            RedisCacheOption option,
             IMemoryCache memorycache,
             ILogger<StackExchangeRedisManager> logger)
        {
            Serializer = serializer ?? throw new ArgumentNullException(nameof(serializer));
            _connection = connection;
            _option = option;
            CustomPrefixKey = option.DefaultCustomKey;
            if (!string.IsNullOrWhiteSpace(CustomPrefixKey))
                _database = _connection.GetDatabase(_option.Database).WithKeyPrefix(CustomPrefixKey);
            else
                _database = _connection.GetDatabase(_option.Database);
            _memorycache = memorycache;
            _logger = logger;
        }
        public ISerializer Serializer { get; }
        public IDatabase Database
        {
            get
            {
                var db = _connection.GetDatabase(_option.Database);

                if (!string.IsNullOrWhiteSpace(CustomPrefixKey))
                    return db.WithKeyPrefix(CustomPrefixKey);

                return db;
            }
        }

        public T GetDistributedLock<T>(string resource, int timeoutSeconds, Func<T> func, bool isAwait)
后面还有 522 行代码,解锁后查看完整代码

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

AI 解读 AI

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

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