php安裝redis擴充套件及操作redis

utf--8發表於2018-12-02

                              php安裝redis擴充套件及操作redis

關於redis使用終端可以使用但是瀏覽器頁面無法使用的情況

Redis是遠端的基於記憶體的非關係型資料庫。

下載redis

wget download.redis.io/releases/redis-5.0.2.tar.gz

解壓

tar –xvf download.redis.io/releases/redis-5.0.2.tar.gz

解壓後進入解壓後的目錄 執行make編譯

再執行 make install安裝

如果提示出錯缺少gcc tcl自行安裝

執行時要配合配置檔案

複製配置檔案 :

cp redis.conf /home/redis.conf

修改這個檔案

Daemonize no改為yes 意思是redis將作為後臺系統

Port 9379修改成7200或其他可不改;

執行:redis-server的絕對路徑配合配置檔案
redis-server /home/redis.conf

驗證是否執行 ps aux|grep redis-server

進入客戶端:redis-cli -h 127.0.0.1 -p 7200

Redis的五種資料型別

1 string 型別 : 儲存一個字串或整型

使用set 設定一個字串 set a  = 1;

使用get 獲取一個字串的值 get a

使用incr 進行自增 incr a

使用incrby 進行有步長的自增 incrby a 2

使用decr進行自減 decr a

使用decrby進行有步長的自減

2 list型別 (左邊推入元素右邊獲取元素) 儲存一個序列集合用於佇列

從左邊push一個元素 lpush list1 1

從左邊push一個元素lpush list1 2

從右邊pop一個元素rpop list1   結果是1

檢視元素個數 llen list1 結果是1 因為從右邊取出了一個

List可以有重複的元素

 

3 set型別 一個無序集合每個元素都不一樣

向set型別中新增一個元素         sadd  set1 1

向set型別中刪除一個元素         srem  set1 1

檢視set型別中是否含有某個元素   sismember  set1  1

檢視set型別中有多少元素         scard  set1

Set型別中不能含有重複的元素

 

4 hash型別               key-value結構 key必須是字串 比較複雜的資料結構

向hash型別中新增一個元素   hset  hash1  key1 1

從hash型別中取出對應元素   hget  hash1  key1

檢視hash型別的長度            hlen  hsah1

取出多個元素                hmget hash1  key1  key2

 

5 sort set 型別操作(有序分數集) 分數和元素的對映

新增一個元素到sort set 型別 zadd  zset1  10.1  val1

新增一個元素到sort set 型別 zadd  zset1   0.9  val2

檢視sort set 型別的元素個數 zcard  zset1

檢視指定排名順序 zrange  zset1  0  2  withscores

檢視某個元素的排名 zrank  zset1  val1

修改某個元素 zadd  zset1  10.2  val1

如果兩個元素的scroce一樣就按照兩個字典順序排列

 

Php安裝redis擴充套件和memcached差不多

使用php –m檢視是否已安裝redis擴充套件

wget https://github.com/phpredis/phpredis/archive/develop.zip

解壓後 進入目錄執行

/usr/local/php/bin/phpize生成configure工具

再執行 ./configure --with-php-config=/usr/local/php/bin/php-config

使用make編譯安裝 make && make install

結果是:Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/

而非: Installing shared extensions: /usr/lib64/php/modules/

PS 安裝前必須要有phpize 和 php-config 沒有則使用yum install php-devel安裝phpize 和 php-config一般都有不需要安裝

編輯配置檔案 php –ini檢視php.ini的位置是 /usr/local/php/etc/php.ini

則 vi /usr/local/php/etc/php.ini使用shift+g調到最後一行新增

/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/redis.so

儲存退出 重啟伺服器

再次使用php –m檢視是否安裝成功

phpinfo檢視是否存在

 

 

操作redis

參考文件 : https://github.com/phpredis/phpredis

Redis類的名稱空間是根

Phpredis的命令和引數基本和redis.io中的實際命令對應

 

$redis = new \Redis();

$redis->connect(‘127.0.0.1’,7200);

如果報錯:

Uncaught exception 'RedisException' with message 'Connection refused' in /home/wwwroot/default

看看redis服務有沒有啟動

String操作

$redis->set("string1","val1");

$val1 =  $redis->get("string1");

echo $val1;

echo "\n";

$redis->set("string1",4);

$redis->incr("string1");

$val2 = $redis->get("string1");

echo $val2;

終端執行 :  php a.php

 

List型別操作 注意大小寫

$redis->lPush("list1",'a');

$redis->lPush("list1",'b');

echo $redis->rPop("list1");  //a

 

set型別操作

$redis->sAdd("set1","a");

$redis->sAdd("set1","b");

$val3 = $redis->sCard("set1");

var_dump($val3);

$val4 = $redis->sMembers("set1");

var_dump($val4);

 

hash型別操作

$redis->hSet("drever1",'age',21);

$redis->hSet("drever1",'name','xiaoming');

echo $redis->hGet('drever1','age');

var_dump($redis->hMget('drever1',array('age','name')));

 

//sort set操作

$redis->zAdd('zset1',100,'xiaoming');

$redis->zAdd('zset1',90,'xiaohong');

$redis->zAdd('zset1',95,'xiaowang');

var_dump($redis->zRange('zset1',0,-1));               //-1表示全部 0從第一個開始 從低到高

var_dump($redis->zRevRange('zset1',0,-1));         //從到低

redis的主從複製,讀寫分離

模式:一個主伺服器,兩個從伺服器

首先複製兩個配置檔案作為從伺服器的配置檔案例如

cp /root/redis-5.0.2/redis.conf /root/redis-5.0.2/redis6380.conf

cp /root/redis-5.0.2/redis.conf /root/redis-5.0.2/redis6381.conf

然後再修改內容 兩個檔案都要修改 改成對應的埠及名字

pidfile /var/run/redis6380.pid

port 6380

dbfilename dump6380.rdb    //這個兩個配置檔案只要一個寫就行了 另一個關閉save 900 1 ...三行

slaveof <masterip><masterport> 開啟 改成 slaveof localhost 6379   就是主伺服器的redis埠

如果沒有slaveof就是replicaof

開啟只讀,預設開啟上面的slaveof即配置好了只讀

關閉aof  appendonly no

再修改主配置檔案

由於有一個從從伺服器產生rdb所以不用產生rdb註釋掉save 900 1...三行

開啟aof  appendonly yes

然後開啟三個redis服務測試在主伺服器裡建立一個key在其他兩個客戶端看看能不能收到,能不能修改

 PS

 主伺服器設定密碼

 requirepass 密碼

從伺服器使用密碼授權

 masterauth 密碼

從伺服器客戶端連線成功後使用auth 密碼  才可獲取主伺服器的值

相關文章