【问题标题】:Single Redis Instance with multiple simultaneous uses多个同时使用的单个 Redis 实例
【发布时间】:2019-05-28 06:33:42
【问题描述】:

所以我知道 redis 是一个内存数据存储,但我对底层的了解并不多。

我的问题是,如果我有三个单独的用途,例如python-socketio 启用套接字服务器的多个实例,Celery 将任务发送到另一个微服务(也将使用相同的 redis 实例),并且只是一个标准的subscriber 来监听要发出的通知,我可以为所有三个任务使用相同的redis实例,还是会遇到不同数据之间的冲突(即芹菜误解了对python-socketio的调用作为任务) ?

【问题讨论】:

    标签: flask redis celery flask-socketio


    【解决方案1】:

    这取决于您的数据如何流动,关于数据如何在每个组件之间流动及其关系的问题尚不清楚。

    如果这些消息之间没有关系或依赖,您可以通过将消息存储到同一 redis 实例中的不同数据库来避免冲突。

    或者,如果您需要为所有这些数据库使用相同的数据库,您可以为您的 redis 键使用 namespaces aka 前缀,以确保不会发生键冲突。这是 Redis 键部分下有关 how to name keys 的更多信息。

    但是,这无法扩展以让一个实例处理此问题,但这仍然取决于您拥有多少流量以及您究竟想要实现什么。

    如果有什么不清楚或者我误解了你的问题,请留下 cmets

    【讨论】:

    • 这是有道理的——在进一步的研究中,看起来 celery 和 python-socketio 都正确命名了它们的键,所以不应该有任何冲突。谢谢!
    猜你喜欢
    • 2012-05-25
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 2014-09-25
    • 2013-01-22
    • 2012-12-13
    相关资源
    最近更新 更多