servicestack,C#,Redis,servicestack" /> servicestack,C#,Redis,servicestack" />

C# 使用PooledRedisClientManager()连接到Ubuntu虚拟盒上的远程Redis实例

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行:

我想要一些关于使用PooledRedisClientManager()连接到Ubuntu虚拟盒上的远程Redis实例的建议

我试过了 PooledRedisClientManager pCm=新的PooledRedisClientManager(新[]{“xxx.xxx.x:6379”}); 但是获取异常
“无法连接到位于xxx.xxx.x.x:6379的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不需要进一步的配置

连接异常: 首先确保您的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
仅与