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

溫馨提示×

溫馨提示×

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

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

Redis5.0支持的新功能有哪些

發布時間:2021-11-15 10:33:45 來源:億速云 閱讀:138 作者:小新 欄目:云計算

這篇文章給大家分享的是有關Redis5.0支持的新功能有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

Redis5.0支持的新特性說明  文章來自華為云幫助中心
DCS的Redis5.x版本繼承了4.x版本的所有功能增強以及新的命令,同時還兼容開源Redis5.x版本的新增特性。

Stream數據結構

Stream是Redis 5.0引入的一種新數據類型,它是一個全新的支持多播的可持久化消息隊列。

點擊下方鏈接,可以了解更多詳情。

https://www.huaweicloud.com/product/dcs.html

Redis Stream的結構示意圖如圖7-1所示,它是一個可持久化的數據結構,用一個消息鏈表,將所有加入進來的消息都串起來。

Stream數據結構具有以下特性:

Stream中可以有多個消費者組。
每個消費組都含有一個Last_delivered_id,指向消費組當前已消費的最后一個元素(消息)。
每個消費組可以含有多個消費者對象,消費者共享消費組中的Last_delivered_id,相同消費組內的消費者存在競爭關系,即一個元素只能被其中一個消費者進行消費。
消費者對象內還維持了一個Pending_ids,Pending_ids記錄已發送給客戶端,但是還沒完成ACK(消費確認)的元素id。
Stream與Redis其他數據結構的比較,見表7-4。
圖1-1 Stream數據結構示意圖

Redis5.0支持的新功能有哪些

表1-1 Stream與Redis現有數據結構比較

Stream

List, Pub/Sub, Zset

獲取元素高效,復雜度為O(logN)

List獲取元素的復雜度為O(N)

支持offset,每個消息元素有唯一id。不會因為新元素加入或者其他元素淘汰而改變id。

List沒有offset概念,如果有元素被逐出,無法確定最新的元素

支持消息元素持久化,可以保存到AOF和RDB中。

Pub/Sub不支持持久化消息。

支持消費分組

Pub/Sub不支持消費分組

支持ACK(消費確認)

Pub/Sub不支持

Stream性能與消費者數量無明顯關系

Pub/Sub性能與客戶端數量正相關

允許按時間線逐出歷史數據,支持block,給予radix tree和listpack,內存開銷少。

Zset不能重復添加相同元素,不支持逐出和block,內存開銷大。

不能從中間逐出消息元素。

Zet支持刪除任意元素

Stream相關命令介紹

接下來按照使用流程中出現的順序介紹Stream相關命令。詳細命令見表7-5

首先使用XADD添加流元素,即創建Stream,添加流元素時可指定消息數量最大保存范圍。
然后通過XGROUP創建消費者組。
消費者使用XREADGROUP指令進行消費。
客戶端消費完畢后使用XACK命令確認消息已消費成功。
圖1-2 Stream相關命令介紹

Redis5.0支持的新功能有哪些

表1-2 Stream的詳細命令

命令

說明

語法

XACK

從流的消費者組的待處理條目列表(簡稱PEL)中刪除一條或多條消息。

XACK key group ID [ID ...]

XADD

將指定的流條目追加到指定key的流中。 如果key不存在,作為運行這個命令的副作用,將使用流的條目自動創建key。

XADD key ID field string [field string ...]

XCLATM

在流的消費者組上下文中,此命令改變待處理消息的所有權, 因此新的所有者是在命令參數中指定的消費者。

XCLAIM key group consumer min-idle-time ID [ID ...] [IDLE ms] [TIME ms-unix-time] [RETRYCOUNT count] [FORCE] [JUSTID]

XDEL

從指定流中移除指定的條目,并返回成功刪除的條目的數量,在傳遞的ID不存在的情況下, 返回的數量可能與傳遞的ID數量不同。

XDEL key ID [ID ...]

XGROUP

該命令用于管理流數據結構關聯的消費者組。使用XGROUP你可以:

l  創建與流關聯的新消費者組。

l  銷毀一個消費者組。

l  從消費者組中移除指定的消費者。

l  將消費者組的最后交付ID設置為其他內容。

XGROUP [CREATE key groupname id-or-$] [SETID key id-or-$] [DESTROY key groupname] [DELCONSUMER key groupname consumername]

XINFO

檢索關于流和關聯的消費者組的不同的信息。

XINFO [CONSUMERS key groupname] key key [HELP]

XLEN

返回流中的條目數。如果指定的key不存在,則此命令返回0,就好像該流為空。

XLEN key

XPENDING

通過消費者組從流中獲取數據。檢查待處理消息列表的接口,用于觀察和了解消費者組中哪些客戶端是活躍的,哪些消息在等待消費,或者查看是否有空閑的消息。

XPENDING key group [start end count] [consumer]

XRANGE

返回流中滿足給定ID范圍的條目。

XRANGE key start end [COUNT count]

XREAD

從一個或者多個流中讀取數據,僅返回ID大于調用者報告的最后接收ID的條目。

XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...]

XREADGROUP

XREAD命令的特殊版本,指定消費者組進行讀取。

XREADGROUP GROUP group consumer [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...]

XREVRANGE

與XRANGE相同,但顯著的區別是以相反的順序返回條目,并以相反的順序獲取開始-結束參數

XREVRANGE key end start [COUNT count]

XTRIM

XTRIM將流裁剪為指定數量的項目,如有需要,將驅逐舊的項目(ID較小的項目)。

XTRIM key MAXLEN [~] count

消息(流元素)消費確認

Stream與相比Pub/Sub,不僅增加消費分組模式,還支持消息消費確認。

當一條消息被某個消費者調用XREADGROUP命令讀取或調用XCLAIM命令接管的時候, 服務器尚不確定它是否至少被處理了一次。 因此,一旦消費者成功處理完一條消息,它應該調用XACK知會Stream,這樣這個消息就不會被再次處理, 同時關于此消息的PEL(pending_ids)條目也會被清除,從Redis服務器釋放內存。

某些情況下,因為網絡問題等,客戶端消費完畢后沒有調用XACK,這時候PEL內會保留對應的元素ID。待客戶端重新連上后,XREADGROUP的起始消息ID建議設置為0-0,表示讀取所有的PEL消息及自last_id之后的消息。同時,消費者消費消息時需要能夠支持消息重復傳遞。

圖1-3 ACK機制解讀

Redis5.0支持的新功能有哪些

內存使用優化

Redis5.x在上一版本基礎上,在內存使用上做了進一步優化。

l   主動碎片整理

當key被頻繁修改,value長度不斷變化時,Redis會為key分配新的內存空間。由于Redis追求高性能,實現了自己的內存分配器來管理內存,因此并不會將原有內存釋放給OS,從而導致出現內存碎片。當used_memory_rss/used_memory高于1.5,一般認為內存碎片占比過高,內存利用率低。

因此,合理規劃和使用緩存數據,規范數據寫入,有助于減少內存碎片的產生。

Redis3.x及以下:可以通過定期重啟服務解決內存碎片問題。建議實際緩存數據不超過配置可用內存的50%。

Redis4.x:支持主動整理內存碎片,服務在運行期間進行自動內存碎片清理。同時Redis4.x支持通過memory purge命令手動清理內存碎片。

Redis5.0:增強版主動碎片整理,配合Jemalloc版本更新,更快更智能,延時更低。

l   HyperLogLog算法優化

HyperLogLog是一種基數計數方法,使用少量的內存空間完成海量數據的計數統計,在Redis5.0中,HyperLogLog算法得到改進,優化了計數統計時的內存使用效率。

舉個例子:B樹計數效率非常高,但是內存消耗也比較多。而HyperLogLog可節省大量存儲空間。當B樹需要1M內存統計,HyperLogLog只需要1kb。

l   內存信息統計報告能力增強

INFO命令返回信息更加詳實。

命令新增和優化

客戶端管理增強
?           Redis-cli支持集群管理

在Redis4.x以及之前版本,需要安裝redis-trib模塊,管理集群。

Redis5.0對Redis-cli做了優化,集成了集群的所有管理功能。具體使用可以通過命令redis-cli --cluster help查看幫助信息。

?           優化客戶端在頻繁連接與中斷場景下的性能

當您的應用需要使用短連接時,這個優化價值凸顯。

有序集合使用更簡單
有序集合新增兩個命令:ZPOPMIN和ZPOPMAX。

?           ZPOPMIN key [count]

刪除并返回有序集合key中的最多count個具有最低得分的成員。如果返回多個成員,也會按照得分高低(value值比較),從低到高排列。

?           ZPOPMAX key [count]

刪除并返回有序集合key中的最多count個具有最高得分的成員。如果返回多個成員,也會按照得分高低(value值比較),從高到低排列。

help增加更多子命令說明
支持help直接查看快速使用攻略,你不再需要每次登陸redis.io去查找。例如,命令行輸入stream使用攻略:xinfo help

1
2
3
4
5
6
7
127.0.0.1:6379> xinfo help
1) XINFO <subcommand> arg arg ... arg. Subcommands are:
2) CONSUMERS <key> <groupname>  -- Show consumer groups of group <groupname>.
3) GROUPS <key>                 -- Show the stream consumer groups.
4) STREAM <key>                 -- Show information about the stream.
5) HELP                         -- Print this help.
127.0.0.1:6379>
  

Redis-cli命令輸入提示
Redis-cli在輸入完整的命令后,會展示參數提醒,幫助用戶記憶命令語法格式。

如下圖所示,輸入zadd命令,Redis-cli使用淺顏色字體顯示zadd的語法。

RDB支持存儲LFU、LRU

Redis5.0開始,RDB快照文件中增加存儲key逐出策略LRU和LFU:

l   FIFO:先進先出。最早存儲的數據,優先被淘汰。

l   LRU:最近最少使用。長期未使用的數據,優先被淘汰。

l   LFU:最不經常使用。在一段時間內,使用次數最少的數據,優先被淘汰。

Redis5.0的RDB文件格式有變化,向下兼容。因此如果使用快照的方式遷移,可以從Redis低版本遷移到Redis5.0,但不能從Redis5.0遷移到低版本。

感謝各位的閱讀!關于“Redis5.0支持的新功能有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

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

AI

金塔县| 青州市| 合川市| 永福县| 东乡| 多伦县| 韶关市| 蛟河市| 夹江县| 曲沃县| 姚安县| 延寿县| 卫辉市| 鄂温| 宁河县| 翁源县| 房山区| 西华县| 开封县| 玉田县| 东阳市| 景泰县| 汤原县| 兴国县| 德保县| 长沙县| 商城县| 弋阳县| 英山县| 霞浦县| 句容市| 历史| 泾阳县| 会昌县| 怀仁县| 腾冲县| 黄山市| 广安市| 东宁县| 巫山县| 鞍山市|