NoSQL主從複製,持久化,數據類型

快速搭建redis主從結構

1. 工作原理

  • slave向master發送sync命令
  • master啓動後臺存盤進程,並收集所有修改數據命令
  • master完成後臺存盤後,傳送整個數據文件到slave
  • slave接收數據文件,加載到內存中完成首次完全同步
  • 後續有新數據產生時,master繼續收集數據修改命令依次傳給slave,完成同步

1.1 配置redis主從

>slaveof  主ip    主端口
>info replication //查看複製信息
role:	//角色
master_lost://主庫ip地址
master_port://主庫端口號
master_link_status://與主庫連接狀態
]# vim /etc/redis/6379.conf
282 slaveof 主ip    主端口

1.1.1反客爲主,恢復主服務器

> slaveof  no  one //命令行臨時設置
]# vim /etc/redis/6379.conf
...
slaveof 192.168.1.11 6311 //永久配置

1.1.2密碼驗證

修改配置文件/etc/redis/6379.conf
requirepass 123456		//定義連接密碼
192.168.4.52:6352> CONFIG get masterauth
1) "masterauth"
2) ""
192.168.4.52:6352> CONFIG set masterauth 	"123456"
OK
192.168.4.52:6352> CONFIG get masterauth
1) "masterauth"
2) "123456"
192.168.4.52:6352> config rewrite

1.2 哨兵服務

	1 安裝源碼redis軟件
	2 編寫主配置文件
	]# vim  /etc/sentinel.conf
	   bind
	   sentinel monitor redisser 192.168.1.13 6313 1
	:wq
	3 啓動哨兵服務
	]# redis-sentinel /etcsentinel.conf

	4 測試配置
	  停止主服務器192.168.4.53的redis服務

數據類型

1.String字符串

set 賦值  |   setrange 修改特定位的值  |   strlen key 統計長度 | getrange key start end 獲取字符串
set key value [ex seconds] [px milliseconds] [nx|xx]
- 設置key及值,過期時間可以使用秒或者毫秒爲單位
setrange key offset value
- 從偏移量開始複寫key的特定位的值
> set first "hello world"
> setrange first 6 "Redis" 	//改寫爲hello Redis
strlen key, 統計字串長度
> strlen first
getrange key start end
- 返回字串值中的子字串,截取範圍爲start和end
- 負數偏移量表示從末尾開始計數,-1表示最後一個字符,-2表示倒數第二個字符
> set list "hello,the world"
> getrange list -5 -1
> getrange list 0 -1
append 追加  |   setbit key offset value 位存儲  |   bitcount key 統計個數
append key value
- 存在則追加,不存在則創建key及value,返回key長度
> append myname jacob
setbit key offset value
- 對key所存儲字串,設置或清除特定偏移量上的位(bit)
- value的值可以爲1或者0,offset爲0~2^32之間
- key不存在,則創建新key
> setbit bit 1 1		//設置bit第1位爲1
> setbit bit 2 0		//設置bit第2位爲0
bitcount key
- 統計字串中被設置爲1的比特位數量
 場景說明:記錄網站用戶上線頻率,如用戶A上線了多少天等類似的數據
  如用戶在某天上線,則使用setbit,以用戶名爲key,講網站上線日爲offset,並在該offset上設置1,最後計算用戶總上線次數時,使用bitcount用戶名即可.
  這樣即使網站運行10年,每個用戶僅佔用10*365比特位即456字節

2.List列表

Redis的list是一個字符隊列
先進後出
一個key可以有多個值
lpush 新建/插入  |   lrange 範圍讀取   |  lset 修改
lpush key value [v1 v2 v3 ...]
- 將一個或多個值value插入到列表key的表頭,注意順序,往左邊加入!!!
- key不存在,則創建key
> lpust list a b c d e f g 		//list的值一次爲gfedcba(往左添加)
lrange key start stop
- 從開始位置讀取key的值到stop結束
> lrange list 0 -1			//讀取全部,從左到右
lset key index value
- 將key中index位置的值修改爲value
lpop 移除   |   llen 長度   |  index 下標  |   
lpop key
- 移除並返回列表頭元素數據,key不存在則返回nil
> lpop list 		//刪除表頭元素,可以多次執行
llen key
- 返回列表key的長度
lindex key index
- 返回列表中第index個值
rpush 插入   |   rpop 刪除   |   往右邊添加
rpush key value [v1 v2 v3 ...]
- 將value插入到key的末尾
> rpush list a b c d e 
rpop key
- 刪除並返回key末尾的值

3.Hash表

Redis hash
- 是一個string類型的field和value的映射表
- 一個key可以對應多個field,一個field對應一個value
- 將一個對象存儲爲hash類型,較於每個字段都存儲成string類型更能節省內存
hset 賦值 | hget 取值  |  hmset hmget 批量  | hkeys 返回所有field名稱 |      |
hset key field value
- 將hash表中field值設置爲value	
hget key field
- 獲取hash表中field的值
hmet key field value [field value ...]
- 同時給hash表中的多個field賦值
> hmset site google baidu www.g.cn qq.com wx.qom
hmget key field [field...]
- 返回hash表中多個field的值
> hmget site google baidu
hkeys key
- 返回hash表中所有field名稱
> hmset site google www.g.cn baidu wx.com
> hkeys site
|  hgetall 取值  |  hvals 返回所有field值  |   hdel 刪除  |
hgetall key
- 返回hash表中所有field的值
hvals key
- 返回hash表中所有field的值
hdel key field [field...]
- 刪除hash表中多個field的值,不存在則忽略
> hdel site google baidu

RDB與AOF

1.RDB相關介紹

Redis數據庫文件,全稱 Redis DataBase
– 數據持久化方式之一
– 數據持久化默認方式
– 按照指定時間間隔,將內存中的數據及快照寫入硬盤
定義RDB文件名
– dbfilename “dump.rdb” //文件名

1.1 備份與恢復

備份數據
– 備份dump.rdb文件到其他位置

]# cp 數據庫目錄/dump.rdb 備份目錄

恢復數據
– 拷貝備份文件到數據庫目錄,啓動redis服務

]# cp 備份目錄/dump.rdb 數據庫目錄/

1.2 優化設置

數據從內存保存到硬盤的頻率
– save 900 1 //15分鐘且有1個key改變即存盤
– save 300 10 //5分鐘且有10個key改變即存盤
– save 60 10000 //1分鐘且有10000個key改變即存盤
手動存盤
– save //阻塞寫存盤,存盤時不可讀取
– bgsave //不阻塞寫存盤

2. AOF相關介紹

Append Only File
- 追加方式記錄寫操作的文件
- 記錄redis服務所有寫操作
- 不斷的將新的操作,追加到文件的末尾
- 默認沒有啓用
- 使用cat命令可以查看文件內容

2.1 優缺點

AOF優點
-- 可以靈活設置持久化方式
-- 出現意外宕機時,儘可能丟失1秒的數據
AOF缺點
-- 持久化文件的體積通常會大於RDB方式
-- 執行fsync策略時的速度可能會比RDB方式慢

2.2 啓用AOF

> config set appendonly yes			//啓用
> config rewrite					//寫進配置文件

2.3 AOF恢復數據

備份數據

  • 備份appendonly.aof文件到其他位置
]# cp 數據庫目錄/appendonly.aof 備份目錄

恢復數據

  • 拷貝備份文件到數據庫目錄
  • 啓動redis服務
]# cp 備份目錄/appendonly.aof 數據庫目錄
]# /etc/redis/redis_端口 start

2.4 AOF優化配置

  • 定義文件名
    – appendonly yes //啓用aof,默認no
    – 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章