如果主机关闭,如何使Python故障转移到Redis slave?你知道吗
在当前的配置中,sentinel选择一个新的主节点,但是Python停止写入。你知道吗
我想我不应该像docker那样使用redis master-合成.yml文件;有哪些替代方案?你知道吗
在网络模式下,我无法让哨兵相互识别。你知道吗
码头工人-合成.yml你知道吗
version: '3'
services:
redis-master:
container_name: redis-master
image: redis:latest
command: redis-server --port 6379
ports:
- "6379:6379"
volumes:
- .:/app
redis-slave:
container_name: redis-slave
image: redis:latest
command: redis-server --slaveof redis-master 6379 --protected-mode no
volumes:
- .:/app
sentinel-1:
container_name: sentinel-1
build: sentinel
environment:
- SENTINEL_DOWN_AFTER=5000
- SENTINEL_FAILOVER=5000
sentinel-2:
container_name: sentinel-2
build: sentinel
environment:
- SENTINEL_DOWN_AFTER=5000
- SENTINEL_FAILOVER=5000
sentinel-3:
container_name: sentinel-3
build: sentinel
environment:
- SENTINEL_DOWN_AFTER=5000
- SENTINEL_FAILOVER=5000
app:
container_name: python-app
image: pyredis
command: python app.py
Python应用程序:
import redis
import random
import time
r = redis.StrictRedis(host="redis-master", port=6379, db=0)
for i in range(0, 1000):
timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())
num = random.randint(1,101)
r.set(timestamp, num)
time.sleep(2)
谢谢,任何意见都将不胜感激。你知道吗
您需要一个函数来重新定义
r
值:在主设备停机的情况下,将调用该函数并将连接切换到从设备,反之亦然。如果两个都关闭,则外部
except
捕获的Exception
将被提升,程序将崩溃编辑
对于可变默认值(通常是BIG NO-NO),这可能是一个非常有趣的用例。注意,我仍然不会在任何生产代码中实现这一点,只是在这里显示副作用
deque支持就地旋转,因此可以使用它来切换
host
和other_host
,如下所示:现在,您可以使用它作为缓存,只需交换顺序
要显示其工作原理,请执行以下操作:
现在您的外部程序不需要知道
host
,它只需要根据需要调用retry函数:相关问题 更多 >
编程相关推荐