一、安裝
1、去官網下載:http://download.redis.io/releases/
2、redis-2.8.17.tar.gz下載以後的文件放到服務器目錄下(如:/usr/local 以下全部以此路徑)
3、解壓
tar xf redis-2.8.17.tar.gz
4、進入redis-2.8.17目錄下進行編譯和安裝,
編譯:執行make命令
make
安裝:執行make PREFIX=/usr/local/redis install
make PREFIX=/usr/local/redis install
二、啓動
1、進入redis的bin目錄下
cd /usr/local/redis/bin
2、複製redis.conf到/usr/local/redis/bin下
cp /usr/local/redis-2.8.17/redis.conf /usr/local/redis/bin/
3、編輯剛纔修改的文件
vim redis.conf
搜索 daemonize;默認值爲no,修改爲yes,保存退出
4、啓動:
./redis-server redis.conf
啓動時若不加redis.conf 不會後臺允許
查看redis進程是否啓動成功:ps -ef|grep redis
5、停止命令
kill 進程號
或 通過客戶端關閉
./redis-cli shutdown
三、修改遠程端口和連接地址
1、修改端口號
cd /usr/local/redis/bin/
vim redis.conf
搜索 port 默認值:6379
2、外部連接地址
在(三 1)中搜索bind
放開註釋
127.0.0.1表示只有本機可以連接
0.0.0.0表示允許任何ip連接
實際開發中可以指定特定ip可以連接
繼續搜索timeout
0表示沒有超時時間,可以指定一個超時時間:300 單位是秒
保存退出
四、啓動多個redis
方法1 覆蓋端口
./redis-server redis.conf --port 6380
./redis-server redis.conf --port 6381
./redis-server redis.conf --port 6382
方法2 多個配置文件方法:複製redis.conf文件,修改端口號
./redis-server redis6380.conf
./redis-server redis6381.conf
./redis-server redis6382.conf
方法3 copy多個bin目錄,修改每個配置文件的端口,啓動自己的配置文件
cd /usr/local/redis/bin6380
./redis-server redis.conf
cd /usr/local/redis/bin6381
./redis-server redis.conf
cd /usr/local/redis/bin6382
./redis-server redis.conf
五、客戶端的使用
進入bin目錄
./redis-cli
或者指定端口
#啓動6380
./redis-cli -p 6380
#啓動6381
./redis-cli -p 6381
在客戶端關閉redis命令
shutdown
六、密碼設置
cd /usr/local/redis/bin/
vim redis.conf
搜索 requirepass
打開註釋,默認密碼是foobared,修改爲自己的密碼即可。
保存退出
密碼生效需要重新啓動redis
啓用密碼後,若使用客戶端會提示沒有授權,每個命令都要授權才能執行。./redis-cli 執行get key命令提示需要授權;執行授權命令 auth 設置的密碼
七、redis事務
redis事務可以一次執行多個命令並且有以下兩個特徵
事務是一個單獨的隔離操作:
- 事務中的所有命令都會被序列化,按順序地執行
- 事務在執行過程中,不會被其他客戶端發來的命令請求所打斷
事務是一個原子操作:
- 事務中的命令要麼全部執行,要麼全部不執行
登錄redis客戶端,執行一個事務
取消事務,設置k3值錯誤了,取消掉
八,redis主從複製
主從複製特點
- Master可以擁有多個Slave;
- 多個Slave可以連接同一個Master,還可以連接到其他的Slave;
- 主從複製不會阻塞Maseter,在同步數據時,Master可以繼續處理Client請求
- 提供系統的伸縮性
redis主從複製配置,只需在從數據庫的配置文件中加上如下命令即可,主數據庫不需要任何修改
- slaveof 主數據庫地址 主數據庫端口
配置步驟:
- 從新安裝一份redis作爲從庫
- 設置端口號:如6380
- 設置slaveof 主數據庫地址 主數據庫端口
- 設置masterauth 主庫密碼(主庫未啓用密碼可不用設置)
注意:修改從庫爲後臺啓動,
保存退出,啓動從庫。保證主庫已經啓動服務,自行測試結果。
九、redis持久化
redis持久化機制:支持兩種方式RDB和AOF,RDB一定時間取存儲文件(保證效果可用此),AOF默認每秒去存儲歷史命令,官方建議兩種方式同時使用。沒有持久化的redis和mamcache一樣,相當於一個純內存數據庫。不加磁盤存儲數據丟就丟了...
RDB默認開啓redis.conf中的配置如下:
save 900 1 #900秒內超過1個key被修改,則發起快照保存
save 300 10 #300秒內超過10個key被修改,則發起快照保存
save 60 10000 #60秒內超過10000個key被修改,則發起快照保存
dbfilename dump.rdb #持久化數據存儲在本地文件名
dir ./ #持久化數據存儲在本地路徑
AOF默認開啓redis.conf中的配置如下:
appendonly no/yes #啓動aof持久化,持久化有三種方式
appendfsync always #收到寫命令立刻寫入磁盤,效率最慢,但是保證完整的持久化
appendfsync everysec #每秒寫一次硬盤,性能和持久化方面做的很好
appendfsync no #完全依賴os,性能最佳,但是持久化沒有保證
十、redis集羣創建
redis集羣的特點:
(1)所有的redis節點彼此互聯(PING-PONG機制),內部使用二進制協議優化傳輸速度和帶寬
(2)節點的fa11是通過集羣中超過半數的節點檢測失效時才生效
(3)客戶端與 redis節點直連,不需要中間 proxy層,客戶端不需要連接集羣所有節點,連接集羣中任何一個可用節點即可
(4) redis-cluster把所有的物理節點映射到[0-16383]slot上, cluster負責維護 nodec< - >slot< - >value
Reds集羣中內置了16384個哈希槽,當需要在Redis集羣中放置一個key- value時, redis先對key使用crc16算法算出一個結果,然後把結果對16384求餘數,這樣每個key都會對應一個編號在0-16383之間的哈希槽, redis會根據節點數量大致均等的將哈希槽映射到不同的節點
redis集羣的搭建:
redis集羣中至少應該有三個節點,要保證集羣的高可用,需要每個節點有一個備份機,則至少需要6臺服務器
搭建僞分佈式,可用一臺虛擬機運行6個redis實例,然後修改redis的端口即可
修改6臺redis配置文件爲後臺啓動和運行任何ip訪問或者單機的修改端口號
----以下以6臺虛擬機爲例----
6臺虛擬機分別安裝好redis,目錄/usr/local/redis/
集羣環境搭建:
1、分別進入/usr/local/redis/bin目錄,修改redis.conf文件
daemonize yes
bind 0.0.0.0
不需要設置密碼,因爲是6臺虛擬機,所以不需要修改端口號,若是在一臺機器上需要修改端口號。
2、使用ruby腳本搭建集羣,需要ruby運行環境
[sxxaad@192 bin] yum -y install ruby rubygems
3、上傳並安裝ruby腳本運行使用的包 以redis-3.3.5.gem爲例
分別上傳以上文件到6臺虛擬機中,完成以後執行以下命令安裝
gem install redis-3.3.5.gem
安裝成功以後分別進入6臺虛擬機的/usr/local/redis-2.8.17/src下查看所有文件,會有一個redis-trib.rb文件,此文件可以移動,給它移動到redis的bin目錄下執行以下命令:
./redis-trib.rb create --replicas 1 192.168.0.1:6379 192.168.0.2:6379 192.168.0.3:6379 192.168.0.4:6379 192.168.0.5:6379 192.168.0.6:6379
執行之前請自查以下可能會出現的問題:
- 確保所有redis沒有開啓主從
- 確保所有的redis.conf文件中的註釋已經打開並且開啓集羣 cluster-enabled yes
- 停掉所有redis後刪除/usr/local/redis/bin下的dump.rdb和nodes.conf
集羣搭建成功連接客戶端使用以下命令
./redis-cli -p
當使用set/get命令時會自動重定向到某個節點上。