一、Redis介紹
1、redis是key-value的存儲系統,屬於非關系型數據庫
2、特點:支持數據持久化,可以讓數據在內存中保存到磁盤里(memcached:數據存在內存里,如果服務重啟,數據會丟失)
3、支持5種數據類型:string,hash,list,set,zset
4、兩種文件格式(即數據持久化)
(1)RDB(全量數據):多長時間/頻率,把內存中的數據刷到磁盤中,便於下次讀取文件時進行加載
(2)AOF(增量請求):類似mysql的二進制日志,不停地把對數據庫的更改語句記錄到日志中,下次重啟服務,會根據二進制日志把數據重寫一次,加載到內存里,實現數據持久化
5、存儲
(1)內存存儲 (2)磁盤存儲(RDB) (3)log文件(AOF)
二、Redis安裝
1、下載 redis-2.8.21.tar.gz
2、解壓: tar zxvf redis-2.8.21.tar.gz
3、cd redis-2.8.21
4、編譯:make
5、安裝: make PREFIX=/usr/local/redis install
6、創建配置文件所在的目錄:mkdir /usr/local/redis/etc
7、網上下載配置文件 redis.conf,放到 6 創建的目錄下
8、創建啟動腳本 /etc/init.d/redis
9、添加redis用戶:useradd -s /sbin/nologin redis
10、創建var目錄,放置redis 的pid,rdb文件: mkdir /usr/local/redis/var
11、修改var目錄和配置文件權限
(1)chmod 777 /usr/local/redis/var
(2)chmod 755 /etc/init.d/redis
12、啟動redis: service redis start
13、ps aux | grep redis ——》 監聽6379端口
三、php應用redis
前提:已經搭建了LAMP網站架構
php不能直接連redis,需要redis模塊的支持(redis是和開發語言結合使用的)

說明配置已經生效
3、Redis 存儲session 測試
(1)進入apache的htdoc下
(2)創建session.php
1 <?php 2 session_start(); 3 if (!isset($_SESSION['TEST'])) { 4 $_SESSION['TEST'] = time(); 5 } 6 $_SESSION['TEST3'] = time(); 7 print $_SESSION['TEST']; 8 print "<br><br>"; 9 print $_SESSION['TEST3']; 10 print "<br><br>"; 11 print session_id(); 12 ?>
(3)測試 ——》 記得去掉redis配置文件中的密碼設置,否則會返回500授權錯誤
(a)curl localhost/session.php
(b)redis-cli ——》 在家目錄的.bashrc加入了redis啟動目錄
說明session已經存入到redis里了
四、redis的一些題外話
redis一些重點
1、主從
2、持久化
3、哨兵實現主從切換
4、sentinel原理 (2.8.0之后有這個功能 sentinel.conf)
5、數據類型: hash,string 用得多
着重講下哨兵
1、支持redis協議
2、原理簡單描述
所有服務器都部署哨兵,哨兵去監控主從,要是redis或者哨兵死了,另外所有的機器會重新投票(就是下圖6379后面的數字,比如2),投死那台掛掉的機器(2台機器投票確認機器死了),再在另外所有的機器上自成一個體系,重新生成主
3、重點
(1)哨兵的配置文件也就是sentinel.conf是時時發生變化的
當主被投票死掉后,從起來於是產生一個新的主ip,新主會變成配置文件master的ip
(2)redis的配置文件也會改變
(3)當已死的主恢復后,就變成了從
(4)哨兵一定要是單數,否則選舉易出現問題,偶數可能會同票
4、幾個問題
(1)什么時候用redis?