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