【问题标题】:Optimising Redis on multi-threaded dedicated server在多线程专用服务器上优化 Redis
【发布时间】:2012-09-27 00:34:13
【问题描述】:

我将在具有 6 核、12 线程和 32 GB RAM 的专用服务器上运行 redis。我使用 redis 作为主数据存储。应用程序有许多哈希、集合和列表,但它们都构成同一个应用程序。为了利用所有线程,我可以在不同的端口上启动多个 redis 实例并为每个实例分配一些 redis 结构吗?这会有什么问题吗?我想在我的客户端代码中,我必须在不同的端口上建立多个连接来读取/写入应用程序数据..

谢谢

【问题讨论】:

    标签: redis


    【解决方案1】:

    Redis 是单线程的,您需要启动多个实例以利用多核或多 CPU 的优势。必须使用不同的端口,您可能还需要更改配置文件中的一些其他参数以避免冲突:

    • pidfile
    • 端口
    • unixsocket
    • 日志文件
    • dbfilename(或 dir)

    在客户端代码中,每个 Redis 实例至少需要一个连接。

    主要问题是一旦在不同的实例中添加了一些键,您就不能再运行涉及多个键的命令而不首先检查所有键是否在同一个实例上(例如,您不能再计算存储在不同的 Redis 实例,至少不使用 SINTER 命令)。

    【讨论】:

    • 谢谢迪迪埃。我很高兴得到 SO 的主要 redis 专家之一的回复。我明白您关于无法对跨实例的键执行命令的观点,这是一个重要的限制。这意味着事先预测所有的访问路径,这并不总是可能的。如果我每个数据结构使用一个线程,会更容易吗,因为命令仅适用于每个数据结构 - 这样我最多可以使用 5 个线程。谢谢
    • 我相信每个数据结构一个实例不会飞。一些命令涉及多种数据结构(set 和 zset 之间的交集、涉及哈希引用的排序命令等......)
    • 一般情况下,分发机制取决于应用程序。例如,对于多租户应用程序,按租户分布数据是有意义的。对于其他应用程序,它通常由功能标准驱动。
    猜你喜欢
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    相关资源
    最近更新 更多