Redis是一個key-value儲存系統。和Memcached類似,但是解決了斷電後資料完全丟失的情況,而且她支援更多無化的value類型,除了和string外,還支援lists(鏈表)、sets(集合)和zsets(有序集合)幾種資料類型。這些資料類型都支援push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。
1、先到Redis官網(redis.io)下載redis安裝包
2、將其下載到我的/lamp目錄下
3、解壓並進入其目錄
4、編譯來源程式
make
cd src
make install PREFIX=/usr/local/redis
5、將設定檔移動到redis目錄
6、啟動redis服務
7、預設情況,Redis不是在後台運行,我們需要把redis放在後台運行
vim /usr/local/redis/etc/redis.conf
將daemonize的值改為yes
8、用戶端串連
/usr/local/redis/bin/redis-cli
9、停止redis執行個體
/usr/local/redis/bin/redis-cli shutdown
或者
pkill redis-server
10、讓redis開機自啟
vim /etc/rc.local
加入
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis-conf
11、接下來我們看看/usr/local/redis/bin目錄下的幾個檔案時什麼
redis-benchmark:redis效能測試工具
redis-check-aof:檢查aof日誌的工具
redis-check-dump:檢查rdb日誌的工具
redis-cli:串連用的用戶端
redis-server:redis服務進程
Redis的配置
daemonize:如需要在後台運行,把該項的值改為yes
pdifile:把pid檔案放在/var/run/redis.pid,可以配置到其他地址
bind:指定redis只接收來自該IP的請求,如果不設定,那麼將處理所有請求,在生產環節中最好設定該項
port:監聽連接埠,預設為6379
timeout:設定用戶端串連時的逾時時間,單位為秒
loglevel:等級分為4級,debug,revbose,notice和warning。生產環境下一般開啟notice
logfile:配置log檔案地址,預設使用標準輸出,即列印在命令列終端的連接埠上
database:設定資料庫的個數,預設使用的資料庫是0
save:設定redis進行資料庫鏡像的頻率
rdbcompression:在進行鏡像備份時,是否進行壓縮
dbfilename:鏡像備份檔案的檔案名稱
dir:資料庫鏡像備份的檔案放置的路徑
slaveof:設定該資料庫為其他資料庫的從資料庫
masterauth:當主要資料庫串連要求輸入密碼驗證時,在這裡設定
requirepass:設定用戶端串連後進行任何其他指定前需要使用的密碼
maxclients:限制同時串連的用戶端數量
maxmemory:設定redis能夠使用的最大記憶體
appendonly:開啟appendonly模式後,redis會把每一次所接收到的寫操作都追加到appendonly.aof檔案中,當redis重新啟動時,會從該檔案恢複出之前的狀態
appendfsync:設定appendonly.aof檔案進行同步的頻率
vm_enabled:是否開啟虛擬記憶體支援
vm_swap_file:設定虛擬記憶體的分頁檔的路徑
vm_max_momery:設定開啟虛擬記憶體後,redis將使用的最大實體記憶體的大小,預設為0
vm_page_size:設定虛擬記憶體頁的大小
vm_pages:設定分頁檔的總的page數量
vm_max_thrrads:設定vm IO同時使用的線程數量
4.redis資料結構
redis 的作者antirez曾稱其為一個資料結構伺服器(data structures server ),這是一個非常準確的表述,redis的所有功能就是將資料以其固有的幾種結構儲存,並提供給使用者操作這幾種結構的介面。我們可以想象我們在各種語言中的那些固有資料類型及其操作。
redis目前提供四種資料類型:string ,list ,set 及zset (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 updates ,save 配置,指出在多長時間內,有多少次更新操作,就將資料同步到資料檔案。這個可以多個條件配合,比如預設設定檔中的設定,就設定了三個條件。
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