1. redis5.0新特性 1.1. 新的Stream類型 1.1.1. 什麼是Stream數據類型 1. 抽象數據日誌 2. 數據流 1.2. 新的Redis模塊API:Timers and Cluster API 1.3. RDB現在存儲LFU和LRU信息 1.4. 集群管理器從Ruby(re ...
1. redis5.0新特性
1.1. 新的Stream類型
1.1.1. 什麼是Stream數據類型
- 抽象數據日誌
- 數據流
1.2. 新的Redis模塊API:Timers and Cluster API
1.3. RDB現在存儲LFU和LRU信息
1.4. 集群管理器從Ruby(redis-trib.rb)移植到C代碼
1.5. 新的sorted set命令:ZPOPMIN/MAX和阻塞變種
1.6. 主動碎片整理V2
1.7. 增強HyperLogLog實現
1.8. 更好的記憶體統計報告
1.9. 許多帶有子命令的命令現在都有一個Help子命令
1.10. 客戶經常連接和斷開連接時性能更好
1.11. 錯誤修複和改進
1.12. Jemalloc升級到5.1版本
1.13. 安裝和配置redis5.0
1.14. stream命令
- XADD
- 作用:創建一個stream
- 用法:XADD key ID field string [field string ...]
- ID:毫秒的unix時間戳 - sequence(同一毫秒的序列號)組成
- XADD wangzhe * hero luban 創建預設id的key為hero的流數據
- XLEN
- 作用:返回stream中元素的個數
- 用法:XLEN key
- XDEL
- 作用:刪除id
- 用法:XDEL key id,返回刪除個數
- XRANGER
- 作用:返回給定ID範圍內的stream數據
- 用法:XRANGE key start end [COUNT count]
- 特殊ID:+:最大ID -:最小ID
- XREAD
- 作用:從一個或多個stream讀取數據
- 用法:XREAD[COUNT count][BLOCK milliseconds] STREAMS key [key ...] ID [ID ...]
- XREAD count 1 STREAMS LOL 1-1 讀取流LOL中從id為1-1開始的的1條數據
- XREAD BLOCK 0 STREAMS key $ 永久堵塞,知道流key接收到最新數據,會顯示阻塞時間
- XGROUP
- 作用:創建一個Consumer Group
- 用法:XGROUP CREATE key groupname ID
- XREADROUP
- 作用:從Consumer Group中讀取數據
- 用法:XREADGROUP GROUP groupname consumer [COUNT count][BLOCK milliseconds STREAMS key [key ...] ID [ID ...]
- XREADGROUP GROUP fashi chuanrong STREAMS wangzhe > 表示查詢最新數據
1.15. help特性
- XINFO help
- PUBSUB help
- XGROUP help
- ... help
- 有子命令的命令才可以用
1.16. redis集群
1.16.1. 創建集群數據存儲文件
- mkdir -p /usr/local/redis-cluster
- mkdir 5001 5002 5003 5004 5005 5006
- 修改redis.conf配置文件,開啟集群配置,aof配置等等
- 每個文件夾下配置的區別就在埠,統一命令修改
:1,$s/5001/5002/g
- 都啟動完成後,創建六個子節點
- ruby創建方法:redis-trib.rb create --replicas 1 192.168.4.147:500*
- 新特性創建方法:redis-cli --cluster create 192.168.4.147:500* --cluster-replicas 1
- 主/從 = 1 : cluster-replicas
- redis-cli -c -h 192.168.4.147 -p 5001 以集群的模式進入
1.16.2. 動態添加節點
- ruby添加節點:redis-trib.rb add-node 192.168.4.147:5007 192.168.4.147:5001
- 新特性添加節點:redis-cli --cluster add-node 192.168.4.147:5007 192.168.4.147:5001
- 添加從節點:redis-cli --cluster add-node 192.168.4.147:5008 192.168.4.147:5001
- 在5008的client命令行里,cluster replicate 主節點,那麼5008會成為該主節點的從節點
1.16.3. 分片
- ruby分片方法:redis-trib.rb reshard 192.168.4.147:5007
- 新特性分片方法:redis-cli --cluster reshard 192.168.4.147 5007
1.16.4. 刪除節點
1.16.4.1. 刪除從節點
- ruby刪除方法:redis-trib.rb del-node 192.168.4.147 5008
- 新特性刪除方法:redis-cli --cluster del-node 192.168.4.147 5008 主節點唯一id
1.16.4.2. 刪除主節點(需要先把數據槽移動到其他節點,再刪除主節點,防止數據丟失)
- ruby刪除方法:redis-trib.rb reshard 192.168.4.147 5007
- 新特性刪除方法:redis-cli --cluster reshard192.168.4.147 5007
- done
1.16.5. 新的Sorted Set
- ZPOPMAX
- 作用:刪除返回集合中分值最高的元素
- 用法:ZPOPMAX key [count]
- ZPOPMIN
- 作用:刪除返回集合中分值最小的元素
- 用法:ZPOPMIN key [count]
- BZPOPMAX
- 作用:ZPOPMAX的阻塞版
- 用法:BZPOPMAX key [key ...] timeout
4 BZPOPMIN - 作用:ZPOPMIN的阻塞版
- 用法:BZPOPMIN key [key ...] timeout
1.16.5.1. 測試
ZADD exam 100 daji
ZADD exam 99 xiaoqiao
ZADD exam 98 zhenji
ZADD exam 97 anqila
ZRANGE exam 0 -1 WITHSCORES 帶分數的列印,從小到大輸出
ZPOPMAX exam輸出最大分數的值,會從元素中刪除
1.17. 碎片整理和記憶體報告
1.17.1. 應用場景
- 在運行期進行自動記憶體碎片清理,釋放記憶體空間
- 通過記憶體報告瞭解整個系統的記憶體使用情況
1.17.2. 使用
- 配置項中找到 activedefrag yes,去掉註解,它下麵和它相關的註解都解開
1.17.3. 測試
- 使用debug populate 300000 imooc 1000 隨機產生300000個key為imooc開頭的 大小為1000的數據
- info memory 查看記憶體使用情況
- MEMORY STATS 查看記憶體詳情
- memory usage imooc:1 查看鍵值占用記憶體