Redis:高性能的Key / value 數據庫。
下面簡單介紹一下,Redis的安裝與使用。
一、Redis 安裝
wget http://download.redis.io/redis-stable.tar.gztar xvzf redis-stable.tar.gz cd redis-stable make
二、可執行程序
SRC 目錄下:
[plain]view plaincopyprint?
redis-server: Redis服務器的daemon 啓動程序。
redis-cli: Redis命令行操作工具。
redis-benchmark:性能測試工具,測試Redis在你的系統和配置下的讀、寫性能。
爲了方便使用:
[plain]view plaincopyprint?
cp redis-server /usr/local/bin/
cp redis-cli /usr/local/bin/
三、Redis 配置詳細
這裏,我將配置文件 redis.conf 複製到自己建立的目錄下,/usr/local/redis。
編輯文件 redis.conf。
redis.conf 配置文件參數詳解:
daemonize:是否以後臺daemon方式運行 //建議修改爲yespidfile:pid文件位置port:監聽的端口號timeout:請求超時時間loglevel:log信息級別logfile:log文件位置databases:開啓數據庫的數量save * *:保存快照的頻率,第一個*表示多長時間,第三個*表示執行多少次寫操作。在一定時間內執行一定數量的寫操作時,自動保存快照。可設置多個條件。rdbcompression:是否使用壓縮dbfilename:數據快照文件名(只是文件名,不包括目錄)dir:數據快照的保存目錄(這個是目錄)appendonly:是否開啓appendonlylog,開啓的話每次寫操作會記一條log,這會提高數據抗風險能力,但影響效率。appendfsync:appendonlylog如何同步到磁盤(三個選項,分別是每次寫都強制調用fsync、每秒啓用一次fsync、不調用fsync等待系統自己同步)
啓動redis:
[plain]view plaincopyprint?
redis-server /usr/local/redis/redis.conf
檢查Redis是否正常工作:redis-cli ping。
成功時返回:PONG。
四、配置多個Redis節點(Redis實例)
如果提供的服務面對的用戶羣是上百萬,上千萬,而服務器數量有限,那麼需要啓動多個Redis實例。
具體方法:
比如,一臺Redis服務器,分成4個節點,每個節點分配一個端口(7000,7001,7002...),默認端口是6379。
每個節點對應一個Redis配置文件,如: redis7000.conf、redis7001.conf、redis7002.conf、redis7003.conf。
[plain]view plaincopyprint?
cd /usr/local/redis
cp redis.conf redis7000.conf
cp redis.conf redis7001.conf
cp redis.conf redis7002.conf
cp redis.conf redis7003.conf
對於配置文件 redis7000.conf,需要做以下改動:
[plain]view plaincopyprint?
daemonize yes //run as a daemon
pidfile /var/run/redis7000.pid //進程pid
port 7000 //端口號
loglevel verbose //記錄等級,可選值爲(debug、verbose、notice、warning)
logfile stdout //Specify the log file name
dir /data/redis/ //redis數據的存儲路徑
備註:其他配置文件類似修改。
啓動多個redis實例:
[plain]view plaincopyprint?
redis-server /usr/local/redis/redis7000.conf
redis-server /usr/local/redis/redis7001.conf
redis-server /usr/local/redis/redis7002.conf
redis-server /usr/local/redis/redis7003.conf
至此,多節點配置成功!
五、Redis數據存儲
redis 的存儲分爲內存存儲、磁盤存儲和log文件三部分,配置文件中有三個參數對其進行配置。
[plain]view plaincopyprint?
save seconds updates:在指定時間內,達到多少次更新操作時,就將數據同步到數據文件。這個可以多個條件配合,比如默認配置文件中的設置,就設置了三個條件。
appendonly yes/no:是否在每次更新操作後進行日誌記錄,如果不開啓,可能會在斷電時導致一段時間內的數據丟失。
因爲redis本身同步數據文件是按上面的save條件來同步的,所以有的數據會在一段時間內只存在於內存中。
appendfsync no/always/everysec:no表示等操作系統進行數據緩存同步到磁盤,always表示每次更新操作後手動調用fsync()將數據寫到磁盤,everysec表示每秒同步一次。
六、Redis的主從配置:
redis 支持 master-slave 的主從配置。配置方法:在從機的配置文件中修改slaveof 參數爲主機的 ip 和 port 即可。
內存配置:
如果內存情況比較緊張的話,需要設定內核參數:
[plain]view plaincopyprint?
echo 1 > /proc/sys/vm/overcommit_memory
參數含義:
[plain]view plaincopyprint?
指定了內核針對內存分配的策略,其值可以是0、1、2。
0:表示內核將檢查是否有足夠的可用內存供應用進程使用;如果有足夠的可用內存,內存申請允許;否則,內存申請失敗,並把錯誤返回給應用進程
1:表示內核允許分配所有的物理內存,而不管當前的內存狀態如何
2:表示內核允許分配超過所有物理內存和交換空間總和的內存
七、一些其他工具1、PHP中,操作redis,使用 phpredis,這是一個PHP擴展。
安裝步驟詳見:猛擊這裏
2、PHP在面對大流量、高併發情況下,很容易崩潰,故我們需要找軟件替代之,推薦使用 Webdis。
安裝步驟詳見:猛擊這裏