docker compose中的Redis主从式设置-只读从式

docker compose中的Redis主从式设置-只读从式,redis,docker-compose,master-slave,Redis,Docker Compose,Master Slave,如何使Redis slave在docker-compose.yml中可写 我有一个Python脚本正在运行,如果由于以下错误而失败,该脚本将无法传输到从属脚本: File "app.py", line 22, in <module> r.set(timestamp, num) File "/usr/local/lib/python2.7/site-packages/redis/client.py", line 1519, in set return self.

如何使Redis slave在docker-compose.yml中可写

我有一个Python脚本正在运行,如果由于以下错误而失败,该脚本将无法传输到从属脚本:

  File "app.py", line 22, in <module>
    r.set(timestamp, num)
  File "/usr/local/lib/python2.7/site-packages/redis/client.py", line 1519, in set
    return self.execute_command('SET', *pieces)
  File "/usr/local/lib/python2.7/site-packages/redis/client.py", line 839, in execute_command
    return self.parse_response(conn, command_name, **options)
  File "/usr/local/lib/python2.7/site-packages/redis/client.py", line 853, in parse_response
    response = connection.read_response()
  File "/usr/local/lib/python2.7/site-packages/redis/connection.py", line 717, in read_response
    raise response
redis.exceptions.ReadOnlyError: You can't write against a read only replica.
从机输出:

root@29b9b3919c4a:/data# redis-cli -p 6379 info replication
# Replication
role:slave
master_host:192.168.48.7
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:257149
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:2705ce53eb2c7778f207f7626280ca0964dc87b1
master_replid2:8acb89aa40f8d7edc254eaed3ac197d08b808e82
master_repl_offset:257149
second_repl_offset:60757
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:60757
repl_backlog_histlen:196393
是否有添加到docker-compose.yml的选项,以使从属设备可写


多谢各位

查看redis.conf文件有以下选项:
副本只读是

您需要更改该值以允许在从属服务器上进行书写

您可以将副本实例配置为接受或不接受写入。书写 针对副本实例存储一些临时数据可能很有用 (因为在副本上写入的数据在重新同步后很容易被删除。) 但如果客户写信给 这是因为一个错误的配置。默认情况下,自Redis 2.6以来 副本是只读的。注意:不设计只读副本 暴露于互联网上不受信任的客户端。这只是一个小问题 保护层防止实例被误用。还是只读的吗 默认情况下,复制副本导出所有管理命令,例如 配置、调试等。在一定程度上你可以提高 使用“重命名命令”对只读副本进行安全性保护,以隐藏所有副本 行政/危险命令

root@29b9b3919c4a:/data# redis-cli -p 6379 info replication
# Replication
role:slave
master_host:192.168.48.7
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:257149
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:2705ce53eb2c7778f207f7626280ca0964dc87b1
master_replid2:8acb89aa40f8d7edc254eaed3ac197d08b808e82
master_repl_offset:257149
second_repl_offset:60757
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:60757
repl_backlog_histlen:196393