Redis 的安裝配置介紹

redis 是一個高性能的key-value數據庫。 redis的出現,很大程度補償了memcached這類keyvalue存儲的不足,在部 分場合可以對關係數據庫起到很好的補充作用。它提供了Python,Ruby,Erlang,PHP客戶端,使用很方便。問題是這個項目還很新,可能還不足夠穩定,而且沒有在實際的一些大型系統應用的實例。此外,缺乏mc中批量get也是比較大的問題,始終批量獲取跟多次獲取的網絡開銷是不一樣的。

性能測試結果:

SET操作每秒鐘 110000 次,GET操作每秒鐘 81000 次,服務器配置如下:

Linux 2.6, Xeon X3320 2.5Ghz.

stackoverflow 網站使用 Redis 做爲緩存服務器。

安裝過程:


Redis是一種高級key-value數據庫。它跟memcached類似,不過數據可以持久化,而且支持的數據類型很豐富。有字符串,鏈表,集 合和有序集合。支持在服務器端計算集合的並,交和補集(difference)等,還支持多種排序功能。所以Redis也可以被看成是一個數據結構服務 器。

Redis的所有數據都是保存在內存中,然後不定期的通過異步方式保存到磁盤上(這稱爲“半持久化模式”);也可以把每一次數據變化都寫入到一個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命令執行完成後,會在當前目錄下生成本個可執行文件,分別是redis-server、redis-cli、redis-benchmark、redis-stat,它們的作用如下:

  • redis-server:Redis服務器的daemon啓動程序

  • redis-cli:Redis命令行操作工具。當然,你也可以用telnet根據其純文本協議來操作

  • redis-benchmark:Redis性能測試工具,測試Redis在你的系統及你的配置下的讀寫性能

  • redis-stat:Redis狀態檢測工具,可以檢測Redis當前狀態參數及延遲狀況

在後面會有這幾個命令的說明,當然是從網上抄的。。。

五、修改配置文件

/etc/sysctl.conf

添加

vm.overcommit_memory=1

刷新配置使之生效

sysctl vm.overcommit_memory=1

補充介紹:

**如果內存情況比較緊張的話,需要設定內核參數:
echo 1 > /proc/sys/vm/overcommit_memory

內核參數說明如下:

overcommit_memory文件指定了內核針對內存分配的策略,其值可以是0、1、2。
0, 表示內核將檢查是否有足夠的可用內存供應用進程使用;如果有足夠的可用內存,內存申請允許;否則,內存申請失敗,並把錯誤返回給應用進程。
1, 表示內核允許分配所有的物理內存,而不管當前的內存狀態如何。
2, 表示內核允許分配超過所有物理內存和交換空間總和的內存

**編輯redis.conf配置文件(/etc/redis.conf),按需求做出適當調整,比如:
daemonize yes #轉爲守護進程,否則啓動時會每隔5秒輸出一行監控信息
save 60 1000 #減小改變次數,其實這個可以根據情況進行指定
maxmemory 256000000 #分配256M內存


在我們成功安裝Redis後,我們直接執行redis-server即可運行Redis,此時它是按照默認配置來運行的(默認配置甚至不是後臺運 行)。我們希望Redis按我們的要求運行,則我們需要修改配置文件,Redis的配置文件就是我們上面第二個cp操作的redis.conf文件,目前 它被我們拷貝到了/usr/local/redis/etc/目錄下。修改它就可以配置我們的server了。如何修改?下面是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等待系統自己同步)


下面是一個略做修改後的配置文件內容:

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

將上面內容寫爲redis.conf並保存到/usr/local/redis/etc/目錄下

然後在命令行執行:

1
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

即可在後臺啓動redis服務,這時你通過

1
telnet 127.0.0.1 6379

即可連接到你的redis服務。

六、啓動服務並驗證

啓動服務器


./redis-server

$redis-server /etc/redis.conf  
查看是否成功啓動
$ ps -ef | grep redis  

./redis-cli ping
PONG

七、啓動命令行客戶端賦值取值


redis-cli set mykey somevalue


./redis-cli get mykey


八、關閉服務

$ redis-cli shutdown  

#關閉指定端口的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.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章