我将在具有 6 个内核、12 个线程和 32 GB RAM 的专用服务器上运行 Redis。我使用 redis 作为主要数据存储。该应用程序有许多散列、集合和列表,但它们都构成了同一个应用程序。为了利用所有线程,我可以在不同端口上启动多个 redis 实例并为每个实例分配一些 redis 结构吗?这个会有问题吗?我想在我的客户端代码中,我必须在不同的端口上建立多个连接才能读/写应用程序数据..
谢谢
最佳答案
Redis 是单线程的,您需要启动多个实例才能利用多核或多 CPU 的优势。必须使用不同的端口,您可能还需要更改配置文件中的一些其他参数以避免冲突:
- pid文件
- 港口
- unixsocket
- 日志文件
- dbfilename(或者 dir)
在客户端代码中,每个 Redis 实例至少需要一个连接。
主要问题是一旦在不同的实例中添加了一些键,你就不能再运行涉及多个键的命令而不先检查所有的键是否在同一个实例上(例如你不能再计算存储在不同的 Redis 实例,至少不使用 SINTER 命令)。
关于redis - 在多线程专用服务器上优化 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12599641/