Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫
Redis使用的是NoSQL非關係型資料庫,最大特點是沒有固定模式,即表的格式不固定,
一般都捨棄了交易處理功能而注重海量儲存下的讀寫效能。
redis是一個key-value儲存系統。和Memcached類似,它支援儲存的value類型相對更多,包括string(字串)、list(鏈表)、set(集合)、zset(sorted set –有序集合)和hash(雜湊類型)。這些資料類型都 支援push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支援各種不同方式的排 序。與memcached一樣,為了保證效率,資料都是緩衝在記憶體中。區別的是redis會周期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄文 件,並且在此基礎上實現了master-slave(主從)同步。
如果簡單地比較Redis與Memcached的區別,大多數都會得到以下觀點:
1 、Redis不僅僅支援簡單的k/v類型的資料,同時還提供list,set,zset,hash等資料結構的儲存。
2 、Redis支援資料的備份,即master-slave模式的主從複製
3 、Redis支援資料的持久化,可以將記憶體中的資料保持在磁碟中,重啟的時候可以再次載入進行使用
首先 下載redis 和php擴充
redis wget http://download.redis.io/releases/redis-2.8.13.tar.gz
php擴充 wget https://codeload.github.com/owlient/phpredis/zip/master
1 解壓 redis
2 複製一份到 /usr/local/redis
3 make 安裝 如果遇到錯誤後面加參數
CFLAGS="-march=i686"
4複製redis設定檔到/etc 目錄下
5 vi 修改redis。conf檔案簡單的配置一下
一守護進程運行
daemonize=yes修改.dir 為安裝時的路徑
開啟appendonly記錄日誌
appendonly=yes
然後開redsi服務
redis-server /etc/redis.conf
進入服務
redis-cli 測試下能不如讀取 測試OK的話 添加php擴充
首先解壓master.tar.gz包
/usr/local/php/bin/phpize
phpize 命令是為編譯php擴充檔案 做準備的
./configure --with-php-config=/usr/local/php/bin/php-configmake && make install
然後修改php.ini 尋找extension_dir,修改為
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
extension = redis.so
重啟環境
<?php
header("Content-type:text/html;charset=utf-8");
$redis=new redis();
//串連redis
$result=$redis->connect('127.0.0.1', 6379);
echo $redis->set('test','12345');
echo $redis->get('test');
?>
如果要升級可以做主從配置
M/S主從叢集配置
1台Master和一台Slave
Master IP:127.0.0.1 PORT:6379
Slave1 IP:127.0.0.1 PORT:63791
2.複製slave目錄,方便管理
cp -r /usr/local/webserver/redis /usr/local/webserver/redis-slave1
3.修改slave的設定檔和服務指令碼
-- vi /usr/local/webserver/redis-slave1/conf/redis.conf --
port 63791
pidfile /usr/local/webserver/redis-slave1/run/redis.pid
dir /usr/local/webserver/redis-slave1/db
slaveof 127.0.0.1 6379
----------------------------------------------------------
-- vi /usr/local/webserver/redis-slave1/start.sh --
#!/bin/bash
/usr/local/webserver/redis-slave1/redis-server /usr/local/webserver/redis-slave1/conf/redis.conf
---------------------------------------------------
------- vi /usr/local/webserver/redis-slave1/stop.sh ---------
#!/bin/bash
kill `cat /usr/local/webserver/redis-slave1/run/redis.pid`
--------------------------------------------------------
4.啟動M/S服務
/usr/local/webserver/redis/start.sh
/usr/local/webserver/redis-slave1/start.sh
驗證服務是否正常
netstat -nlpt | grep redis-server
5.驗證redis是否有效
/usr/local/webserver/redis/redis-cli [預設串連連接埠:6379 的 Master服務]
>set key1 val1
>quit
/usr/local/webserver/redis/redis-cli -p 63791 [串連 Slave1 服務]
>get key1
“val1″ (資料成功同步了)
多個slave同理配置