如何處理 redis 中的大 key?
針對(duì)任務(wù)數(shù)據(jù)實(shí)時(shí)保存需求,在任務(wù)開始時(shí),每 5 秒將數(shù)據(jù)保存到 Redis 的 list 中。但由于任務(wù)執(zhí)行時(shí)長未知,容易導(dǎo)致 list 數(shù)據(jù)過大,形成大 key。如何有效處理此大 key 成為亟需解決的問題。
處理方法
一種可行的方法是:
- 設(shè)置定時(shí)任務(wù),每 30 分鐘處理一次大 key,將數(shù)據(jù)保存到數(shù)據(jù)庫中。
- 查詢數(shù)據(jù)時(shí),同時(shí)查詢數(shù)據(jù)庫和 Redis,整合實(shí)時(shí)數(shù)據(jù)后返回給前端。
優(yōu)點(diǎn)
- 將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中,具有更強(qiáng)的存儲(chǔ)能力和查詢功能,緩解 Redis 中 key 過大問題。
- 解決實(shí)時(shí)數(shù)據(jù)處理需求,前端可及時(shí)獲取整合后的數(shù)據(jù)。
優(yōu)化建議
- 改進(jìn):結(jié)束任務(wù)時(shí)直接將數(shù)據(jù)保存到數(shù)據(jù)庫,避免后期定時(shí)任務(wù)處理。
- 定期轉(zhuǎn)存:每隔一段時(shí)間將 Redis 數(shù)據(jù)轉(zhuǎn)存到數(shù)據(jù)庫,防止 Redis 中 key 過大。
適用場景
不同的場景可能需要不同的解決方案,該方法適用于數(shù)據(jù)量較大且需要實(shí)時(shí)處理的情況。
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載。
THE END