我已经阅读了对stackoverflow上几个类似问题的回答,尽管共享一个实例用于两个目的似乎是可以的,但我想知道潜在的缺点。
我主要担心的是缓存会填满内存,并减慢或中断任务队列。这可能吗?我大量使用缓存,所以我应该担心这种情况吗?
理论上,您可以使用相同的Redis实例进行任务队列和缓存。
有一些缺点
- 查询时间更长
- 内存使用率高
- CPU使用率高
- 备份
任何故障保护任务队列都会进行大量Redis调用,以将任务从一个数据结构移动到另一个,并执行其他操作。您应该检查您的任务队列,以及它将在几秒钟内对1个队列和N个队列进行多少Redis调用。如果Redis查询的数量与队列的数量成正比,那么你应该检查一下,你的Redis服务器能处理这么多请求吗。
由于您将相同的Redis实例用于任务队列和缓存,因此缓存中的条目数量可能非常大,请注意,它不会超出内存限制。丢失缓存数据是可以的,但不应该丢失任务队列数据。
由于大量的查询,CPU利用率会增加,希望不会达到90%左右,请注意任何CPU峰值。
如果您要将相同的Redis服务器用于任务队列,则应为Redis服务器启用备份,以便从备份中恢复任务。当您进行备份时,可能会对整个数据进行备份,而不仅仅是任务队列。