Redis 起步

Rdis和JQuery一樣是純粹爲應用而產生的,這裏記錄的是在CentOS 5.7上學習入門文章:

1.Redis簡介

redis Redis是一個key-value存儲系統。和Memcached類似,但是解決了斷電後數據完全丟失的情況,而且她支持更多無化的value類型,除了和string外,還支持lists(鏈表)、sets(集合)和zsets(有序集合)幾種數據類型。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。

2.Redis的性能

下面是官方的bench-mark數據:

  • The test was done with 50 simultaneous clients performing 100000 requests.
  • The value SET and GET is a 256 bytes string.
  • The Linux box is running Linux 2.6, it’s Xeon X3320 2.5Ghz.
  • Text executed using the loopback interface (127.0.0.1).

    Results: about 110000 SETs per second, about 81000 GETs per second.

更多詳細數據請見官方bench-mark page(http://code.google.com/p/redis/wiki/Benchmarks

3.安裝Redis

Redis的代碼遵循ANSI-C編寫,可以在所有POSIX系統(如Linux, *BSD, Mac OS X, Solaris等)上安裝運行。而且Redis並不依賴任何非標準庫,也沒有編譯參數必需添加。redis的安裝出奇的簡單,這可能也是他風靡的一個原因,讓人很容易上手,不像某些東西,編譯階段就能讓人完全絕望。

先去官網下載源碼:

wget http://redis.googlecode.com/files/redis-2.4.6.tar.gz

解壓:

tar –zxvf redis-2.4.6.tar.gz

編譯

需要說明的事,redis的安裝非常簡單,已經有現成的Makefile文件,直接運行make命令即可。

make

make install

Redis 由四個可執行文件:redis-benchmarkredis-cliredis-serverredis-stat 這四個文件,加上一個redis.conf就構成了整個redis的最終可用包。它們的作用如下:

  • redis-server:Redis服務器的daemon啓動程序
  • redis-cli:Redis命令行操作工具。當然,你也可以用telnet根據其純文本協議來操作
  • redis-benchmark:Redis性能測試工具,測試Redis在你的系統及你的配置下的讀寫性能
  • redis-stat:Redis狀態檢測工具,可以檢測Redis當前狀態參數及延遲狀況

現在就可以啓動redis了,redis只有一個啓動參數,就是他的配置文件路徑。

redis-server /etc/redis.conf

注意,默認複製過去的redis.conf文件的daemonize參數爲no,所以redis不會在後臺運行,這時要測試,我們需要重新開一個終端。修改爲yes則爲後臺運行redis。另外配置文件中規定了pid文件,log文件和數據文件的地址,如果有需要先修改,默認log信息定向到stdout.

下面是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等待系統自己同步)

這時你可以打開一個終端進行測試了,配置文件中默認的監聽端口是6379

我們可以開啓一個Redis客戶端進行測試

[root@SNDA-192-168-1-114 ~]# redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> exit
[root@SNDA-192-168-1-114 ~]# redis-server /etc/redis.conf
[root@SNDA-192-168-1-114 ~]# redis-cli
redis 127.0.0.1:6379> quit

4.redis數據結構

redis 的作者antirez曾稱其爲一個數據結構服務器(data structures server),這是一個非常準確的表述,redis的所有功能就是將數據以其固有的幾種結構保存,並提供給用戶操作這幾種結構的接口。我們可以想象我們在各種語言中的那些固有數據類型及其操作。

redis目前提供四種數據類型:string,list,setzset(sorted set)和Hash

  • string是最簡單的類型,你可以理解成與Memcached一模一個的類型,一個key對應一個value,其上支持的操作與Memcached的操作類似。但它的功能更豐富。
  • list是一個鏈表結構,主要功能是push、pop、獲取一個範圍的所有值等等。操作中key理解爲鏈表的名字。
  • set是集合,和我們數學中的集合概念相似,對集合的操作有添加刪除元素,有對多個集合求交併差等操作。操作中key理解爲集合的名字。
  • zset是set的一個升級版本,他在set的基礎上增加了一個順序屬性,這一屬性在添加修改元素的時候可以指定,每次指定後,zset會自動重新按新的值調整順序。可以理解了有兩列的mysql表,一列存value,一列存順序。操作中key理解爲zset的名字。
  • Hash數據類型允許用戶用Redis存儲對象類型,Hash數據類型的一個重要優點是,當你存儲的數據對象只有很少幾個key值時,數據存儲的內存消耗會很小.更多關於Hash數據類型的說明請見: http://code.google.com/p/redis/wiki/Hashes

在官網上給出了所有支持的接口列表,並副副附有詳細的介紹,地址:

http://code.google.com/p/redis/wiki/CommandReference

另外,作者還提供了一個非常貼心的web命令行模擬頁面,供初學者試用redis,地址:

http://try.redis-db.com/

5.redis數據存儲

redis的存儲分爲內存存儲、磁盤存儲和log文件三部分,配置文件中有三個參數對其進行配置。

save seconds updatessave配置,指出在多長時間內,有多少次更新操作,就將數據同步到數據文件。這個可以多個條件配合,比如默認配置文件中的設置,就設置了三個條件。

appendonly yes/no appendonly配置,指出是否在每次更新操作後進行日誌記錄,如果不開啓,可能會在斷電時導致一段時間內的數據丟失。因爲redis本身同步數據文件是按上面的save條件來同步的,所以有的數據會在一段時間內只存在於內存中。

appendfsync no/always/everysec appendfsync配置,no表示等操作系統進行數據緩存同步到磁盤,always表示每次更新操作後手動調用fsync()將數據寫到磁盤,everysec表示每秒同步一次。

6.redis主從配置

redis支持master-slave的主從配置,配置方法是在從機的配置文件中指定slaveof參數爲主機的ip和port即可

7.redis起步(鏈接整理)

項目首頁,下方是各種語言支持列表:

http://code.google.com/p/redis/

作者在wiki中給出了一個非常好的例子,以使我們可以快速上手,地址:

http://code.google.com/p/redis/wiki/TwitterAlikeExample

同時作者推薦的另一個教程,地址:

http://labs.alcacoop.it/doku.php?id=articles:redis_land

一個redis愛好者創建的相關問題討論網站:

http://www.rediscookbook.org/

爲什麼使用 Redis及其產品定位

http://www.infoq.com/cn/articles/tq-why-choose-redis

Redis內存使用優化與存儲

http://www.infoq.com/cn/articles/tq-redis-memory-usage-optimization-storage


原文:http://www.cnblogs.com/shanyou/archive/2012/01/28/2330451.html

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