中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

redis的四大特性和原理是什么

發布時間:2021-09-14 14:31:44 來源:億速云 閱讀:174 作者:chen 欄目:關系型數據庫

本篇內容介紹了“redis的四大特性和原理是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、redis的過期

A.應用場景

cookie自動過期,限制每分鐘的訪問次數

B.實現方式

setex(String key, int seconds, String value)

expire key time #秒

pexpire key time #毫秒

expireat key time #秒

pexpireat key time #毫秒

C.實現原理

定時清理

設置key過期時間的時候,就創建一個定時器,不斷循環,時間一到就刪除掉這個key。

優點:過期key馬上被刪除,內存使用率最高。

缺點:如果有一萬個key設置了過期時間,就需要一萬個定時器,不斷循環,這會造成cpu性能的嚴重損耗。

懶漢式清理

在取key的時候,先判斷key是否有過期,如果過期,就刪除。

優點:過期key,只有在被使用時才被刪除,對cpu的占用是最少的。

缺點:如果一個key過期之后,很長時間都沒有被使用過,那這個key會一直占用內存空間,一直不釋放。

定期清理+懶漢式清理

redis采用的是這種方式。經過前面兩種策略可以很清楚的看到。定時清理和懶漢式清理,都不能達到一個最好的效果。

那現在有第三種,就是隔一段時間進行一次清理,清除掉過期的 key。比如一分鐘或者是十分鐘清理一次。

同時使用懶漢式清理,每次獲取key的時候能判斷一下,是否過期,是否需要清理。

二、redis的發布訂閱

redis的四大特性和原理是什么

A.應用場景

訂閱新聞頻道(體育,軍事等),關注大V,關注好友,系統消息廣播。

B.實現方式

PUBLISH channel message #發布消息

SUBSCRIBE channel [channel ...] #訂閱一個或多個頻道

PSUBSCRIBE channel #訂閱一組匹配的頻道

C.實現原理

redis的四大特性和原理是什么

pubsub_channels存放頻道信息,pubsub_patterns存放客戶端信息。通過類似觀察者模式,新的消息發送給每個訂閱者。

三、redis的事務

redis事務和mysql對比

redismysql
multibegin
execcommit
discardrollback
watchlock

A.應用場景

秒殺商品的數量,搶票

B.實現方式

watch multi exec discard

C.實現原理

watch的實現原理:

redis的四大特性和原理是什么

當一個key被修改后,就會對所有監控該key的客戶端,設置dirty標識。

multi和exec的實現原理:

客戶端的三種狀態

REDIS_MULTI    客戶端進入事務狀態。

REDIS_DIRTY_EXEC 客戶端事務無效狀態。命令隊列中有發生錯誤的命令。

REDIS_DIRTY_CAS  客戶端事務處于非安全狀態。watch的key已經被其他客戶端搶先修改了。

事務執行原理:

1.事務執行成功。

第一步:客戶端設置事務狀態為REDIS_MULTI ;

第二步:將多條命令加入到命令隊列;

第三步:執行exec,依次執行完命令隊列中的所有操作命令;

redis的四大特性和原理是什么

2.第一種事務執行失敗REDIS_DIRTY_EXEC。

第一步:客戶端設置事務狀態為REDIS_MULTI ;

第二步:將多條命令加入到命令隊列,但是命令隊列中,存在產生錯誤的命令;

第三步:錯誤的操作命令,導致客戶端狀態變成REDIS_DIRTY_EXEC ,事務執行失敗;

redis的四大特性和原理是什么

3.第二種事務執行失敗REDIS_DIRTY_CAS

第一步:客戶端設置事務狀態為REDIS_MULTI ;

第二步:將多條命令加入到命令隊列;

第三步:正在watch的key被其他的客戶端,搶先修改,導致客戶端狀態變成REDIS_DIRTY_CAS ,事務執行失敗;

redis的四大特性和原理是什么

四、redis的pipline

A.應用場景

一個客戶端能合并多條命令一起發送時,都推薦使用。例如,取出用戶信息,并且取出該用戶關注的用戶列表。

但是,如果命令過多時(返回時間大于1秒),可以拆分到兩個client分別去發送。

B.實現方式

pipline在命令中是沒有的,可以通過java客戶端(jedis)設置。

Pipeline pipe = jedis.pipelined();

pipe.set

C.實現原理

redis的四大特性和原理是什么

pipeline通過減少client與redis-server的連接通信的次數,來降低往返延時時間。

如果一次往返的時間是10ms,往返一千次,就是10秒。而通過pipline的方式,往返時間是20ms。

Pipeline 實現的原理是隊列,即先進先出。數據的順序性得到了保證。

redis的四大特性和原理是什么

“redis的四大特性和原理是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

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

AI

厦门市| 信丰县| 那坡县| 中西区| 泸西县| 临泉县| 安溪县| 囊谦县| 正定县| 临沭县| 嘉峪关市| 乌拉特中旗| 天气| 林西县| 旺苍县| 新营市| 北票市| 永安市| 卢湾区| 浙江省| 延津县| 襄城县| 新野县| 巴中市| 安阳县| 克东县| 哈巴河县| 小金县| 新化县| 长泰县| 凌源市| 布拖县| 昭觉县| 阿拉善左旗| 新昌县| 青河县| 宜春市| 辛集市| 龙口市| 奎屯市| 响水县|