gpt4 book ai didi

c# - 使用 PooledRedisClientManager() 连接到 Ubuntu 虚拟机上的远程 Redis 实例

转载 作者:IT王子 更新时间:2023-10-29 06:04:05 24 4
gpt4 key购买 nike

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

我试过了PooledRedisClientManager pCm = new PooledRedisClientManager(new[] {"xxx.xxx.x.x:6379"});但出现异常 “无法连接到 xxx.xxx.x.x:6379 的 redis 实例”

最佳答案

连接异常:

首先确保您的 Redis 服务器配置为在网络可访问的 IP 上运行。确保您更改了 redis.conf bind 行:

bind 127.0.0.1

bind 192.168.0.1

192.168.0.1 是您的 Redis 服务器的主机名/IP

否则您将只能在本地访问Redis 服务器。 您应该避免使用 0.0.0.0 代替您的本地 IP,以防止 Redis 绑定(bind)到任何公共(public)接口(interface),从而将其暴露在互联网上。 (除非受防火墙保护)

如果您的应用程序服务器上安装了 Redis 客户端,您可以通过从终端运行以下命令来检查 Redis 服务器是否可以访问:

redis-cli -h 192.168.0.1 ping

This answer here逐步完成诊断连接问题的过程。

如果您在连接时仍然遇到异常,请确保您的应用程序计算机上的防火墙允许建立传出连接,并且在您的 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:

配置要注入(inject)的PooledRedisClientManager:

假设您正在使用 ServiceStack 的标准依赖注入(inject)方法,您将需要连接您的应用程序配置以将客户端管理器注入(inject)您的 Service 基类。这使得 Redis 可用于每个请求。所以在您的 AppHost 配置中:

// Where 192.168.0.1 is the hostname/IP of your Redis server
container.Register<IRedisClientsManager>(c => new PooledRedisClientManager("192.168.0.1:6379"));
// Register Redis cache client to be injected as ICacheClient, using pooled manager, registered above
container.Register<ICacheClient>(c => c.Resolve<IRedisClientsManager>().GetCacheClient());

使用 Redis:

注入(inject)池后,当您调用 base.Cache 时,标准的 ICacheClientIRedisClient 将自动连接>base.Redis,分别在您的 Service 中。因此,使用 Redis 不需要进一步的配置。

关于c# - 使用 PooledRedisClientManager() 连接到 Ubuntu 虚拟机上的远程 Redis 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21038964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com