Redis是一個(gè)key-value存儲(chǔ)系統(tǒng)。和Memcached類似,但是解決了斷電后數(shù)據(jù)完全丟失的情況,而且她支持更多無(wú)化的value類型,除了和string外,還支持lists(鏈表)、sets(集合)和zsets(有序集合)幾種數(shù)據(jù)類型。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。
1、先到Redis官網(wǎng)(redis.io)下載redis安裝包
Redis的安裝部署圖文教程 三聯(lián)
2、將其下載到我的/lamp目錄下
3、解壓并進(jìn)入其目錄
4、編譯源程序
make
cd src
make install PREFIX=/usr/local/redis
5、將配置文件移動(dòng)到redis目錄
6、啟動(dòng)redis服務(wù)
7、默認(rèn)情況,Redis不是在后臺(tái)運(yùn)行,我們需要把redis放在后臺(tái)運(yùn)行
vim /usr/local/redis/etc/redis.conf
將daemonize的值改為yes
8、客戶端連接
/usr/local/redis/bin/redis-cli
9、停止redis實(shí)例
/usr/local/redis/bin/redis-cli shutdown
或者
pkill redis-server
10、讓redis開機(jī)自啟
vim /etc/rc.local
加入
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis-conf
11、接下來(lái)我們看看/usr/local/redis/bin目錄下的幾個(gè)文件時(shí)什么
redis-benchmark:redis性能測(cè)試工具
redis-check-aof:檢查aof日志的工具
redis-check-dump:檢查rdb日志的工具
redis-cli:連接用的客戶端
redis-server:redis服務(wù)進(jìn)程
Redis的配置
daemonize:如需要在后臺(tái)運(yùn)行,把該項(xiàng)的值改為yes
pdifile:把pid文件放在/var/run/redis.pid,可以配置到其他地址
bind:指定redis只接收來(lái)自該IP的請(qǐng)求,如果不設(shè)置,那么將處理所有請(qǐng)求,在生產(chǎn)環(huán)節(jié)中最好設(shè)置該項(xiàng)
port:監(jiān)聽端口,默認(rèn)為6379
timeout:設(shè)置客戶端連接時(shí)的超時(shí)時(shí)間,單位為秒
loglevel:等級(jí)分為4級(jí),debug,revbose,notice和warning。生產(chǎn)環(huán)境下一般開啟notice
logfile:配置log文件地址,默認(rèn)使用標(biāo)準(zhǔn)輸出,即打印在命令行終端的端口上
database:設(shè)置數(shù)據(jù)庫(kù)的個(gè)數(shù),默認(rèn)使用的數(shù)據(jù)庫(kù)是0
save:設(shè)置redis進(jìn)行數(shù)據(jù)庫(kù)鏡像的頻率
rdbcompression:在進(jìn)行鏡像備份時(shí),是否進(jìn)行壓縮
dbfilename:鏡像備份文件的文件名
dir:數(shù)據(jù)庫(kù)鏡像備份的文件放置的路徑
slaveof:設(shè)置該數(shù)據(jù)庫(kù)為其他數(shù)據(jù)庫(kù)的從數(shù)據(jù)庫(kù)
masterauth:當(dāng)主數(shù)據(jù)庫(kù)連接需要密碼驗(yàn)證時(shí),在這里設(shè)定
requirepass:設(shè)置客戶端連接后進(jìn)行任何其他指定前需要使用的密碼
maxclients:限制同時(shí)連接的客戶端數(shù)量
maxmemory:設(shè)置redis能夠使用的最大內(nèi)存
appendonly:開啟appendonly模式后,redis會(huì)把每一次所接收到的寫操作都追加到appendonly.aof文件中,當(dāng)redis重新啟動(dòng)時(shí),會(huì)從該文件恢復(fù)出之前的狀態(tài)
appendfsync:設(shè)置appendonly.aof文件進(jìn)行同步的頻率
vm_enabled:是否開啟虛擬內(nèi)存支持
vm_swap_file:設(shè)置虛擬內(nèi)存的交換文件的路徑
vm_max_momery:設(shè)置開啟虛擬內(nèi)存后,redis將使用的最大物理內(nèi)存的大小,默認(rèn)為0
vm_page_size:設(shè)置虛擬內(nèi)存頁(yè)的大小
vm_pages:設(shè)置交換文件的總的page數(shù)量
vm_max_thrrads:設(shè)置vm IO同時(shí)使用的線程數(shù)量
4.redis數(shù)據(jù)結(jié)構(gòu)
redis 的作者antirez曾稱其為一個(gè)數(shù)據(jù)結(jié)構(gòu)服務(wù)器(data structures server),這是一個(gè)非常準(zhǔn)確的表述,redis的所有功能就是將數(shù)據(jù)以其固有的幾種結(jié)構(gòu)保存,并提供給用戶操作這幾種結(jié)構(gòu)的接口。我們可以想象我們?cè)诟鞣N語(yǔ)言中的那些固有數(shù)據(jù)類型及其操作。
redis目前提供四種數(shù)據(jù)類型:string,list,set及zset(sorted set)和Hash。
string是最簡(jiǎn)單的類型,你可以理解成與Memcached一模一個(gè)的類型,一個(gè)key對(duì)應(yīng)一個(gè)value,其上支持的操作與Memcached的操作類似。但它的功能更豐富。
list是一個(gè)鏈表結(jié)構(gòu),主要功能是push、pop、獲取一個(gè)范圍的所有值等等。操作中key理解為鏈表的名字。
set是集合,和我們數(shù)學(xué)中的集合概念相似,對(duì)集合的操作有添加刪除元素,有對(duì)多個(gè)集合求交并差等操作。操作中key理解為集合的名字。
zset是set的一個(gè)升級(jí)版本,他在set的基礎(chǔ)上增加了一個(gè)順序?qū)傩裕@一屬性在添加修改元素的時(shí)候可以指定,每次指定后,zset會(huì)自動(dòng)重新按新的值調(diào)整順序??梢岳斫饬擞袃闪械膍ysql表,一列存value,一列存順序。操作中key理解為zset的名字。
Hash數(shù)據(jù)類型允許用戶用Redis存儲(chǔ)對(duì)象類型,Hash數(shù)據(jù)類型的一個(gè)重要優(yōu)點(diǎn)是,當(dāng)你存儲(chǔ)的數(shù)據(jù)對(duì)象只有很少幾個(gè)key值時(shí),數(shù)據(jù)存儲(chǔ)的內(nèi)存消耗會(huì)很小.更多關(guān)于Hash數(shù)據(jù)類型的說(shuō)明請(qǐng)見:
在官網(wǎng)上給出了所有支持的接口列表,并副副附有詳細(xì)的介紹,地址:
另外,作者還提供了一個(gè)非常貼心的web命令行模擬頁(yè)面,供初學(xué)者試用redis,地址:
5.redis數(shù)據(jù)存儲(chǔ)
redis的存儲(chǔ)分為內(nèi)存存儲(chǔ)、磁盤存儲(chǔ)和log文件三部分,配置文件中有三個(gè)參數(shù)對(duì)其進(jìn)行配置。
save seconds updates,save配置,指出在多長(zhǎng)時(shí)間內(nèi),有多少次更新操作,就將數(shù)據(jù)同步到數(shù)據(jù)文件。這個(gè)可以多個(gè)條件配合,比如默認(rèn)配置文件中的設(shè)置,就設(shè)置了三個(gè)條件。
appendonly yes/no ,appendonly配置,指出是否在每次更新操作后進(jìn)行日志記錄,如果不開啟,可能會(huì)在斷電時(shí)導(dǎo)致一段時(shí)間內(nèi)的數(shù)據(jù)丟失。因?yàn)閞edis本身同步數(shù)據(jù)文件是按上面的save條件來(lái)同步的,所以有的數(shù)據(jù)會(huì)在一段時(shí)間內(nèi)只存在于內(nèi)存中。
appendfsync no/always/everysec ,appendfsync配置,no表示等操作系統(tǒng)進(jìn)行數(shù)據(jù)緩存同步到磁盤,always表示每次更新操作后手動(dòng)調(diào)用fsync()將數(shù)據(jù)寫到磁盤,everysec表示每秒同步一次。
6.redis主從配置
redis支持master-slave的主從配置,配置方法是在從機(jī)的配置文件中指定slaveof參數(shù)為主機(jī)的ip和port即可
7.redis起步(鏈接整理)
項(xiàng)目首頁(yè),下方是各種語(yǔ)言支持列表:
作者在wiki中給出了一個(gè)非常好的例子,以使我們可以快速上手,地址:
更多信息請(qǐng)查看IT技術(shù)專欄