1.在實現緩存排序功能之前,必須先明白這一功能的合理性。不妨思考一下,既然可以在數據庫中排序,為什么還要把排序功能放在緩存中實現呢?這里簡單總結了兩個原因:首先,排序會增加數據庫的負載,難以支撐高並發的應用;其次,在緩存中排序不會遇到表鎖定的問題。Redis恰好提供了排序功能,使我們可以方便地實現緩存排序。
2.
應用Redis實現數據的讀寫,同時利用隊列處理器定時將數據寫入mysql。
3.
在redis啟動時去mysql讀取所有表鍵值存入redis中,往redis寫數據時,對redis主鍵自增並進行讀取,若mysql更新失敗,則需要及時清除緩存及同步redis主鍵。
這樣處理,主要是實時讀寫redis,而mysql數據則通過隊列異步處理,緩解mysql壓力,不過這種方法應用場景主要基於高並發,而且redis的高可用集群架構相對更復雜,一般不是很推薦。
4.
Redis配置
作為緩存服務器,如果不加以限制內存的話,就很有可能出現將整台服務器內存都耗光的情況,可以在redis的配置文件里面設置:
# 限定最多使用1.5GB內存 maxmemory 1536mb
如果內存到達了指定的上限,還要往redis里面添加更多的緩存內容,需要設置清理內容的策略:
# 設置策略為清理最少使用的key對應的數據 maxmemory-policy allkeys-lru
