C# 使用PooledRedisClientManager()连接到Ubuntu虚拟盒上的远程Redis实例
我想要一些关于使用PooledRedisClientManager()连接到Ubuntu虚拟盒上的远程Redis实例的建议 我试过了 PooledRedisClientManager pCm=新的PooledRedisClientManager(新[]{“xxx.xxx.x:6379”}); 但是获取异常C# 使用PooledRedisClientManager()连接到Ubuntu虚拟盒上的远程Redis实例,c#,redis,
servicestack,C#,Redis,
servicestack,我想要一些关于使用PooledRedisClientManager()连接到Ubuntu虚拟盒上的远程Redis实例的建议 我试过了 PooledRedisClientManager pCm=新的PooledRedisClientManager(新[]{“xxx.xxx.x:6379”}); 但是获取异常“无法连接到位于xxx.xxx.x.x:6379的redis实例”连接异常: 首先确保您的Redis服务器配置为在网络可访问的IP上运行。确保您已从以下位置更改了redis.confbind行:
“无法连接到位于xxx.xxx.x.x:6379的redis实例”
连接异常:
首先确保您的Redis服务器配置为在网络可访问的IP上运行。确保您已从以下位置更改了redis.confbind
行:
绑定127.0.0.1
到
绑定192.168.0.1
其中192.168.0.1是Redis服务器的主机名/IP
或者,您只能在本地访问Redis服务器。您应该避免使用0.0.0.0代替本地IP,以防止Redis绑定到任何公共接口,从而将其暴露在Internet上。(除非受防火墙保护)
如果在应用服务器上安装了Redis客户端,则可以通过从终端运行以下命令来检查Redis服务器是否可访问:
redis-cli -h 192.168.0.1 ping
逐步完成诊断连接问题的过程
如果在连接过程中仍然出现异常,请确保应用程序计算机上的防火墙允许建立传出连接,并且在Redis服务上,防火墙允许从应用程序服务器在该端口上建立传入连接。Ubuntu使用IPTables进行防火墙
在不使用ServiceStack平台的情况下使用ServiceStack.Redis: 除了实际Redis服务器的配置问题外,您在使用它时不应该有任何问题
// Where 192.168.0.1 is the hostname/IP of your Redis server
var pcm = new PooledRedisClientManager(new[] {"192.168.0.1:6379"});
var client = pcm.GetCacheClient();
在ServiceStack平台上使用ServiceStack.Redis: 配置要注入的
PooledRedisClientManager
:
假设您正在使用ServiceStack的标准依赖性注入方法,您将需要连接应用程序配置,以便将客户端管理器注入到服务
基类中。这使得Redis可用于每个请求。因此,在AppHost配置中:
//其中192.168.0.1是Redis服务器的主机名/IP
Register(c=>newpooleredisclientmanager(“192.168.0.1:6379”);
//使用上面注册的池管理器将要注入的Redis缓存客户端注册为ICacheClient
Register(c=>c.Resolve().GetCacheClient());
使用Redis:
注入池后,在服务中调用base.Cache
或base.Redis
时,标准的ICacheClient
和IRedisClient
将自动连接。因此,使用Redis不需要进一步的配置 连接异常:
首先确保您的Redis服务器配置为在网络可访问的IP上运行。确保您已从以下位置更改了redis.conf
bind
行:
绑定127.0.0.1
到
绑定192.168.0.1
其中192.168.0.1是Redis服务器的主机名/IP
或者,您只能在本地访问Redis服务器。您应该避免使用0.0.0.0代替本地IP,以防止Redis绑定到任何公共接口,从而将其暴露在Internet上。(除非受防火墙保护)
如果在应用服务器上安装了Redis客户端,则可以通过从终端运行以下命令来检查Redis服务器是否可访问:
redis-cli -h 192.168.0.1 ping
逐步完成诊断连接问题的过程
如果在连接过程中仍然出现异常,请确保应用程序计算机上的防火墙允许建立传出连接,并且在Redis服务上,防火墙允许从应用程序服务器在该端口上建立传入连接。Ubuntu使用IPTables进行防火墙
在不使用ServiceStack平台的情况下使用ServiceStack.Redis: 除了实际Redis服务器的配置问题外,您在使用它时不应该有任何问题
// Where 192.168.0.1 is the hostname/IP of your Redis server
var pcm = new PooledRedisClientManager(new[] {"192.168.0.1:6379"});
var client = pcm.GetCacheClient();
在ServiceStack平台上使用ServiceStack.Redis: 配置要注入的
PooledRedisClientManager
:
假设您正在使用ServiceStack的标准依赖性注入方法,您将需要连接应用程序配置,以便将客户端管理器注入到服务
基类中。这使得Redis可用于每个请求。因此,在AppHost配置中:
//其中192.168.0.1是Redis服务器的主机名/IP
Register(c=>newpooleredisclientmanager(“192.168.0.1:6379”);
//使用上面注册的池管理器将要注入的Redis缓存客户端注册为ICacheClient
Register(c=>c.Resolve().GetCacheClient());
使用Redis:
注入池后,在
服务中调用base.Cache
或base.Redis
时,标准的ICacheClient
和IRedisClient
将自动连接。因此,使用Redis不需要进一步的配置 仅仅注入IRedisClientsManager
以将RedisClient
注入base.Cache
是不够的。它应该被明确地定义。例如:container.Register(c=>c.Resolve().GetCacheClient()).ReusedWithin(ReuseScope.Request)
@Not true。如果您查看,您将看到它将尝试解析插入的IRedisClientsManager
。然后对该解析调用GetCacheClient()
。所以它肯定不需要更明确地注入。这是正确的,但是如果你看看,如果未配置ICacheClient
,您将看到MemoryCacheClient
被注入。@ajk在这种情况下,您所说的base.Cache
仅与