Redis5.0版本的新特性


Redis5版本是一個大的版本升級,相比之前版本,新增了一些新特性,這里就簡單介紹一下,重點介紹一下新的數據類型和命令。

新特性

  • 新的流數據類型(Stream data type)
  • 新的 Redis 模塊 API:定時器、集群和字典 API(Timers, Cluster and Dictionary APIs)
  • RDB 增加 LFU 和 LRU 信息
  • 集群管理器從 Ruby (redis-trib.rb) 移植到了redis-cli 中的 C 語言代碼
  • 新的有序集合(sorted set)命令:ZPOPMIN/MAX 和阻塞變體(blocking variants)
  • 升級 Active defragmentation 至 v2 版本
  • 增強 HyperLogLog 的實現
  • 更好的內存統計報告
  • 許多包含子命令的命令現在都有一個 HELP 子命令
  • 客戶端頻繁連接和斷開連接時,性能表現更好
  • 升級 Jemalloc 至 5.1 版本
  • 引入 CLIENT UNBLOCK 和 CLIENT ID
  • 新增 LOLWUT 命令
  • 在不存在需要保持向后兼容性的地方,棄用 "slave" 術語
  • 網絡層中的差異優化
  • 對 Redis 核心代碼進行了重構並在許多方面進行了改進
  • 引入動態的 HZ(Dynamic HZ) 以平衡空閑 CPU 使用率和響應性

新數據類型——Stream

Redis中的五種數據類型,這是大家經常提到的一句話,在Redis5.0之后,就得改成六種數據類型了。新增的Stream類型其實是一個時序數據結構。

  • 特點
    1.每條記錄是結構化、可擴展的對,不是一個字符串。
    2.每條記錄在日志中有唯一標識,類似於Mysql表里的自增ID,標識中包含了時間戳信息,單調遞增。
    3.可以根據需要自動清理歷史記錄。
    4.保存在內存中,支持持久化。

  • 應用場景
    其他五種數據結構無法實現的需求,可以通過stream來實現。例如List類型只能是先進先出或者先進后出,不能取出中間某部分數據,Stream類型可以實現。

  • 使用命令
    1.創建 xadd key id field string[field string]
    2.刪除 xdel key id
    3.查看長度 xlen key
    4.查看范圍 xrange key start end(+表最大,-表最小)
    5.讀取多個數據 xread stream key id
    6.創建消費組 xgroup create key groupname id
    7.從消費組中讀取 xread group groupname customer stream key id

命令演示

創建

127.0.0.1:6379> xadd test_stream * username zhangsan age 30
"1584793793095-0"


命令代表往test_stream添加一條數據{"username":"張三","age":30},Stream類型存儲的不是一個字符串,而是多個鍵值對。* 表示由redis服務端生成一個entryid,也就是每條數據的唯一標識。1584793793095-0就是entryid的值,可以理解為日志中的行號。1584793793095標識當前時間的毫秒時間戳,0標識這一時刻的第幾個數據。當然也可以指定entryid的值,確保唯一性就行,例如:

127.0.0.1:6379> xadd test_stream1 0001 a 1 b 2
"1-0"

上述命令指定了entryid的值,需要注意的是,Stream的流是只增不減的,如果entryid的值比之前的小,執行會報錯,如果有相同的entryid也會報錯,例如:

查詢所有

查詢指定entryid的值范圍,可以理解為取某個時間段內的數據

查詢數據總個數

查詢前N個

新命令——ZPOPMAX/MIN

原有的有序集合,增加了類似List的pop命令。

  • ZPOPMAX 命令用於移除並彈出有序集合中分值最大的 count 個元素
  • ZPOPMIN 命令用於移除並彈出有序集合中分值最小的 count 個元素
  • BZPOPMAX 和 BZPOPMIN 是上述兩個命令的阻塞變種

新命令——CLIENT ID

Client id返回當前連接的ID,每個ID符合如下約束:
1.永不重復,可以判斷當前鏈接是否斷鏈過
2.單調遞增,可以判斷不同鏈接的接入順序

煩請各位看官覺得有用就給個推薦吧!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM