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);
基本上我的问题是:
获取 IRedisNativeClient 实例的最佳方式是什么?
那个GetRedisClient方法可以吗?每次我需要进行 Redis 操作时都会调用它
提前致谢
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
总是继承自 RedisNativeClient
的 RedisClient
具体类型的一个实例 所以单个实例可以安全地在以下任何类型之间自由转换:
- Redis客户端
- IRedisClient
- RedisNativeClient
- IRedisNativeClient
我在使用 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);
基本上我的问题是:
获取 IRedisNativeClient 实例的最佳方式是什么?
那个GetRedisClient方法可以吗?每次我需要进行 Redis 操作时都会调用它
提前致谢
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
总是继承自 RedisNativeClient
的 RedisClient
具体类型的一个实例 所以单个实例可以安全地在以下任何类型之间自由转换:
- Redis客户端
- IRedisClient
- RedisNativeClient
- IRedisNativeClient