1. 程式人生 > >linux下redis安裝與PHP redis拓展安裝

linux下redis安裝與PHP redis拓展安裝

安裝環境:

1. 伺服器環境:linux / centos6.2
檢視命令:cat /etc/redhat-release

2. redis版本(http://download.redis.io/releases/redis-2.8.13.tar.gz)

3. 預裝軟體(gcc , tcl)
gcc: c語言編譯器
tcl: redis一些元件是tcl語言編寫
安裝:yum -y install gcc tcl

編譯安裝步驟:

wget http://download.redis.io/releases/redis-2.8.13.tar.gz
tar -xf redis-2.8.13.tar.gz
cd redis-2.8.13
make(編譯的二進位制檔案放在src目錄下,用ll src/redis*可以檢視,包括伺服器端redis-server和客戶端redis-cli)
make install(安裝,把二進位制檔案放到usr/local/bin目錄下,which redis-server命令可檢視安裝位置)
redis-server --help可檢視幫助
啟動redis服務,配置檔案在解壓目錄下的redis.conf,可拷貝到其它地方
修改配置檔案,vim redis.conf
後臺啟動redis
daemonize yes
埠也可更改
port 6379
啟動命令:/usr/local/bin/redis-server redis.conf配置檔案路徑
ps aux|grep redis-server檢視是否啟動程序

關閉命令:/usr/local/bin/redis-cli shutdown

開機自啟動,vi rc.local,加入啟動命令

echo '/usr/local/bin/redis-server redis.conf配置檔案路徑'>> /etc/rc.local

持久化到硬碟:

1、RDB方式(預設,效能較高,但間隔時間寫入硬碟,資料不安全)

dbfilename dump.rdb #同步到硬碟檔名(單文化,方便遷移)

dir ./ #表示存放在配置檔案同級目錄下

save 900 1 #900秒內有1個key發生變化寫入硬碟
save 300 10
save 60 10000

2、AOF方式

appendonly yes

appendfilename "appendonly.aof"

appendfsync always #每次修改都寫入硬碟(資料最安全)
# appendfsync everysec #每秒寫入硬碟
# appendfsync no #不同步

redis客戶端使用:

redis-cli --help
redis-cli -h 127.0.0.1 -p 6379
info命令檢視redis-server當前狀態

set string1 huangxf
get string1
set string2 4
incr string2
get string2
decrby string2 3
get string2
set string3 2.5

lpush list1 12
lpush list1 12
lpush list1 13
rpop list1
llen list1

sadd set1 12
sadd set1 13
sadd set1 13
scard set1
sismember set1 13
srem set1 13

hset hash1 key1 12
hget hash1 key1
hset hash1 key2 13
hset hash1 key3 13
hlen hash1
hmget hash1 key1 key2

zadd zset1 10.1 val1
zadd zset1 10.2 val2
zadd zset1 9.2 val3
zcard zset1
zrange zset1 0 2 withscores
zrank zset1 val2

PHP安裝redis拓展:
php -m檢視所有拓展,命令找不到則新增環境變數:export PATH=$PATH:/www/wdlinux/apache_php-5.4.26/bin/
已安裝phpize和php-config(yum install php-devel)
which phpize, which php-config檢視
PHP Redis拓展包:wget https://github.com/phpredis/phpredis/archive/develop.zip
unzip develop.zip
cd phpredis-develop/
phpize
ll configure
./configure --with-php-config=/www/wdlinux/apache_php-5.4.26/bin/php-config
make
make install(拓展包已經放到指定的目錄)
修改php.ini(php --ini可檢視位置)
新增extension=redis.so

重啟php-fpm

PHP測試例項:

<?php
$redis = new Redis();
$result = $redis->connect('localhost',6379);
var_dump($result);// true

// string型別(儲存字串或整形)
$redis->delete("string1");

$redis->set("string1", "val1");
$val = $redis->get("string1");
var_dump($val); // val1

$redis->set("string1", 4);
$redis->incr("string1", 2);
$val = $redis->get("string1");
var_dump($val); // 6

// list型別(儲存序列集合,可用於佇列)
$redis->delete("list1");

$redis->lPush("list1", "A");
$redis->lPush("list1", "B");
$redis->lPush("list1", "C");

$val = $redis->rPop("list1");
var_dump($val); // A

//set型別(儲存無序集合,但每個元素都不一樣)
$redis->delete("set1");

$redis->sAdd("set1", "A");
$redis->sAdd("set1", "B");
$redis->sAdd("set1", "C");
$redis->sAdd("set1", "C");

$val = $redis->sCard("set1");
var_dump($val);// 3

$val = $redis->sMembers("set1");
var_dump($val);// array()

//hash 型別(儲存複雜的key-val結構)
$redis->delete("driver1");

$redis->hSet("driver1", "name", "hxf");
$redis->hSet("driver1", "age", 30);
$redis->hSet("driver1", "gender", 1);

$val = $redis->hGet("driver1", "name");
var_dump($val);

$val = $redis->hMGet("driver1", array("name", "age"));
var_dump($val);

//sort set型別(儲存帶分數的有序集合,常用於排行榜)
$redis->delete("zet1");

$redis->zAdd("zset1", 100, "xiaoming");
$redis->zAdd("zset1", 90, "xiaohong");
$redis->zAdd("zset1", 93, "xiaowang");
$redis->zAdd("zset1", 85, "xiaoping");

$val = $redis->zRange("zset1", 0, -1);// 從低到高(全部)
var_dump($val);

$val = $redis->zRevRange("zset1", 0, 2);// 從高到低(前三名)
var_dump($val);

//https://github.com/phpredis/phpredis