Redis ServiceStack Native Client 实例化指定连接设置

Redis ServiceStack Native Client Instantiation Specifying connection settings

我在使用 ServiceStack Redis 客户端时遇到一些问题。 现在,我可以创建一个指定主机名和端口的客户端,但是密码或多个服务器呢?我是这样做的:

protected IRedisNativeClient GetRedisClient()
    {
        if (_RedisHostName == null)
        {
            _RedisHostName = ConfigurationManager.AppSettings.Get(REDIS_HOST_SETTING_KEY);
            _RedisPort = Int32.Parse(ConfigurationManager.AppSettings.Get(REDIS_PORT_SETTING_KEY));
        }
        return RedisClientFactory.Instance.CreateRedisClient(_RedisHostName, _RedisPort);
    }

我见过人们使用 PooledRedisClientManager 并传递连接字符串但我有权访问的重载不接受字符串 (v2.2.0.20691) 的示例。例如:

    public PooledRedisClientManager();
    public PooledRedisClientManager(params string[] readWriteHosts);
    public PooledRedisClientManager(IEnumerable<string> readWriteHosts, IEnumerable<string> readOnlyHosts);
    public PooledRedisClientManager(IEnumerable<string> readWriteHosts, IEnumerable<string> readOnlyHosts, int initalDb);
    public PooledRedisClientManager(IEnumerable<string> readWriteHosts, IEnumerable<string> readOnlyHosts, RedisClientManagerConfig config);
    public PooledRedisClientManager(IEnumerable<string> readWriteHosts, IEnumerable<string> readOnlyHosts, RedisClientManagerConfig config, int initalDb);

基本上我的问题是:

提前致谢

I have seen examples where people use PooledRedisClientManager and passes a connection string but the overloads I have access don't accept a String (v2.2.0.20691).

这个构造函数确实接受一个字符串:

public PooledRedisClientManager(params string[] readWriteHosts);

您可以在其中创建带有 Redis Connection String 的新实例,例如:

var connStr = "redis://clientId:pass@host:1?ssl=true&db=0&connectTimeout=2&sendtimeout=3";
var redisManager = new PooledRedisClientManager(connStr);

您可以在任何想访问客户端的时候调用GetClient(),并在您使用完客户端后将其释放回池中,例如:

using (IRedisClient client = redisManager.GetClient())
{
   //..       
}

GetClient() API returns 一个 IRedisClient 总是继承自 RedisNativeClientRedisClient 具体类型的一个实例 所以单个实例可以安全地在以下任何类型之间自由转换:

  • Redis客户端
  • IRedisClient
  • RedisNativeClient
  • IRedisNativeClient