redis 是一個高性能的key-value數(shù)據(jù)庫。 redis的出現(xiàn),很大程度補(bǔ)償了memcached這類keyvalue存儲的不足,在部 分場合可以對關(guān)系數(shù)據(jù)庫起到很好的補(bǔ)充作用。它提供了Python,Ruby,Erlang,PHP客戶端,使用很方便。問題是這個項(xiàng)目還很新,可能還不足夠穩(wěn)定,而且沒有在實(shí)際的一些大型系統(tǒng)應(yīng)用的實(shí)例。此外,缺乏mc中批量get也是比較大的問題,始終批量獲取跟多次獲取的網(wǎng)絡(luò)開銷是不一樣的。
性能測試結(jié)果:
SET操作每秒鐘 110000 次,GET操作每秒鐘 81000 次,服務(wù)器配置如下:
Linux 2.6, Xeon X3320 2.5Ghz.
stackoverflow 網(wǎng)站使用 Redis 做為緩存服務(wù)器。
安裝過程:
Redis是一種高級key-value數(shù)據(jù)庫。它跟memcached類似,不過數(shù)據(jù)可以持久化,而且支持的數(shù)據(jù)類型很豐富。有字符串,鏈表,集 合和有序集合。支持在服務(wù)器端計(jì)算集合的并,交和補(bǔ)集(difference)等,還支持多種排序功能。所以Redis也可以被看成是一個數(shù)據(jù)結(jié)構(gòu)服務(wù) 器。
Redis的所有數(shù)據(jù)都是保存在內(nèi)存中,然后不定期的通過異步方式保存到磁盤上(這稱為“半持久化模式”);也可以把每一次數(shù)據(jù)變化都寫入到一個append only file(aof)里面(這稱為“全持久化模式”)。
一、下載最新版
wget http://redis.googlecode.com/files/redis-2.0.0-rc4.tar.gz
二、解壓縮
tar redis-2.0.0-rc4.tar.gz
三、安裝C/C++的編譯組件(非必須)
apt-get install build-essential
四、編譯
cd redis-2.0.0-rc4
make
make命令執(zhí)行完成后,會在當(dāng)前目錄下生成本個可執(zhí)行文件,分別是redis-server、redis-cli、redis-benchmark、redis-stat,它們的作用如下:
redis-server:Redis服務(wù)器的daemon啟動程序
redis-cli:Redis命令行操作工具。當(dāng)然,你也可以用telnet根據(jù)其純文本協(xié)議來操作
redis-benchmark:Redis性能測試工具,測試Redis在你的系統(tǒng)及你的配置下的讀寫性能
redis-stat:Redis狀態(tài)檢測工具,可以檢測Redis當(dāng)前狀態(tài)參數(shù)及延遲狀況
在后面會有這幾個命令的說明,當(dāng)然是從網(wǎng)上抄的。。。
五、修改配置文件
/etc/sysctl.conf
添加
vm.overcommit_memory=1
刷新配置使之生效
sysctl vm.overcommit_memory=1
補(bǔ)充介紹:
**如果內(nèi)存情況比較緊張的話,需要設(shè)定內(nèi)核參數(shù):
echo 1 > /proc/sys/vm/overcommit_memory
內(nèi)核參數(shù)說明如下:
overcommit_memory文件指定了內(nèi)核針對內(nèi)存分配的策略,其值可以是0、1、2。
0, 表示內(nèi)核將檢查是否有足夠的可用內(nèi)存供應(yīng)用進(jìn)程使用;如果有足夠的可用內(nèi)存,內(nèi)存申請?jiān)试S;否則,內(nèi)存申請失敗,并把錯誤返回給應(yīng)用進(jìn)程。
1, 表示內(nèi)核允許分配所有的物理內(nèi)存,而不管當(dāng)前的內(nèi)存狀態(tài)如何。
2, 表示內(nèi)核允許分配超過所有物理內(nèi)存和交換空間總和的內(nèi)存
**編輯redis.conf配置文件(/etc/redis.conf),按需求做出適當(dāng)調(diào)整,比如:
daemonize yes #轉(zhuǎn)為守護(hù)進(jìn)程,否則啟動時會每隔5秒輸出一行監(jiān)控信息
save 60 1000 #減小改變次數(shù),其實(shí)這個可以根據(jù)情況進(jìn)行指定
maxmemory 256000000 #分配256M內(nèi)存
在我們成功安裝Redis后,我們直接執(zhí)行redis-server即可運(yùn)行Redis,此時它是按照默認(rèn)配置來運(yùn)行的(默認(rèn)配置甚至不是后臺運(yùn) 行)。我們希望Redis按我們的要求運(yùn)行,則我們需要修改配置文件,Redis的配置文件就是我們上面第二個cp操作的redis.conf文件,目前 它被我們拷貝到了/usr/local/redis/etc/目錄下。修改它就可以配置我們的server了。如何修改?下面是redis.conf的主 要配置參數(shù)的意義:
daemonize:是否以后臺daemon方式運(yùn)行
pidfile:pid文件位置
port:監(jiān)聽的端口號
timeout:請求超時時間
loglevel:log信息級別
logfile:log文件位置
databases:開啟數(shù)據(jù)庫的數(shù)量
save * *:保存快照的頻率,第一個*表示多長時間,第三個*表示執(zhí)行多少次寫操作。在一定時間內(nèi)執(zhí)行一定數(shù)量的寫操作時,自動保存快照??稍O(shè)置多個條件。
rdbcompression:是否使用壓縮
dbfilename:數(shù)據(jù)快照文件名(只是文件名,不包括目錄)
dir:數(shù)據(jù)快照的保存目錄(這個是目錄)
appendonly:是否開啟appendonlylog,開啟的話每次寫操作會記一條log,這會提高數(shù)據(jù)抗風(fēng)險(xiǎn)能力,但影響效率。
appendfsync:appendonlylog如何同步到磁盤(三個選項(xiàng),分別是每次寫都強(qiáng)制調(diào)用fsync、每秒啟用一次fsync、不調(diào)用fsync等待系統(tǒng)自己同步)
下面是一個略做修改后的配置文件內(nèi)容:
復(fù)制代碼 代碼如下:
daemonize yes
pidfile /usr/local/redis/var/redis.pid
port 6379
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
將上面內(nèi)容寫為redis.conf并保存到/usr/local/redis/etc/目錄下
然后在命令行執(zhí)行:
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
即可在后臺啟動redis服務(wù),這時你通過
telnet 127.0.0.1 6379
即可連接到你的redis服務(wù)。
六、啟動服務(wù)并驗(yàn)證
啟動服務(wù)器
./redis-server
或
$redis-server /etc/redis.conf
查看是否成功啟動
$ ps -ef | grep redis
或
./redis-cli ping
PONG
七、啟動命令行客戶端賦值取值
redis-cli set mykey somevalue
./redis-cli get mykey
八、關(guān)閉服務(wù)
$ redis-cli shutdown
#關(guān)閉指定端口的redis-server
$redis-cli -p 6380 shutdown
九、客戶端也可以使用telnet形式連接。
[root@dbcache conf]# telnet 127.0.0.1 6379
Trying 127.0.0.1...
Connected to dbcache (127.0.0.1).
Escape character is '^]'.
set foo 3
bar
+OK
get foo
$3
bar
^]
telnet> quit
Connection closed.
您可能感興趣的文章:- 超強(qiáng)、超詳細(xì)Redis數(shù)據(jù)庫入門教程
- 淺談Redis的幾個過期策略
- 詳解Spring Data操作Redis數(shù)據(jù)庫
- redis如何設(shè)置database個數(shù)