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