socket.io+redis

來源:互聯網
上載者:User
一:先安裝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.

官網的手冊http://redis.io/topics/quickstart

二:npm install redis是安裝Redis的Node.js用戶端,

這樣Node.js程式就可以串連到Redis伺服器並進行操作;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.