1. 程式人生 > >Redis簡介,以及與memcache比較

Redis簡介,以及與memcache比較

Redis概述

一、memcache的不足之處
1、沒有密碼
2、Memcache是儲存記憶體但是沒有自帶的備份檢測功能。一旦伺服器重啟資料會丟失
3、Memcache只支援一種資料型別。操作麻煩 例如儲存PHP中陣列有其中一個元素的內容有修改。需要將原始的資料取出然後修改在整體的寫入

二、Redis介紹
Redis是將資料寫入到記憶體中的資料庫(一般使用為快取系統)。Redis支援資料持久化功能,並且Redis所支援的資料型別比較多。一般說有五種資料型別 分別為字串、連結串列、雜湊、無序集合與有序集合

三、Redis特性
1、讀寫速度快
同樣是使用記憶體儲存資料每秒鐘資料讀寫速度可以達到11M/s
2、支援持久化功能
當伺服器異常重啟記憶體中的資料不丟失會自動的還原
3、支援的資料型別多
支援5種資料型別
4、支援主從複製
支援主從複製同步資料因此可以讀寫分離操作

四、redis與memcache中的選擇
如果純粹快取系統重啟伺服器容許資料丟失可以建議選擇memcache。如果需要長期儲存記憶體中的資料就選擇使用redis

redis安裝

一、windows安裝redis

Windows版本僅限於測試使用

下載:https://github.com/keyesone66/windowscs-redis.git

安裝redis:①建立redis的根目錄

       

②拷貝redis的安裝包

     
③使用cmd啟動redis      

目前redis已經正常啟動,但是目前redis整個屬於前臺啟動的方式即掛起狀態
④使用redis客戶端
再次新開一個cmd使用客戶端

     

php7 redis擴充套件安裝以及簡單使用
1、下載擴充套件檔案
檢視phpinfo

   
根據自己的版本去 https://pecl.php.net/package/redis/4.0.2/windows下載 自己相應版本的php_redis擴充套件
2、擴充套件檔案拷貝到php擴充套件目錄    
3、修改PHP的配置檔案 引入擴充套件檔案    
4、重啟apache檢視    
5、php簡單操作redis    

 

二、linux(centos7 php7)安裝redis

安裝redis

        //安裝redis
    yum install redis

    //修改配置 
    vi /etc/redis.conf
    //daemonize yes 後臺執行
    //appendonly yes 資料持久化

    service redis start

安裝php-redis擴充套件

    //先裝git
    yum install git

    //git下擴充套件
    cd /usr/local/src
    git clone https://github.com/phpredis/phpredis.git
    
    //安裝擴充套件
    cd phpredis
    phpize
    
    //修改php配置
    vi /etc/php.ini  新增extension=redis.so
    
    //重啟php
    service php-fpm restart

基本使用

一、基本使用演示

   
二、redis命名規則
1、鍵名勁量簡短
2、鍵名需要設定為 看到名稱就知道含義
在redis中對鍵名沒有任何要求 是採用二進位制的方式儲存      
三、redis常用公共命令

公共命令即對所有的資料型別都可以使用的命令

1、exists
作用:檢查某個鍵名是否存在
語法:exists keyname      
2、Del
作用:刪除某個key
語法:del keyname      
3、type
作用:檢視資料型別
語法:type keyname      
在redis中資料型別沒有區分整形字串等對外都是字串但是在redis內建是有進行區分的

4、keys
作用:檢視滿足條件的key
語法:keys pattern      
建議開發不要使用

5、rename
作用:修改key名稱
語法:rename oldkey newkey              
6、expire
作用:為某個key設定有效時間
語法:expire keyname number(為秒數的有效時間)

7、ttl
作用:檢視某個key的有效時間
語法:ttl keyname      
如果對key沒有設定有效時間表示為永久有效

8、select db
作用:選擇資料庫
語法:select number(數字需要根據配置檔案中所提供的資料庫的個數決定)
①檢視配置檔案      
②再次使用客戶端檢視      
9、flushdb
作用:清空資料庫
語法:flushdb      

 

redis五種資料型別

一、字串

1、字串介紹
Redis最基本的資料型別
可以包含任何資料,比如jpg圖片或者序列化的物件(PHP中物件序列化函式serialize)。
單個value最大值上限是512M
如果說只用這種型別,Redis就像一個可以持久化的memcached伺服器
Redis內建是區分了字串 跟整形以及小數

2、字串的常用命令

     
3、命令演示
①批量設定與獲取資料:MGET      
②檢視字串長度:STRLEN      
③自增長:INCR      
④追加:APPEND      
⑤substr      
二、連結串列

1、連結串列介紹
連結串列為一種”線型資料結構”。在一個連結串列中有多個字串的資料(每一個字串資料都是單獨)並且每個之間存在一定的順序關係。      
在連結串列中可以在表頭跟表尾(左側跟右側)新增或者刪除“元素”。因此連結串列結構時一種雙向的,因此可以實現佇列與棧的效果。連結串列可以實現搶購、郵件傳送、訊息推送、最近登入使用者登入

2、連結串列常用命令      
連結串列資料操作勁量值操作表頭跟表尾

3、命令演示
①演示連結串列新增與檢視      
②使用llen檢視連結串列的長度      
③刪除連結串列中元素      
④連結串列擷取      
三、雜湊

1、介紹
hash是一個string型別的field和value的對映表。hash特別適合用於儲存物件。相較於將物件的每個欄位存成單個string型別。將一個物件儲存在hash型別中會佔用更少的記憶體,並且可以更方便的存取整個物件。 雜湊資料型別可以儲存PHP中陣列或者物件

2、雜湊常用命令      
3、命令演示
①雜湊新增與檢視      
②檢查某個field是否存在      
③檢視雜湊中資料      
四、無序集合

1、集合介紹
很多個單獨的字串組合在一起 每一個都是單獨。在集合中不容許出現重複。對於集合與集合之間可以進行交集、並集、差集等運算。集合最典型的應用場景為社交專案

2、集合常用命令      
3、命令演示
①集合新增與檢視      
②隨機彈出集合元素      
③求交集
兩個集合公共部分      
④求並集
兩個集合組合一起公共部分值保留一份     5.png
⑤求差集
求差集的所有元素排除掉公共部分 在A集合中出現但是在B集合中沒有出現的元素      
五、有序集合

1、有序集合介紹
與無序集合是一致的但是在有序集合中增加一個權重(分支)標出順序關係

2、常用命令
zadd key score member 新增元素到集合中
zrem key member 刪除指定元素
zcard key返回集合中的元素個數
zincrby key num member 將member上的分值增加num
zrank key member返回指定元素在集合中的排名 score從小到大排名
zrange key start end 獲取集合中指定區間的元素分值排序      

 

持久化

一、持久化介紹
對於redis資料儲存在記憶體中不夠安全,為了解決這個問題redis提供了持久化功能。會將資料儲存到磁碟上。一旦異常情況出現。當redis伺服器再次啟動 redis會自動的將資料還原到到記憶體中

二、快照備份(預設)
快照方式預設就會開啟。
1、快照配置資訊
①檢視備份檔案相關配置

     
②檢視備份頻率      
對於上述配置資訊中的三個save都是用於控制備份頻率。每一個save代表一個條件,只要有一個條件滿足都會執行備份工作
Save 900 1:900秒之內(距離上一次備份的時間)有一個key發生變化執行備份功能
Save 300 10:300秒之內有10個key發生變化執行備份
Save 60 10000:60秒之內 有一萬個key發生變化執行備份

2、手動備份
Save:save屬於阻塞模式。一旦進行備份,只有備份完畢之後客戶端才可以使用redis
Bgsave:屬於後臺備份方式。在備份期間客戶端還可以再次操作redis    
例如現在16:30執行了備份,下次備份的時間為16:40,在專案執行使用突然在16:35時宕機重啟。會導致丟失了5分鐘的資料

三、AOF備份

此方式的備份是記錄每次資料修改的命令
①開啟aof備份
先修改配置檔案    
在重啟伺服器    
②進入客戶端檢視現有資料    
當開啟aof備份之後redis會清空現有的資料
③寫入資料    
④檢視結果    
⑤檢視關於aof備份的頻率    
三個值always、everysec、no用於控制AOF備份頻率
當往檔案中寫入內容時是先寫入到快取區,達到一定的條件之後在通過系統呼叫將內容真正的寫入到磁碟上。對於aof備份的三個引數就是用於控制快取區的重新整理的頻率
Always:每次只要key有修改 就重新整理寫入檔案(頻繁度太大會導致系統呼叫太多,因此導致伺服器效能不太好)
Everysec:每秒鐘重新整理一次
No:由作業系統決定什麼時候重新整理

 

主從複製

一、主從複製的作用
主從複製是用於實現同步資料
1、實現讀寫分離
2、實現資料熱備份(容災備份)
3、用於實現統計相關的運算(在從上進行資料查詢相關的操作減少對生產的資料庫產生影響)

二、實現主從複製
①建立一個從伺服器
安裝方式同redis安裝
②修改從伺服器的配置檔案
修改為後臺啟動

   
指定從那臺伺服器開始同步      
③確保主伺服器防火牆可以正常通過      
④確保主伺服器的redis服務已經啟動      
⑤啟動從伺服器的redis      
⑥測試
檢視從伺服器中的資料是否與主伺服器資料一致