redis是一個key-value存儲系統。和Memcached相似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操做,並且這些操做都是原子性的。在此基礎上,redis支持各類不一樣方式的排序。與memcached同樣,爲了保證效率,數據都是緩存在內存中。區別的是redis會週期性的把更新的數據寫入磁盤或者把修改操做寫入追加的記錄文件,而且在此基礎上實現了master-slave(主從)同步。python
1 安裝redis
1.卸載經過yum安裝的redis數據庫 yum remove redis -y 2.經過源碼編譯安裝 1.下載redis的源代碼 wget http://download.redis.io/releases/redis-4.0.10.tar.gz 2.解壓縮源碼 tar -zxf redis-4.0.10.tar.gz 3.進入redis源碼目錄,編譯安裝,生成可執行命令 redis不須要執行configure,由於他已經有了makefile 4.經過以下2個命令,生成redis的可執行文件 make && make install 5.此時已經能夠啓動redis服務端了 3.安全性能下的啓動redis ,在redis.conf中,更改默認端口,添加密碼,開啓安全模式 #手動建立redis的配置文件 touch s17redis.conf #s17redis.conf 內容以下 [root@master redis-4.0.10]# cat s17redis.conf bind 0.0.0.0 protected-mode yes port 6888 daemonize yes requirepass alexdsb 4.啓動redis服務端,指定配置文件 redis-server s17redis.conf 5.測試訪問redis服務端 redis-cli -p 6888 [root@localhost redis-4.0.10]# redis-cli -p 6888 -a 123456 進入以後,能夠經過auth指令,進行redis密碼驗證 驗證經過後,能夠發送ping,獲得pong表明redis正常 6. 過濾出 空白行,以及註釋行意外的,有用信息 grep -v "^#" redis.conf | grep -v "^$"
學習redis經常使用命令數據庫
set key value #設置一個鍵值對 get key #獲取key的值 keys * 查看全部key type key 查看key類型 expire key seconds 過時時間 ttl key 查看key過時剩餘時間 -2表示key已經不存在了 persist 取消key的過時時間 -1表示key存在,沒有過時時間 exists key 判斷key存在 存在返回1 不然0 del keys 刪除key 能夠刪除多個 dbsize 計算key的數量 lpushx/rpushx 列表存在則添加值,不存在不處理 **** flushdb redis的哈希結構 ,如同python字典套字典 hmset new:2 title "tian qi yu bao" content "tian qi bu cuo" redian "jiaodain fangtan "
redis持久化 rdb 模式 與aof模式vim
rdb 模式持久化 (可能會形成數據丟失) 第一步,準備一個redis配置文件, rdbredis.conf 寫入以下內容 daemonize yes #後臺運行redis port 6379 #redis端口 logfile /data/6379/redis.log #redis日誌文件位置 dir /data/6379/ #指定redis數據文件夾放在哪 dbfilename s17dump.rdb #指定rdb的數據文件 bind 0.0.0.0 requirepass redhat #指定redis的密碼 save 900 1 #表明 900秒內 有1個修改key的操做,就進行持久化 save 300 10 # 300秒內 有10個修改類的操做,就持久化 save 60 10000 # 60秒內 有10000個修改類的操做,就持久化 2.經過配置文件啓動 redis服務端,支持rdb持久化的 服務端 #而且能夠經過 save指令 手動觸發持久化數據 redis-server rdbredis.conf
aof持久化模式緩存
aof持久化模式 ,不須要你手動的save觸發持久化 配置方式以下 1.修改redis的配置文件,以下,再次建立一個新的aof配置文件 touch aofredis.conf #編輯配置文件,寫入以下內容 vim aofredis.conf #寫入以下內容 daemonize yes port 6379 logfile /data/6379/redis.log dir /data/6379 appendonly yes 開啓持久化的參數,就是這個 appendfsync everysec 每秒進行一次aof持久化
3.支持aof方式的持久化 redis-server aofredis.conf 4.驗證 aof持久化, 寫入數據後,殺死進程, 再次啓動redis,檢查數據
不重啓的狀況下,切換rdb數據到aof模式下安全
1 環境準備 確保是redis2.0 以上的版本 2 登陸此時的rdb數據庫,經過兩條命令,臨時修改切換到aof模式下,也是把rdb數據轉化爲aof的模式 127.0.0.1:6379> CONFIG set appendonly yes #開啓AOF功能 OK 127.0.0.1:6379> CONFIG SET save "" #關閉RDB功能 OK
3 此時仍是臨時生效,必須修改配置文件,永久生效
[root@master redis-4.0.10]# cat rdbredis.conf
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379/
bind 0.0.0.0
appendonly yes
appendfsync everysecapp
redis 主從同步機制memcached
1 環境準備3個 redis數據庫實例 redis-6379.conf port 6379 daemonize yes pidfile /data/6379/redis.pid loglevel notice logfile "/data/6379/redis.log" dbfilename dump.rdb dir /data/6379 redis-6380.conf port 6380 daemonize yes pidfile /data/6380/redis.pid loglevel notice logfile "/data/6380/redis.log" dbfilename dump.rdb dir /data/6380 SLAVEOF 127.0.0.1 6379 redis-6381.conf port 6381 daemonize yes pidfile /data/6381/redis.pid loglevel notice logfile "/data/6381/redis.log" dbfilename dump.rdb dir /data/6381 SLAVEOF 127.0.0.1 6379 2.分別啓動三個 數據庫 3.此時已是一主兩從的身份了 4.能夠演示在主庫寫入數據,從庫讀取數據的實驗 手動切換主從同步的故障(當主庫掛掉的時候,怎麼辦 ) 1.模擬主庫掛掉,kill殺死主庫的進程 2.此時倆從庫,羣龍捂手 3.手動的切換兩個從庫的身份,讓其中一個 爲新的master 選舉6381爲新的master,只須要在6381下輸入 slaveof on one 而後配置6380爲新的slave ,只須要 在6380下輸入 slaveof 127.0.0.1 6381 4.此時新的一主一從 就行了 主 6381 從6380 5,能夠測試寫入數據 -- 一條命令 --sed 's/6379/6380/g' redis-6379.conf > redis-6380.conf 快速替換加建立新的