游标迭代器(过滤器)——Scan
生活随笔
收集整理的這篇文章主要介紹了
游标迭代器(过滤器)——Scan
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一個問題引發的「血案」
曾經發生過這樣一件事,我們的 Redis 服務器存儲了海量的數據,其中登錄用戶信息是以 user_token_id 的形式存儲的。運營人員想要當前所有的用戶登錄信息,然后悲劇就發生了:因為我們的工程師使用了 keys user_token_* 來查詢對應的用戶,結果導致 Redis 假死不可用,以至于影響到線上的其他業務接連發生問題,然后就收到了一堆的系統預警短信。并且這個假死的時間是和存儲的數據成正比的,數據量越大假死的時間就越長,導致的故障時間也越長。
那如何避免這個問題呢?
問題的解決方案
在 Redis 2.8 之前,我們只能使用 keys 命令來查詢我們想要的數據,但這個命令存在兩個缺點:
然而,比較幸運的是在 Redis 2.8 時推出了 Scan,解決了我們這些問題,下面來看 Scan 的具體使用。
Scan 命令使用
我們先來模擬海量數據,使用 Pipeline 添加 10w 條數據,Java 代碼實現如下:
import redis.clients.jedis.Jedis; import redis.clients.jedis.Pipeline; import utils.JedisUtils;public class ScanExample {public static void main(String[] args)總結
以上是生活随笔為你收集整理的游标迭代器(过滤器)——Scan的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL 中日志的面试题总结
- 下一篇: 阿里一面 缓存穿透、缓存击穿、缓存雪崩和