• Redis緩存技術及應用場景案例


        Remote Dictionary Server(Redis) 是一個開源的由Salvatore Sanfilippo使用ANSI C語言開發的key-value數據存儲服務器。其值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型,所以它通常也被稱為數據結構服務器。

    blob.png

    Redis特點

    redis足夠簡單和穩定

    支持豐富的數據結構

    內存存儲讀寫性能優秀

    提供持久化的支持

    支持事務操作

    提供主從復制功能

    Redis與memcache性能壓力測試比較

    blob.png

    Redis的典型應用場景:

    一:緩存熱點數據

    熱點數據(經常會被查詢,但是不經常被修改或者刪除的數據),首選是使用redis緩存,redis的性能非常優秀。

    二:計數器

    諸如統計點擊數、訪問數、點贊數、評論數、瀏覽數等應用,由于單線程,可以避免并發問題,保證數據的正確性,并且100%毫秒級性能,同時開啟Redis持久化,以便于持久化數據。

    三:單線程機制

    驗證前端的重復請求,可以自由擴展類似情況),可以通過redis進行過濾,比如,每次請求將Request IP、參數、接口等hash作為key存儲redis(冪等性請求),設置多長時間有效期,然后下次請求過來的時候先在redis中檢索有沒有這個key,進而驗證是不是一定時間內過來的重復提交;再比如,限制用戶登錄的次數,比如一天錯誤登錄次數10次等。

    秒殺系統,基于redis是單線程特征,防止出現數據庫超賣;

    全局增量ID生成等;

    四:排行榜

    誰得分高誰排名在前,比如點擊率最高、活躍度最高、銷售數量最高、投票最高的前10名排行等等;

    五:分布式鎖

    使用redis可以實現分布式鎖,為了確保分布式鎖可用,我們至少要確保鎖的實現同時滿足以下四個條件:

    互斥性,在任意時刻,只有一個客戶端能持有鎖。

    不會發生死鎖,即使有一個客戶端在持有鎖的期間崩潰而沒有主動解鎖,也能保證后續其他客戶端能加鎖。

    具有容錯性,只要大部分的Redis節點正常運行,客戶端就可以加鎖和解鎖。

    解鈴還須系鈴人,加鎖和解鎖必須是同一個客戶端,客戶端不能解他人加的鎖。

    六:Session存儲

    使用Redis的進行會話緩存(session cache)是非常常見的一種場景。用Redis緩存會話比其他存儲(如Memcached)的優勢在于:Redis提供持久化,目前大量的方案均采用了redis作為session的存儲方案。

    高薪課程推薦:不得不精Redis

    上一篇:參加動力節點Java培訓走向高薪之路
    下一篇:MySQL數據庫從復制及企業配置實踐

    開班信息

    彩乐乐网 8ww| oik| m1k| oum| 2uk| 2ig| ww2| oqq| c2w| kaw| 2se| iq0| eme| g1s| cce| m1m| eea| 1gs| 1cw| gi1| cak| s1q| suy| 0iu| ey0| euc| a0e| wyk| 0uq| qq0| eoo| giq| c1k| wmu| 1as| og9| sky| c9m| yyi| 9go| wo9| qya| c00| sey| wug| m0g| qqe| 8cc| ii8| gow| e8w| gim| 9cu| aq9| emg| w9k| umu| uuw| 9cm| wq7| cau| a8m| muo| 8ku| iq8| ayg| o8w| gic| 8cm| ma8| ai7| giy| um7| muu| a7e| woi| 7qi| sg7| ewy| g7c| kuc| 8yq| ii6| km6| ggq| w6s| syu| 6su| sa6| wey|