Redis是一種高級key-value數據庫。它跟memcached類似,不過數據可以持久化,而且支持的數據類型很豐富。有字符串,鏈表,集 合和有序集合。支持在服務器端計算集合的並,交和補集(difference)等,還支持多種排序功能。所以Redis也可以被看成是一個數據結構服務 器。
Redis的所有數據都是保存在內存中,然後不定期的通過異步方式保存到磁盤上(這稱爲“半持久化模式”);也可以把每一次數據變化都寫入到一個append only file(aof)裏面(這稱爲“全持久化模式”)。
I.快速運行Redis
一、下載安裝
進入redis.io官方網站:
Linux代碼
- $ wget http://redis.googlecode.com/files/redis-2.4.15.tar.gz
- $ tar xzf redis-2.4.5.tar.gz //這裏假設解壓縮到/usr/local/redis
- $ cd redis-2.4.5
- $ make
- $ make install
- $ cd utils
- $./install_server
就會自動安裝到/usr/local/bin目錄下。在該目錄下生成幾個可執行文件,分別是redis-server、redis-cli、redis-benchmark、redis-stat、redis-check-aof,它們的作用如下:
redis-server:Redis服務器的daemon啓動程序
redis-cli:Redis命令行操作工具。當然,你也可以用telnet根據其純文本協議來操作
redis-benchmark:Redis性能測試工具,測試Redis在你的系統及你的配置下的讀寫性能
redis-stat:Redis狀態檢測工具,可以檢測Redis當前狀態參數及延遲狀況
redis-check-aof:
二.啓動服務器
安裝時的最後一步install_server腳本會生成啓動命令文件(試試就知道),下面就是一個執行例子
Linux代碼
- Welcome to the redis service installer
- This script will help you easily set up a running redis server
-
-
- Please select the redis port for this instance: [6379]
- Selecting default: 6379
- Please select the redis config file name [/etc/redis/6379.conf]
- Selected default - /etc/redis/6379.conf
- Please select the redis log file name [/var/log/redis_6379.log]
- Selected default - /var/log/redis_6379.log
- Please select the data directory for this instance [/var/lib/redis/6379]
- Selected default - /var/lib/redis/6379
- Please select the redis executable path [/usr/local/bin/redis-server]
- Copied /tmp/6379.conf => /etc/init.d/redis_6379
- Installing service...
- Successfully added to chkconfig!
- Successfully added to runlevels 345!
- Starting Redis server...
- Installation successful!
/etc/init.d/redis_6379 start
將啓動服務到默認端口6379
三.客戶端訪問
Linux代碼
- $ redis-cli
- redis> set foo bar
- OK
- redis> get foo
- "bar"
四.關閉服務器
Linux代碼
- $ /etc/init.d/redis_6379 stop
II. 定製服務器啓動參數
在我們成功安裝Redis後,我們直接執行redis-server即可運行Redis,此時它是按照默認配置來運行的(默認配置甚至不是後臺運行)。我們希望Redis按我們的要求運行,則我們需要修改配置文件(在redis解壓縮目錄下有一個redis.con可以作爲範本),下面是redis.conf的主要配置參數的意義:
引用
daemonize:是否以後臺daemon方式運行
pidfile:pid文件位置
port:監聽的端口號
timeout:請求超時時間
loglevel:log信息級別
logfile:log文件位置
databases:開啓數據庫的數量
save * *:保存快照的頻率,第一個*表示多長時間,第三個*表示執行多少次寫操作。在一定時間內執行一定數量的寫操作時,自動保存快照。可設置多個條件。
rdbcompression:是否使用壓縮
dbfilename:數據快照文件名(只是文件名,不包括目錄)
dir:數據快照的保存目錄(這個是目錄)
appendonly:是否開啓appendonlylog,開啓的話每次寫操作會記一條log,這會提高數據抗風險能力,但影響效率。
appendfsync:appendonlylog如何同步到磁盤(三個選項,分別是每次寫都強制調用fsync、每秒啓用一次fsync、不調用fsync等待系統自己同步)
下面是一個略做修改後的配置文件內容:
Redis.conf代碼
- daemonize yes
- pidfile /usr/local/redis/var/redis.pid
- port 6000
- timeout 300
- loglevel debug
- logfile /usr/local/redis/var/redis.log
- databases 16
- save 900 1
- save 300 10
- save 60 10000
- rdbcompression yes
- dbfilename dump.rdb
- dir /usr/local/redis/var/
- appendonly no
- appendfsync always
- glueoutputbuf yes
- shareobjects no
- shareobjectspoolsize 1024
重啓服務器
Linux代碼
- redis-server /usr/local/redis/redis.conf
試試看讀寫是否有問題.如果服務器啓動到了指定非默認端口,那麼客戶端連接則需要-p參數
如:
Linux代碼
- $redis-cli -p 6380
* 開放服務器端口供其他主機連接
vi /etc/sysconfig/iptables #需要具備其修改權限
可能需要增加一行:
# redis
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT
保存後重啓iptables:
service iptables restart (PATH中加入了/sbin/)或者 /etc/init.d/iptables restart