亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

redis怎么實現數據存儲和緩存的一致性

發布時間:2020-06-23 11:38:15 來源:億速云 閱讀:340 作者:Leah 欄目:關系型數據庫

redis怎么實現數據存儲和緩存的一致性?針對這個問題,這篇文章給出了相對應的分析和解答,希望能幫助更多想解決這個問題的朋友找到更加簡單易行的辦法。

方式1:

數據庫保存數據,redis不persist redis啟動后,從數據庫加載數據 不要求強一致實時性的讀請求,都由redis處理 要求強一致實時性的讀請求,由數據庫處理 寫請求有2種處理方式,由數據庫處理

應用先寫道數據庫,然后更新redis

應用先寫道數據庫,然后其它daemon同步到redis

優點:redis啟動不用處理redis數據和數據庫不一致

缺點:redis啟動給數據庫很大的讀壓力

方式2:

數據庫和redis分別處理不同的數據類型,數據庫處理要求強一致實時性的數據,例如金融數據、交易數據;Redis處理不要求強一致實時性的數據,例如網站最熱貼排行榜

redis和MySQL數據的同步,代碼級別大致可以這樣做: 讀: 讀redis->沒有,讀mysql->把mysql數據寫回redis 寫: 寫mysql->成功,寫redis

并發不高的情況: 讀: 讀redis->沒有,讀mysql->把mysql數據寫回redis,有的話直接從redis中取; 寫: 寫mysql->成功,再寫redis;

并發高的情況: 讀: 讀redis->沒有,讀mysql->把mysql數據寫回redis,有的話直接從redis中取; 寫:異步話,先寫入redis的緩存,就直接返回;定期或特定動作將數據保存到mysql,可以做到多次更新,一次保存;

--備注:如果寫redis要使用redis的事務:

127.0.0.1:6379> WATCH id
OK
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> INCR id
QUEUED
127.0.0.1:6379> EXEC
1) (integer) 342183
127.0.0.1:6379>

方式3:

使用lua腳本:redis在使用lua使用同時只允許一個腳本執行,符合事務的原子性,但一個lua腳本不能執行時間過大,不然會阻塞

EVAL

EVAL命令對 Lua 腳本進行執行求值。

語法:

EVAL script numkeys key [key …] arg [arg …]
script lua腳本內容 注意的是腳本不應該是Lua函數。
numkeys 表示指定鍵名參數的個數。
key [key ...] 表示腳本對應的key值列表 在腳本中可以使用KEYS[1] KEYS[2] KEYS[3]KEYS[n] n從1開始 。
arg [arg ...] 命名行中傳遞的參數列表 在腳本中可以使用ARGV[1] ARGV[2] ARGV[3]ARGV[n] n從1開始 。

一個示例勝過千言萬語的解釋

eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 id name 3 mytest

執行上面腳本返回

1) "id"2) "name"
3) "2"
4) "mytest"

關于redis實現數據存儲和緩存的一致性的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

信宜市| 崇仁县| 抚顺市| 兖州市| 扶风县| 会宁县| 收藏| 赤水市| 桃江县| 景德镇市| 额尔古纳市| 敦煌市| 乐昌市| 天镇县| 瑞丽市| 茌平县| 大兴区| 高要市| 柯坪县| 桦南县| 湘乡市| 普格县| 黄大仙区| 安义县| 灵宝市| 新化县| 且末县| 比如县| 黔西县| 莱芜市| 南昌县| 深泽县| 镇赉县| 西城区| 武鸣县| 章丘市| 鄯善县| 祁东县| 太仓市| 周至县| 临西县|