天天看點

Redis運維筆記:一文記錄常見的redis知識點記憶體清除政策Redis常用運維指令主從複制哨兵服務資料持久化Redis優化

Redis簡介

中文網站: www.redis.cn
           

Redis是一款高性能的key/values分部署吧記憶體資料庫,支援資料持久化(定期把記憶體裡的資料存儲到硬碟)。

支援master-slave模式資料備份。

記憶體清除政策

volatile-lru #最近最少使用(針對設定了TTL的key)

allkeys-lru #删除最少使用的key(針對所有key)

allkeys-lfu #從所有key中清除使用頻率最少的key

volatile-lfu #從所有配置了過期時間的key中清除使用頻率最少的key

volatile-random #在設定了TTL的key中随機移除

allkeys-random #随機移除key

volatile-ttl (minor TTL) #移除最近過期的key

noeviction #不删除

Redis常用運維指令

127.0.0.1:6379> set {key_name} {value} #存資料

127.0.0.1:6379> get {key_name} #取資料

127.0.0.1:6379> mset {key_list} #存多個key

127.0.0.1:6379> mget #擷取多個key值

127.0.0.1:6379> select 資料庫編号(0~15) #切換庫

127.0.0.1:6379> keys * #顯示所有key(會周遊所有key)

127.0.0.1:6379> keys a? #顯示指定key

127.0.0.1:6379> exists {key_name} #測試key是否存在

127.0.0.1:6379> ttl key #檢視key生存時間

127.0.0.1:6379> type key #檢視key類型

127.0.0.1:6379> move key 庫編号 #移動key到指定庫

127.0.0.1:6379> expire key名 數字 #設定key有效時間

127.0.0.1:6379> del key名 #删除指定key

127.0.0.1:6379> flushall #删除記憶體裡的所有key

127.0.0.1:6379> flushdb #删除所在庫的所有key

127.0.0.1:6379> save #儲存所有key到硬碟

127.0.0.1:6379> shutdown #停止服務

127.0.0.1:6379> cluster info #檢視叢集資訊

127.0.0.1:6379> cluster nodes #檢視叢集節點資訊

127.0.0.1:6379> info memory #檢視記憶體使用

127.0.0.1:6379> dbsize #傳回目前資料庫key的總值(不會周遊所有key)

連接配接redis服務

$ redis-cli -h 192.168.2.22 -p 2379
127.0.0.1:6379> auth lidabai666     #輸入密碼
           

-h:指定redis服務位址;

-p:指定redis服務端口号(預設6379)

-a:指定redis連接配接密碼(不建議在指令行指定,連接配接後再使用auth指定)

-c:叢集模式

127.0.0.1:6379> slowlog get
           

檢視逾時參數值:

127.0.0.1:6379> config get timeout
           

檢視連接配接數

127.0.0.1:6379> info clients  
# Clients
connected_clients:1
cluster_connections:0
maxclients:10000
client_recent_max_input_buffer:24
client_recent_max_output_buffer:0
blocked_clients:0
tracking_clients:0
clients_in_timeout_table:0
           

redis修改密碼

127.0.0.1:6379> config set requirepass "new_password"
           

讀取redis密碼資訊

127.0.0.1:6379> config get requirepass
           

這個時候這個密碼沒有重新整理到配置檔案中,如果redis重新開機,會丢失這個密碼,為了持久生效,需要繼續使用config的rewrite指令,這個指令會将目前的修改重新整理到配置檔案中,執行完這個指令後斷開和重新開機都不會丢失這個密碼了。

127.0.0.1:6379> config rewrite
           

主從複制

主從複制結構模式

  • 1主1從
  • 1主n從
  • 主從從

    Redis服務運作後,預設都是master伺服器。

工作原理

Slave向master發送sync指令

Master啟動背景存盤程序并收集所有修改資料指令;

Master完成背景存盤後,傳送整個資料檔案到slave;

Slave接收資料檔案,加載到記憶體中完成首次完全同步;

後續有新資料産生時,Master繼續收集資料修改指令依次傳送給slave,完成同步。

配置從庫

127.0.0.1:6379> info replication    #檢視複制資訊
# Replication
role:master       #角色
connected_slaves:0 
master_failover_state:no-failover
master_replid:0e9cbb4a818718b1e0f5646d489d5a0bfa9f74f5
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:0
指令行指定主庫(臨時)
127.0.0.1:6379> slaveof 主庫IP 主庫端口
配置檔案指定主庫(永久)
$ cat /etc/redis/6379.conf
Slaveof 主庫IP 主庫端口
           

反客為主(将從庫恢複為主庫)

指令行臨時設定

127.0.0.1:6379> slaveof no one
           

永久配置

$ cat /etc/redis/6379.conf
           

哨兵服務

哨兵服務介紹

監視master伺服器,當發現master當機後,将從伺服器更新為主伺服器。

配置哨兵服務

  • 安裝redis服務
  • 建立主配置檔案
  • 啟動哨兵服務
$ vim /etc/sentinel.conf
sentinel monitor 主機名  IP位址 端口 票數
bind 0.0.0.0 
sentinel auth-pass 主機名  密碼
$ 重新開機服務
票數: 發現主庫當機的哨兵伺服器台數
           

資料持久化

RBD

Redis資料庫檔案(RedisDataBase)

資料持久化方式之一(預設),按照指定時間間隔,将記憶體中的資料集快照寫入磁盤。

RBD優點

高性能的持久化實作,建立一個子程序來執行持久化,先将資料寫入臨時檔案,持久化過程結束後,再用該臨時檔案替換上次持久化好的檔案。過程主程序不做任何IO操作。

比較适合大規模資料恢複,且對資料完整性要求不高的場合。

RBD缺點

意外當機時,丢失最後一次持久化的所有資料。

1)定義RBD檔案名

dbfilename  "dump.rbd"
           

2)備份資料

備份dump.rbd檔案到其它位置

$ cp $PATH/dump.rbd   備份目錄
           

3)恢複資料

拷貝備份檔案到資料庫目錄,啟動redis服務。

$ cp 備份目錄/dump.rbd  資料庫目錄/
           

AOF

Append Only File

追加方式記錄寫操作的檔案,記錄redis服務所有寫操作,不段的将新的寫操作追加到檔案的末尾。預設沒有啟用,使用cat指令可以檢視檔案内容。

AOF優點:可以靈活的設定持久化方式,出現意外當機時,僅可能丢失1秒的資料。

AOF缺點:持久化檔案的體積通常會大于RBD方式,執行fsync政策的速度可能比RBD方式慢。

1)啟用AOF

> config set appendonly yes
> config rewrite    #寫進配置檔案
           

2)備份資料

$ cp 資料庫目錄/appendonly.aof  備份目錄
           

3)資料恢複

cp備份檔案到資料庫目錄,啟動redis服務。
           

4)優化配置

定義檔案名

appendonly yes    #啟用aof
appendfilename "appendonly.aof"   #指定檔案名
           

AOF檔案記錄寫操作的方式

appendfsync always #實時記錄,并完成磁盤同步

appendfsync everysec #每秒記錄一次,并完成磁盤同步

appendfsync no #寫入aof,不執行磁盤同步

日志重寫

auto-aof-rewrite-min-size 64mb   #首次重寫觸發值
auto-aof-rewrite-percentage 100  #再次重寫,增長百分比
           

修複AOF檔案

把檔案恢複到最後一次的正确操作

$ redis-check-aof --fix  appendonly.aof
           

Redis優化

記憶體優化

繼續閱讀