簡體   English   中英

我是否需要在 Redis 中緩存此類數據?

[英]Do I need to cache such data in Redis?

我的網站上有一個頁面,其中包含我自己添加的任務列表。 任務列表大約每周更改一次。 只有30個任務。

在請求的第 2 頁。 第一個要求是如果您完成所有這些任務,可以獲得任務數量和報酬總額。 例如:完成30個任務,獲得2000分。

SELECT
 COUNT(*) as `count`,
 SUM(`reward_amount`) as `sum_reward_amount`
FROM `tasks`
WHERE 1
 ".($tasks_done_ids ? 'AND `id` NOT IN('.$tasks_done_ids.')' : '')."
 AND `no_active` = '0'

以及獲取任務列表本身的第二個請求:

SELECT
 `id`,
 `title`,
 `type`
FROM `tasks`
WHERE 1
 ".($tasks_done_ids ? 'AND `id` NOT IN('.$tasks_done_ids.')' : '')."
 AND `no_active` = '0'
ORDER BY `position` ASC
LIMIT 10

$tasks_done_ids包含每個用戶的已完成任務的 id (1,2,3,4)。

該頁面每秒大約有 250-400 次點擊。 看起來一切都運行得很快,索引是值得的,但有時出於某種原因,我開始認為所有這些都可以發送到 Redis 緩存以減少 mysql 上的負載。 也就是說,從任務列表和報酬金額中存儲一個數組。

在這種情況下是否值得使用緩存,還是使用 MySQL 會更快?

一般來說,數據幾乎沒有變化(你說一周左右一次)並且另一方面每秒讀取 200-450 次這一事實使其成為緩存的完美候選者。

您是否應該 Redis - 取決於。 如果您只有 30 個任務,也許您可以選擇內存緩存,它會更快地訪問數據,因為 Redis 仍然需要完成網絡調用。 當然,如果您的應用程序是分布式的,那么緩存的同步可能需要 Redis 或其他一些集中式緩存存儲,但這超出了我猜的問題的 scope。

Whether Redis will work faster than MySQL in this case or not - again in general it should, but you should measure, there are so many things we don't know about your setup: the network, the server that serves MySQL / Redis, the MySQL 服務的其他請求等等。 除了上述所有內容之外,還有非“純技術”arguments:您的設置中是否有 Redis,引入 Redis 的維護成本是多少?是您是否有想要/需要在這里解決的實際性能問題:)

所以底線,嚴格來說,從技術上講——我相信在這里引入緩存可能是有意義的,但是在你真正決定之前你應該考慮太多的問題——所以幾乎不可能以格式為這個問題提供一個好的答案所以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM