高級命令
- keys * 返回滿足條件的所有key,可以模糊匹配
- exists 是否存在指定的key
- persist 取消過期時間
- select 選擇數據庫 (0-15,總共16個數據庫)
- move key index 將當前數據庫的 key 移動到給定的數據庫 db 當中
- randomkey 隨機返回數據庫里的一個key
- rename 重命名key
- echo 打印命令
- dbsize 查看數據庫key的數量
- info 獲取數據庫的信息
- config get 獲取配置信息
- flushdb 清空數據庫
Redis安全
- 定期打補丁
- 禁止一些高危命令
- 以低權限運行 Redis 服務
- 禁止外網訪問 Redis
- 設置訪問密碼 足夠復雜,防止暴力破解?
- 訪問權限 內網通過acl限制可以訪問redis的ip和端口
Redis部署方式-
單點模式
- 安裝完以后直接啟動 ./redis-server ../redis.conf
主從模式
- 一個master可以擁有多個slave,多個slave同時連接一個master,節點在復制時不會影響master對外提供服務,提供系統的伸縮性。
- 主從復制的過程?:slave與master建立連接,發送sync同步命令; master開啟一個后臺進程,將數據庫快照保存到文件中,同時master主進程會開始收集新的寫命令并緩存;后臺完成保存后,就將文件發送給slave ;slave將此文件保存到硬盤上
- 配置 :修改redis.conf, 增加slaveof配置,設置masterauth
哨兵模式
- 概述 :支持集群
- 版本 :運行Sentinel
- 配置 :Sentinel 選舉 ;版本以及版本傳機制播
- 一致性
- 持久化
Redis Cluster
- Redis Cluster是Redis的分布式解決方案,在Redis 3.0版本正式推出的,有效解決了Redis分布式方面的需求。當遇到單機內存、并發、流量等瓶頸時,可以采用Cluster架構達到負載均衡的目的。
- 數據分布理論: 分布式數據庫首要解決把整個數據集按照分區規則映射到多個節點的問題,即把數據集劃分到多個節點上,每個節點負責整個數據的一個子集。常見的分區規則有哈希分區和順序分區。Redis Cluster采用哈希分區規則,因此接下來會討論哈希分區規則。
- 常見的哈希分區有以下幾種: 節點取余分區 ;一致性哈希分區 ;虛擬槽分區
Redis集群數據分區
Redis集群功能限制
- key批量操作支持有限。如:MSET``MGET,目前只支持具有相同slot值的key執行批量操作。
- key事務操作支持有限。支持多key在同一節點上的事務操作,不支持分布在多個節點的事務功能。
- key作為數據分區的最小粒度,因此不能將一個大的鍵值對象映射到不同的節點。如:hash、list。
- 不支持多數據庫空間。單機下Redis支持16個數據庫,集群模式下只能使用一個數據庫空間,即db 0
Redis集群模式
- 安裝ruby(大于2.2.2)
- 安裝redis
- 集群配置
- 安裝gem
- 安裝ruby的redis包
- redis-trib.rb構建集群
Redis事務詳解
- MULTI、EXEC、DISCARD和WATCH命令是Redis事務功能的基礎。Redis事務允許在一次單獨的步驟中執行一組命令,并且可以保證如下兩個重要事項:
- Redis會將一個事務中的所有命令序列化,然后按順序執行。Redis不可能在一個Redis事務的執行過程中插入執行另一個客戶端發出的請求。這樣便能保證Redis將這些命令作為一個單獨的隔離操作執行
- 在一個Redis事務中,Redis要么執行其中的所有命令,要么什么都不執行。因此,Redis事務能夠保證原子性。EXEC命令會觸發執行事務中的所有命令
- MULTI 用于標記事務塊的開始
- EXEC 在一個事務中執行所有先前放入隊列的命令,然后恢復正常的連接狀態
- DISCARD 清除所有先前在一個事務中放入隊列的命令,然后恢復正常的連接狀態
- WATCH 當某個事務需要按條件執行時,就要使用這個命令將給定的鍵設置為受監控的
- UNWATCH 清除所有先前為一個事務監控的鍵
Redis持久化機制
- RDB 持久化 RDB持久化是指在指定的時間間隔內將內存中的數據集快照寫入磁盤,也是默認的持久化方式
- save 900 1 #900秒內如果超過1個key被修改,則發起快照保存
- save 300 10 #300秒內如超過10個key被修改,則發起快照保存
- save 60 10000
- AOF 持久化 aof是redis的一種記錄數據庫寫操作的持久化方案,他會忠實的記錄所有的寫操作,并且以redis協議的格式存儲在一個.aof文件中,在重啟redis的時候,redis可以根據.aof文件的內容來恢復數據集
- appendfsync always //收到寫命令就立即寫入到磁盤,效率最慢,但是保證完全的持久化
- appendfsync everysec //每秒鐘寫入磁盤一次,在性能和持久化方面做了很好的折中
- appendfsync no //完全依賴os 性能最好 持久化沒保證
redis實戰
- 整合Springboot (單機版 、哨兵模式 、cluster )
- 消息隊列
- session共享
?
?