Articles of redis

HA Resque&Redis

试图避免Resque和Redis的SPOF。 最终,客户端将通过( https://github.com/chrisboulton/php-resque )成为PHP。 在为nginx + php-fpm和MySQL寻找一些可行的HA( mysql master-master作为简单主从提升的方式 )之后,接下来是Resque + Redis。 Resque的标准安装使用本地主机Redis(在DigitalOcean上)。 我很大程度上依赖于Amazon Route 53 DNS故障转移来尝试解决此问题。 resque1.domain.com指向本地主机redis(redis1.domain.com)=>相同的服务器resque2.domain.com指向本地主机redis(redis2.domain.com)=>相同的服务器 使用FAILOVER resque1作为主要和resque2作为辅助resque.domain.com。 这意味着大部分时间(99%),resque1应该被resque2打成热备份。 这让我只需要2个服务器,并确保任何命中resque.domain.com去某个地方 另一种方法是将resque和redis分成4个服务器,如下所示 resque1.domain.com – > redis.domain.com resque2.domain.com – > redis.domain.com redis1.domain.com redis2.domain.com 然后设置DNS故障转移 resque.domain.com – > primary:resque1和secondary:resque2 redis.domain.com – > primary:redis1和secondary:redis2 如果可以的话,我想逃离2个服务器,但是这个第二个设置好多了还是可以忽略不计? 谢谢,克里斯

redis:即时设置“maxclients”

如何在redis中将maxclients设置为X ? 我知道它应该是这样的: config set maxclients X 但我不断收到错误 (error) ERR Unsupported CONFIG parameter: maxclients 我甚至检查,以确保maxclients config set通过运行config set config get *和maxclients列出,其数量55列表由庞大的列表打印出config get *

Redis:限制键/值大小的configuration选项?

我的老板最近在谈话中断言,Redis支持一些configuration选项来控制最大的键或键/值的大小……所以我们可以设置一些选项来防止我们的应用程序创build大于50KB的键或键/值对。 我的印象是,没有这样的select存在,我们不得不打补丁,build立自己的补充这样的function。 (对于这个问题,强迫应用程序员调解所有通过Lua脚本或通过像twemproxy这样的访问将不是一个选项)。 我在Redis中错过了一些东西吗? 还有什么是最近的故障转移的最佳做法? Redis哨兵准备好了吗? Linux-HA OCF Heartbeat / Pacemaker / Cluster Glue三重奏仍然是最好的吗?

对于redis slave的持久化模型,除了从slave到master的rsync rdb之外还有更好的方法吗?

我的redis机器的rdb大小约为1 GB。 我的应用程序严重地使用redis,不能让主人处理bgsave,否则,会减慢主机中的所有系统。 所以,我必须阻止主人做这样的事情,只让奴隶做这个持久的工作。 主机需要重启时出现问题。 它必须从从站复制rdb,以将初始数据加载到内存中。 这个过程大概需要30-60秒。 如果我的redis越来越大,这个过程的时间将会增加。 我已经尝试NFS让主和奴隶使用相同的RDB读/写,但复制过程强制主要做第一次从属连接到主,它不能做这个工作bgsave,因为源rdb(主)和目标rdb(奴隶)是在同一个地方。 问题是“有没有更好的方法来做这个初始加载rdb到内存作业?”。

caching(memcache / redis)和多个服务器 – 最佳策略

我们正在考虑在我们的应用程序( Symfony2 )中使用caching(基于memcache或redis的)的最佳策略。 它将被部署在多个(至今为止3个)具有负载平衡的单独机器上,并且被分开复制数据库+一个公共共享存储器。 还有第四个服务器,主要用于crons和发送群发邮件。 请注意,高速caching将不仅经常使用,而且由于频繁的数据更改而被更新。 到目前为止,我们有三次尝试: 我们在第四台机器上放置单个caching并在整个域中共享。 坏的一面是,当这台机器出现故障时,一切都会失败。 我们在多台机器上放置不同的caching,每台caching都有自己的caching。 缺点是我们必须保留更多的计算能力来完成冗余任务。 一台机器重buildcaching,然后将其传播到不同的机器(与第一种情况相同)。 什么是处理这个最好的select?

Proxy over Redis,HAProxy或twemproxy?

隐藏主/从redis服务器切换的最佳方法是使用主服务器上的代理。 在代理候选人中,有两个更重要的(和使用的)select: twemproxy和haproxy(> = 1.5) 如果我们对某些twemproxy特性(比如分片)不感兴趣(并且只对proxing工作感兴趣),哪一个更好(为什么?)

Redis / Sentinel群集故障转移导致“故障转移 – 中止 – 未select的主控”

我有一个2节点的Redis集群设置。 [master] 192.168.56.102:Redis Master(:6379),Redis Slave(:6380),Sentinel(:26379),Sentinel#2(:26380) [救援] 192.168.56.103:Redis Master(6379),Redis奴隶(6380),Sentinel(26379) 每个从实例都是同一台机器上的主实例的从属。 每个哨兵实例监视两个主实例。 我正在使用twemproxy(与这个问题无关)和一个客户端重新configuration脚本来更新twemproxyconfiguration,使应用程序继续工作与上述。 我正在停止服务器,看看发生了什么,如果一切正常工作。 [master] stop redis master:法定人数可以成功选出一个新的master。 在下面logging。 ==> /tmp/sentinel.log <== [14701] 29 Dec 18:16:55.096 # +sdown slave 192.168.56.102:6379 192.168.56.102 6379 @ master 192.168.56.102 6380 [14705] 29 Dec 18:16:55.096 # +sdown slave 192.168.56.102:6379 192.168.56.102 6379 @ master 192.168.56.102 6380 [14701] 29 Dec 18:18:04.187 # -sdown slave […]

如何在RedHat RHEL 6上启动Redis?

我按照从这里安装redis的说明。 我也跑了: make test 并通过了所有的testing。 然后: make install 而且似乎有效。 我已经完成了所有这些。 但是,如果有的话,安装似乎确实做得很less。 我无法启动Redis作为服务: start redis.service 这使: start: Unknown job: redis.service 在/etc/init.d下面没有redis目录。 必须有一些简单的命令,我可以运行。 可执行文件已被正确放置在/usr/local 。 如果我运行redis-server ,它肯定会运行,但是Ctrl-C时会退出。 我只需要用nohup来运行它? 我想Redis在启动时运行,这似乎是不可靠的。

无法触摸/连接到同一组的unix插槽

sudo ls -la /var/lib/redis/6379/产生: drwxrwxr-x 2 redis redis 4096 Nov 28 23:10 . drwx-w—- 3 redis redis 4096 Nov 22 00:10 .. srwxrwx— 1 redis redis 0 Nov 28 23:10 redis.sock 伟大的,现在sudo groups www-data产生: www-data : www-data redis 好的,但随后sudo -u www-data -g www-data touch /var/lib/redis/6379/redis.sock导致以下错误: touch: cannot touch '/var/lib/redis/6379/redis.sock': Permission denied 这不应该发生在我的理解。 有人能指出我完全错误的地方吗? 以下不能用于同样的错误(这是我真正感兴趣的): sudo […]

Redis集群超过通道configuration

我试图build立一个3节点的Redis集群,通过通道进行通信。 Redis在端口6379(可configuration)上侦听客户端发布/订阅,并在configuration的端口+ 10000(不可configuration – 在此情况下为16379)侦听集群通信。 我没有太多的运气为此configurationstunnel。 有人可以通过configuration来引导我吗? 这是我得到的节点1: cert = /etc/stunnel/private/private.pem pid = /var/run/stunnel.pid [6382] client = yes accept = localhost:6382 connect = redis2:26382 [6383] client = yes accept = localhost:6383 connect = redis3:26383 [26381] client = no accept = 26381 connect = 6381 其他节点具有遵循类似模式的configuration。 http://redis.io/topics/cluster-tutorial说redis集群模式“不支持NATnetworking环境,在一般环境下,IP地址或TCP端口重新映射。