redis 學(xué)習(xí)指南資料_第1頁
redis 學(xué)習(xí)指南資料_第2頁
redis 學(xué)習(xí)指南資料_第3頁
redis 學(xué)習(xí)指南資料_第4頁
redis 學(xué)習(xí)指南資料_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

redis學(xué)習(xí)指南一、介紹Redis是一個(gè)開源的使用ANSIC語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、一個(gè)高性能的key-value數(shù)據(jù)庫。并提供多種語言的API。說到Key-Value數(shù)據(jù)庫NoSQL數(shù)據(jù)庫可以想到MongoDB。和Memcached類似,它支持存儲(chǔ)的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sortedset--有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會(huì)周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步。

二、基于windows64bit安裝安裝之前請務(wù)必確定你是Administrator管理員賬號(hào)的windows用戶!如果不是Administrator用戶,則可能需要以管理員身份運(yùn)行.或者參考Windows7啟用超級(jí)管理員administrator賬戶的N種方法在redis的下載頁面有這樣的一段話,說的意思是指redis項(xiàng)目未有提供對windows系統(tǒng)的支持,而MicrosoftOpenTech提供了一個(gè)基于win64的redis實(shí)現(xiàn)。那就是說只支持64位系統(tǒng)了,32位的windows系統(tǒng)的同學(xué)就老老實(shí)實(shí)的換系統(tǒng)去吧。(*^__^*)TheRedisprojectdoesnotofficiallysupportWindows.However,theMicrosoftOpenTechgroupdevelopsandmaintainsthisWindowsporttargetingWin64.

1、下載與安裝下載地址:/MSOpenTech/redis/releases/download/win-2.8.19/redis-2.8.19.zip下載成功后解壓可以看到如下文件Windows下的安裝幾乎沒有什么過程,解壓后就可以使用。簡單介紹下著幾個(gè)exe文件的用途:redis.windows.confredis的配置文件redis-benchmark.exe測試工具,測試redis的讀寫性能情況redis-check-aof.exeaof修復(fù)檢查日志redis-check-dump.exedump檢查數(shù)據(jù)庫文件redis-cli.exeredis客戶端程序redis-server.exeredis服務(wù)器程序

三、使用redis工具1、redis-server雙擊運(yùn)行或者用dos命令打開都可以,成功運(yùn)行后可以看到界面內(nèi)容如下:會(huì)帶有版本號(hào)、運(yùn)行進(jìn)程號(hào)、運(yùn)行端口信息。并且會(huì)提醒使用redis.windows.conf配置文件。如果你啟動(dòng)失敗的話,提醒內(nèi)存問題。那就需要修改下配置文件的maxheap配置(默認(rèn)情況下該配置沒有賦值的,且沒有開啟),修改如下:#maxheap<bytes>maxheap1024000000還有一種啟動(dòng)方式就是帶指定redis.conf配置文件的啟動(dòng)方式,如下:當(dāng)你想使用不同的配置文件來設(shè)置不同服務(wù)器參數(shù)的時(shí)候就需要這樣,默認(rèn)會(huì)使用根目錄下的配置文件。redis-server/biran/conf/redis.conf啟動(dòng)并加裝指定配置文件redis-server-(readconfigfromstdin)使用標(biāo)準(zhǔn)輸入讀取配置為啟動(dòng)參數(shù)redis-server--test-memory256檢測256MB內(nèi)存redis-server–version查版本號(hào)如果準(zhǔn)備長期使用,則需要注冊為系統(tǒng)服務(wù).進(jìn)入CMD,切換到redis所在目錄:注冊服務(wù),可以保存為service-install.bat文件:redis-server.exe--service-installredis.windows.conf--loglevelverboseredis-server--service-start卸載服務(wù),可以保存為uninstall-service.bat文件:redis-server--service-stopredis-server--service-uninstall可以在注冊服務(wù)時(shí),通過–service-nameredisService1參數(shù)直接指定服務(wù)名,適合安裝多個(gè)實(shí)例的情況,卸載也是同樣的道理.啟動(dòng)redis服務(wù)器時(shí)也可以直接指定配置文件,可以保存為startup.bat文件:redis-server.exeredis.windows.conf

2、redis.windows.conf各項(xiàng)配置參數(shù)介紹#默認(rèn)情況下,redis不是在后臺(tái)模式運(yùn)行的,如果需要在后臺(tái)進(jìn)程運(yùn)行,把該項(xiàng)的值更改為yes,默認(rèn)為nodaemonize:是否以后臺(tái)daemon方式運(yùn)行#如redis服務(wù)以后臺(tái)進(jìn)程運(yùn)行的時(shí)候,Redis默認(rèn)會(huì)把pid寫入/run/redis.pid文件組,你可以配置到其他文件路徑。#當(dāng)運(yùn)行多個(gè)redis服務(wù)時(shí),需要指定不同的pid文件和端口pidfile:pid文件位置#指定redis監(jiān)聽端口,默認(rèn)為6379#如果端口設(shè)置為0,Redis就不會(huì)監(jiān)聽TCP套接字。port:監(jiān)聽的端口號(hào)#指定redis只接收來自于該IP地址的請求,如果不進(jìn)行設(shè)置,默認(rèn)將處理所有請求,#在生產(chǎn)環(huán)境中最好設(shè)置該項(xiàng)bind#設(shè)置客戶端連接時(shí)的超時(shí)時(shí)間,單位為秒。當(dāng)客戶端在這段時(shí)間內(nèi)沒有發(fā)出任何指令,那么關(guān)閉該連接#默認(rèn)值:0代表禁用,永不關(guān)閉timeout:請求超時(shí)時(shí)間#指定用來監(jiān)聽連接的unxi套接字的路徑。這個(gè)沒有默認(rèn)值,所以如果不指定的話,Redis就不會(huì)通過unix套接字來監(jiān)聽。#unixsocket/tmp/redis.sock#unixsocketperm755#指定日志記錄級(jí)別#Redis總共支持四個(gè)級(jí)別:debug、verbose、notice、warning,默認(rèn)為verbose#debug記錄很多信息,用于開發(fā)和測試#varbose很多精簡的有用信息,不像debug會(huì)記錄那么多#notice普通的verbose,常用于生產(chǎn)環(huán)境#warning只有非常重要或者嚴(yán)重的信息會(huì)記錄到日志loglevel:log信息級(jí)別#配置log文件名稱和全路徑地址#默認(rèn)值為stdout,使用“標(biāo)準(zhǔn)輸出”,默認(rèn)后臺(tái)模式會(huì)輸出到/dev/nulllogfile:log文件位置#可用數(shù)據(jù)庫數(shù),默認(rèn)值為16,默認(rèn)數(shù)據(jù)庫存儲(chǔ)在DB0號(hào)ID庫中,無特殊需求,建議僅設(shè)置一個(gè)數(shù)據(jù)庫databases1#查詢數(shù)據(jù)庫使用SELECT<dbid>#dbid介于0到'databases'-1之間databases:開啟數(shù)據(jù)庫的數(shù)量save**:保存快照的頻率,第一個(gè)*表示多長時(shí)間,第三個(gè)*表示執(zhí)行多少次寫操作。在一定時(shí)間內(nèi)執(zhí)行一定數(shù)量的寫操作時(shí),自動(dòng)保存快照??稍O(shè)置多個(gè)條件。rdbcompression:是否使用壓縮dbfilename:數(shù)據(jù)快照文件名(只是文件名,不包括目錄)dir:數(shù)據(jù)快照的保存目錄(這個(gè)是目錄)appendonly:是否開啟appendonlylog,開啟的話每次寫操作會(huì)記一條log,這會(huì)提高數(shù)據(jù)抗風(fēng)險(xiǎn)能力,但影響效率。appendfsync:appendonlylog如何同步到磁盤(三個(gè)選項(xiàng),分別是每次寫都強(qiáng)制調(diào)用fsync、每秒啟用一次fsync、不調(diào)用fsync等待系統(tǒng)自己同步)##########REPLICATION同步############主從同步。通過slaveof配置來實(shí)現(xiàn)Redis實(shí)例的備份。#注意,這里是本地從遠(yuǎn)端復(fù)制數(shù)據(jù)。也就是說,本地可以有不同的數(shù)據(jù)庫文件、綁定不同的IP、監(jiān)聽不同的端口。#當(dāng)本機(jī)為從服務(wù)時(shí),設(shè)置主服務(wù)的IP及端口,在Redis啟動(dòng)時(shí),它會(huì)自動(dòng)從主服務(wù)進(jìn)行數(shù)據(jù)同步#slaveof<masterip><masterport>#如果主服務(wù)master設(shè)置了密碼(通過下面的"requirepass"選項(xiàng)來配置),slave服務(wù)連接master的密碼,那么slave在開始同步之前必須進(jìn)行身份驗(yàn)證,否則它的同步請求會(huì)被拒絕。#當(dāng)本機(jī)為從服務(wù)時(shí),設(shè)置主服務(wù)的連接密碼#masterauth<master-password>#當(dāng)一個(gè)slave失去和master的連接,或者同步正在進(jìn)行中,slave的行為有兩種可能:#1)如果slave-serve-stale-data設(shè)置為"yes"(默認(rèn)值),slave會(huì)繼續(xù)響應(yīng)客戶端請求,可能是正常數(shù)據(jù),也可能是還沒獲得值的空數(shù)據(jù)。#2)如果slave-serve-stale-data設(shè)置為"no",slave會(huì)回復(fù)"正在從master同步(SYNCwithmasterinprogress)"來處理各種請求,除了INFO和SLAVEOF命令。slave-serve-stale-datayes#slave根據(jù)指定的時(shí)間間隔向服務(wù)器發(fā)送ping請求。#時(shí)間間隔可以通過repl_ping_slave_period來設(shè)置。#默認(rèn)10秒#repl-ping-slave-period10#下面的選項(xiàng)設(shè)置了大塊數(shù)據(jù)I/O、向master請求數(shù)據(jù)和ping響應(yīng)的過期時(shí)間。#默認(rèn)值60秒。#一個(gè)很重要的事情是:確保這個(gè)值比repl-ping-slave-period大,否則master和slave之間的傳輸過期時(shí)間比預(yù)想的要短。#repl-timeout60##########SECURITY安全###########要求客戶端在處理任何命令時(shí)都要驗(yàn)證身份和設(shè)置密碼。#如果你不相信請求者,這個(gè)功能很有用。#為了向后兼容的話,這段應(yīng)該注釋掉。而且大多數(shù)人不需要身份驗(yàn)證(例如:它們運(yùn)行在自己的服務(wù)器上。)#警告:外部使用者可以每秒嘗試150k的密碼來試圖破解密碼,這意味著你需要一個(gè)高強(qiáng)度的密碼,否則破解太容易了。#設(shè)置連接密碼#requirepassfoobared#命令重命名,可設(shè)置多個(gè)#在共享環(huán)境下,可以為危險(xiǎn)命令改變名字。比如,你可以為CONFIG改個(gè)其他不太容易猜到的名字,這樣你自己仍然可以使用,而別人卻沒法知道它。#例如:#rename-commandCONFIGb840fc02d524045429941cc15f59e41cb7be6c52#rename-commandinfoinfo_biran#rename-commandsetset_biran#甚至也可以通過給命令賦值一個(gè)空字符串來完全禁用這條命令:#rename-commandCONFIG""##########LIMITS限制###########設(shè)置最大同時(shí)連接客戶端數(shù)量。#默認(rèn)沒有限制,這個(gè)關(guān)系到Redis進(jìn)程能夠打開的文件描述符數(shù)量。#特殊值"0"表示沒有限制。#一旦達(dá)到這個(gè)限制,Redis會(huì)關(guān)閉所有新連接并發(fā)送錯(cuò)誤"達(dá)到最大用戶數(shù)上限(maxnumberofclientsreached)"#maxclients128#不要用比設(shè)置的上限更多的內(nèi)存。一旦內(nèi)存使用達(dá)到上限,Redis會(huì)根據(jù)選定的回收策略(參見:maxmemmory-policy:內(nèi)存策略設(shè)置)刪除key。#如果因?yàn)閯h除策略問題Redis無法刪除key,或者策略設(shè)置為"noeviction",Redis會(huì)回復(fù)需要更多內(nèi)存的錯(cuò)誤信息給命令。#例如,SET,LPUSH等等。但是會(huì)繼續(xù)合理響應(yīng)只讀命令,比如:GET。#在使用Redis作為LRU緩存,或者為實(shí)例設(shè)置了硬性內(nèi)存限制的時(shí)候(使用"noeviction"策略)的時(shí)候,這個(gè)選項(xiàng)還是滿有用的。#警告:當(dāng)一堆slave連上達(dá)到內(nèi)存上限的實(shí)例的時(shí)候,響應(yīng)slave需要的輸出緩存所需內(nèi)存不計(jì)算在使用內(nèi)存當(dāng)中。#這樣當(dāng)請求一個(gè)刪除掉的key的時(shí)候就不會(huì)觸發(fā)網(wǎng)絡(luò)問題/重新同步的事件,然后slave就會(huì)收到一堆刪除指令,直到數(shù)據(jù)庫空了為止。#簡而言之,如果你有slave連上一個(gè)master的話,那建議你把master內(nèi)存限制設(shè)小點(diǎn)兒,確保有足夠的系統(tǒng)內(nèi)存用作輸出緩存。#(如果策略設(shè)置為"noeviction"的話就不無所謂了)#設(shè)置最大內(nèi)存,達(dá)到最大內(nèi)存設(shè)置后,Redis會(huì)先嘗試清除已到期或即將到期的Key,當(dāng)此方法處理后,任到達(dá)最大內(nèi)存設(shè)置,將無法再進(jìn)行寫入操作。#maxmemory256000000分配256M內(nèi)存#maxmemory<bytes>#內(nèi)存策略:如果達(dá)到內(nèi)存限制了,Redis如何刪除key。你可以在下面五個(gè)策略里面選:##volatile-lru->根據(jù)LRU算法生成的過期時(shí)間來刪除。#allkeys-lru->根據(jù)LRU算法刪除任何key。#volatile-random->根據(jù)過期設(shè)置來隨機(jī)刪除key。#allkeys->random->無差別隨機(jī)刪。#volatile-ttl->根據(jù)最近過期時(shí)間來刪除(輔以TTL)#noeviction->誰也不刪,直接在寫操作時(shí)返回錯(cuò)誤。##注意:對所有策略來說,如果Redis找不到合適的可以刪除的key都會(huì)在寫操作時(shí)返回一個(gè)錯(cuò)誤。##這里涉及的命令:setsetnxsetexappend#incrdecrrpushlpushrpushxlpushxlinsertlsetrpoplpushsadd#sintersinterstoresunionsunionstoresdiffsdiffstorezaddzincrby#zunionstorezinterstorehsethsetnxhmsethincrbyincrbydecrby#getsetmsetmsetnxexecsort##默認(rèn)值如下:#maxmemory-policyvolatile-lru#LRU和最小TTL算法的實(shí)現(xiàn)都不是很精確,但是很接近(為了省內(nèi)存),所以你可以用樣例做測試。#例如:默認(rèn)Redis會(huì)檢查三個(gè)key然后取最舊的那個(gè),你可以通過下面的配置項(xiàng)來設(shè)置樣本的個(gè)數(shù)。#maxmemory-samples3##########APPENDONLYMODE純累加模式###########默認(rèn)情況下,Redis是異步的把數(shù)據(jù)導(dǎo)出到磁盤上。因?yàn)閞edis本身同步數(shù)據(jù)文件是按上面save條件來同步的,所以有的數(shù)據(jù)會(huì)在一段時(shí)間內(nèi)只存在于內(nèi)存中,這種情況下,當(dāng)Redis宕機(jī)的時(shí)候,最新的數(shù)據(jù)就丟了。#如果不希望丟掉任何一條數(shù)據(jù)的話就該用純累加模式:一旦開啟這個(gè)模式,Redis會(huì)把每次寫入的數(shù)據(jù)在接收后都寫入appendonly.aof文件。#每次啟動(dòng)時(shí)Redis都會(huì)把這個(gè)文件的數(shù)據(jù)讀入內(nèi)存里。##注意,異步導(dǎo)出的數(shù)據(jù)庫文件和純累加文件可以并存(此時(shí)需要把上面所有"save"設(shè)置都注釋掉,關(guān)掉導(dǎo)出機(jī)制)。#如果純累加模式開啟了,那么Redis會(huì)在啟動(dòng)時(shí)載入日志文件而忽略導(dǎo)出的dump.rdb文件。##重要:查看BGREWRITEAOF來了解當(dāng)累加日志文件太大了之后,怎么在后臺(tái)重新處理這個(gè)日志文件。#設(shè)置:yes為純累加模式appendonlyno#設(shè)置純累加文件名字及保存路徑,默認(rèn):"appendonly.aof"#appendfilenameappendonly.aof#fsync()請求操作系統(tǒng)馬上把數(shù)據(jù)寫到磁盤上,不要再等了。#有些操作系統(tǒng)會(huì)真的把數(shù)據(jù)馬上刷到磁盤上;有些則要磨蹭一下,但是會(huì)盡快去做。#Redis支持三種不同的模式:##no:不要立刻刷,只有在操作系統(tǒng)需要刷的時(shí)候再刷。比較快。#always:每次寫操作都立刻寫入到aof文件。慢,但是最安全。#everysec:每秒寫一次。折衷方案。#默認(rèn)的"everysec"通常來說能在速度和數(shù)據(jù)安全性之間取得比較好的平衡。#如果你真的理解了這個(gè)意味著什么,那么設(shè)置"no"可以獲得更好的性能表現(xiàn)(如果丟數(shù)據(jù)的話,則只能拿到一個(gè)不是很新的快照);#或者相反的,你選擇"always"來犧牲速度確保數(shù)據(jù)安全、完整。##如果不確定這些模式的使用,建議使用"everysec"##appendfsyncalwaysappendfsynceverysec#appendfsyncno#如果AOF的同步策略設(shè)置成"always"或者"everysec",那么后臺(tái)的存儲(chǔ)進(jìn)程(后臺(tái)存儲(chǔ)或?qū)懭階OF日志)會(huì)產(chǎn)生很多磁盤I/O開銷。#某些Linux的配置下會(huì)使Redis因?yàn)閒sync()而阻塞很久。#注意,目前對這個(gè)情況還沒有完美修正,甚至不同線程的fsync()會(huì)阻塞我們的write(2)請求。##為了緩解這個(gè)問題,可以用下面這個(gè)選項(xiàng)。它可以在BGSAVE或BGREWRITEAOF處理時(shí)阻止fsync()。##這就意味著如果有子進(jìn)程在進(jìn)行保存操作,那么Redis就處于"不可同步"的狀態(tài)。#這實(shí)際上是說,在最差的情況下可能會(huì)丟掉30秒鐘的日志數(shù)據(jù)。(默認(rèn)Linux設(shè)定)##如果你有延遲的問題那就把這個(gè)設(shè)為"yes",否則就保持"no",這是保存持久數(shù)據(jù)的最安全的方式。no-appendfsync-on-rewriteno#自動(dòng)重寫AOF文件#如果AOF日志文件大到指定百分比,Redis能夠通過BGREWRITEAOF自動(dòng)重寫AOF日志文件。##工作原理:Redis記住上次重寫時(shí)AOF日志的大小(或者重啟后沒有寫操作的話,那就直接用此時(shí)的AOF文件),#基準(zhǔn)尺寸和當(dāng)前尺寸做比較。如果當(dāng)前尺寸超過指定比例,就會(huì)觸發(fā)重寫操作。##你還需要指定被重寫日志的最小尺寸,這樣避免了達(dá)到約定百分比但尺寸仍然很小的情況還要重寫。##指定百分比為0會(huì)禁用AOF自動(dòng)重寫特性。auto-aof-rewrite-percentage100auto-aof-rewrite-min-size64mb##########SLOWLOG慢查詢?nèi)罩?##########Redis慢查詢?nèi)罩究梢杂涗洺^指定時(shí)間的查詢。運(yùn)行時(shí)間不包括各種I/O時(shí)間。#例如:連接客戶端,發(fā)送響應(yīng)數(shù)據(jù)等。只計(jì)算命令運(yùn)行的實(shí)際時(shí)間(這是唯一一種命令運(yùn)行線程阻塞而無法同時(shí)為其他請求服務(wù)的場景)##你可以為慢查詢?nèi)罩九渲脙蓚€(gè)參數(shù):一個(gè)是超標(biāo)時(shí)間,單位為微妙,記錄超過個(gè)時(shí)間的命令。#另一個(gè)是慢查詢?nèi)罩鹃L度。當(dāng)一個(gè)新的命令被寫進(jìn)日志的時(shí)候,最老的那個(gè)記錄會(huì)被刪掉。##下面的時(shí)間單位是微秒,所以1000000就是1秒。注意,負(fù)數(shù)時(shí)間會(huì)禁用慢查詢?nèi)罩?,?則會(huì)強(qiáng)制記錄所有命令。slowlog-log-slower-than10000#這個(gè)長度沒有限制。只要有足夠的內(nèi)存就行。你可以通過SLOWLOGRESET來釋放內(nèi)存。slowlog-max-len128##########VIRTUALMEMORY虛擬內(nèi)存#############警告!虛擬內(nèi)存在Redis2.4是反對的,因性能問題,2.4版本VM機(jī)制徹底廢棄,不建議使用此配置?。。。。。。。。。?!#虛擬內(nèi)存可以使Redis在內(nèi)存不夠的情況下仍然可以將所有數(shù)據(jù)序列保存在內(nèi)存里。#為了做到這一點(diǎn),高頻key會(huì)調(diào)到內(nèi)存里,而低頻key會(huì)轉(zhuǎn)到交換文件里,就像操作系統(tǒng)使用內(nèi)存頁一樣。#要使用虛擬內(nèi)存,只要把"vm-enabled"設(shè)置為"yes",并根據(jù)需要設(shè)置下面三個(gè)虛擬內(nèi)存參數(shù)就可以了。vm-enabledno#這是交換文件的路徑。估計(jì)你猜到了,交換文件不能在多個(gè)Redis實(shí)例之間共享,所以確保每個(gè)Redis實(shí)例使用一個(gè)獨(dú)立交換文件。#最好的保存交換文件(被隨機(jī)訪問)的介質(zhì)是固態(tài)硬盤(SSD)。#***警告***如果你使用共享主機(jī),那么默認(rèn)的交換文件放到/tmp下是不安全的。#創(chuàng)建一個(gè)Redis用戶可寫的目錄,并配置Redis在這里創(chuàng)建交換文件。vm-swap-file/tmp/redis.swap#"vm-max-memory"配置虛擬內(nèi)存可用的最大內(nèi)存容量。#如果交換文件還有空間的話,所有超標(biāo)部分都會(huì)放到交換文件里。#"vm-max-memory"設(shè)置為0表示系統(tǒng)會(huì)用掉所有可用內(nèi)存,建議設(shè)置為剩余內(nèi)存的60%-80%。#將所有大于vm-max-memory的數(shù)據(jù)存入虛擬內(nèi)存,無論vm-max-memory設(shè)置多小,所有索引數(shù)據(jù)都是內(nèi)存存儲(chǔ)的(Redis的索引數(shù)據(jù)就是keys),也就是說,當(dāng)vm-max-memory設(shè)置為0的時(shí)候,其實(shí)是所有value都存在于磁盤。默認(rèn)值為0。vm-max-memory0#Redis交換文件是分成多個(gè)數(shù)據(jù)頁的。#一個(gè)可存儲(chǔ)對象可以被保存在多個(gè)連續(xù)頁里,但是一個(gè)數(shù)據(jù)頁無法被多個(gè)對象共享。#所以,如果你的數(shù)據(jù)頁太大,那么小對象就會(huì)浪費(fèi)掉很多空間。#如果數(shù)據(jù)頁太小,那用于存儲(chǔ)的交換空間就會(huì)更少(假定你設(shè)置相同的數(shù)據(jù)頁數(shù)量)#如果你使用很多小對象,建議分頁尺寸為64或32個(gè)字節(jié)。#如果你使用很多大對象,那就用大一些的尺寸。#如果不確定,那就用默認(rèn)值:)vmsize32#交換文件里數(shù)據(jù)頁總數(shù)。#根據(jù)內(nèi)存中分頁表(已用/未用的數(shù)據(jù)頁分布情況),磁盤上每8個(gè)數(shù)據(jù)頁會(huì)消耗內(nèi)存里1個(gè)字節(jié)。#交換區(qū)容量=vmsize*vms#根據(jù)默認(rèn)的32字節(jié)的數(shù)據(jù)頁尺寸和134217728的數(shù)據(jù)頁數(shù)來算,Redis的數(shù)據(jù)頁文件會(huì)占4GB,而內(nèi)存里的分頁表會(huì)消耗16MB內(nèi)存。#為你的應(yīng)驗(yàn)程序設(shè)置最小且夠用的數(shù)字比較好,下面這個(gè)默認(rèn)值在大多數(shù)情況下都是偏大的。vms134217728#同時(shí)可運(yùn)行的虛擬內(nèi)存I/O線程數(shù),即訪問swap文件的線程數(shù)。#這些線程可以完成從交換文件進(jìn)行數(shù)據(jù)讀寫的操作,也可以處理數(shù)據(jù)在內(nèi)存與磁盤間的交互和編碼/解碼處理。#多一些線程可以一定程度上提高處理效率,雖然I/O操作本身依賴于物理設(shè)備的限制,不會(huì)因?yàn)楦嗟木€程而提高單次讀寫操作的效率。#特殊值0會(huì)關(guān)閉線程級(jí)I/O,并會(huì)開啟阻塞虛擬內(nèi)存機(jī)制。#設(shè)置最好不要超過機(jī)器的核數(shù),如果設(shè)置為0,那么所有對swap文件的操作都是串行的.可能會(huì)造成比較長時(shí)間的延遲,但是對數(shù)據(jù)完整性有很好的保證.vm-max-threads4##########ADVANCEDCONFIG高級(jí)配置###########當(dāng)有大量數(shù)據(jù)時(shí),適合用哈希編碼(這會(huì)需要更多的內(nèi)存),元素?cái)?shù)量上限不能超過給定限制。#RedisHash是value內(nèi)部為一個(gè)HashMap,如果該Map的成員數(shù)比較少,則會(huì)采用類似一維線性的緊湊格式來存儲(chǔ)該Map,即省去了大量指針的內(nèi)存開銷,如下2個(gè)條件任意一個(gè)條件超過設(shè)置值都會(huì)轉(zhuǎn)換成真正的HashMap,#當(dāng)value這個(gè)Map內(nèi)部不超過多少個(gè)成員時(shí)會(huì)采用線性緊湊格式存儲(chǔ),默認(rèn)是64,即value內(nèi)部有64個(gè)以下的成員就是使用線性緊湊存儲(chǔ),超過該值自動(dòng)轉(zhuǎn)成真正的HashMap。hash-max-zipmap-entries512#當(dāng)value這個(gè)Map內(nèi)部的每個(gè)成員值長度不超過多少字節(jié)就會(huì)采用線性緊湊存儲(chǔ)來節(jié)省空間。hash-max-zipmap-value64#與hash-max-zipmap-entries哈希相類似,數(shù)據(jù)元素較少的情況下,可以用另一種方式來編碼從而節(jié)省大量空間。#list數(shù)據(jù)類型多少節(jié)點(diǎn)以下會(huì)采用去指針的緊湊存儲(chǔ)格式list-max-ziplist-entries512#list數(shù)據(jù)類型節(jié)點(diǎn)值大小小于多少字節(jié)會(huì)采用緊湊存儲(chǔ)格式list-max-ziplist-value64#還有這樣一種特殊編碼的情況:數(shù)據(jù)全是64位無符號(hào)整型數(shù)字構(gòu)成的字符串。#下面這個(gè)配置項(xiàng)就是用來限制這種情況下使用這種編碼的最大上限的。set-max-intset-entries512#與第一、第二種情況相似,有序序列也可以用一種特別的編碼方式來處理,可節(jié)省大量空間。#這種編碼只適合長度和元素都符合下面限制的有序序列:zset-max-ziplist-entries128zset-max-ziplist-value64#哈希刷新,每100個(gè)CPU毫秒會(huì)拿出1個(gè)毫秒來刷新Redis的主哈希表(頂級(jí)鍵值映射表)。#redis所用的哈希表實(shí)現(xiàn)(見dict.c)采用延遲哈希刷新機(jī)制:你對一個(gè)哈希表操作越多,哈希刷新操作就越頻繁;#反之,如果服務(wù)器非常不活躍那么也就是用點(diǎn)內(nèi)存保存哈希表而已。#默認(rèn)是每秒鐘進(jìn)行10次哈希表刷新,用來刷新字典,然后盡快釋放內(nèi)存。#建議:#如果你對延遲比較在意的話就用"activerehashingno",每個(gè)請求延遲2毫秒不太好嘛。#如果你不太在意延遲而希望盡快釋放內(nèi)存的話就設(shè)置"activerehashingyes"。activerehashingyes##########INCLUDES包含###########包含一個(gè)或多個(gè)其他配置文件。#這在你有標(biāo)準(zhǔn)配置模板但是每個(gè)redis服務(wù)器又需要個(gè)性設(shè)置的時(shí)候很有用。#包含文件特性允許你引人其他配置文件,所以好好利用吧。#include/path/to/local.conf#include/path/to/other.conf修改配置后,如果配置文件涉及到中文內(nèi)容記得將文件存為UTF-8編碼。

3、redis-cli客戶端使用測試服務(wù)器啟動(dòng)連接情況:6379>pingPONG查看服務(wù)器級(jí)別信息(測試服務(wù)器):6379>info#Serverredis_version:2.8.19redis_git_sha1:00000000redis_git_dirty:0redis_build_id:9968db13395be4aaredis_mode:standaloneos:Windowsarch_bits:64multiplexing_api:winsock_IOCPgcc_version:0.0.0process_id:9204run_id:fc4a126eaed1572b6855c9af511d3451eb358c85tcp_port:6379uptime_in_seconds:2365uptime_in_days:0hz:10lru_clock:3087964config_file:G:\software\redis\redis.windows.conf#Clientsconnected_clients:1client_longest_output_list:0client_biggest_input_buf:0blocked_clients:0#Memoryused_memory:11568456used_memory_human:11.03Mused_memory_rss:11534800used_memory_peak:11568456used_memory_peak_human:11.03Mused_memory_lua:35840mem_fragmentation_ratio:1.00mem_allocator:dlmalloc-2.8#Persistenceloading:0rdb_changes_since_last_save:0rdb_bgsave_in_progress:0rdb_last_save_time:1429148959rdb_last_bgsave_status:okrdb_last_bgsave_time_sec:-1rdb_current_bgsave_time_sec:-1aof_enabled:0添加數(shù)據(jù):6379>setuserhoojoOK:6379>getuser"hoojo"查看所有的key信息:6379>keys*1)"key:000000000308"2)"key:000000000900"3)"key:__rand_int__"4)"key:000000000809"5)"key:000000000164"6)"key:000000000887"基本參數(shù)介紹-h設(shè)置檢測主機(jī)IP地址,默認(rèn)為-p設(shè)置檢測主機(jī)的端口號(hào),默認(rèn)為6379-s<socket>服務(wù)器套接字(壓倒主機(jī)和端口)-a連接到Master服務(wù)器時(shí)使用的密碼-r執(zhí)行指定的N次命令-i執(zhí)行命令后等待N秒,如–i0.1info(執(zhí)行后等0.1秒)-n指定連接N號(hào)ID數(shù)據(jù)庫,如–n3(連接3號(hào)數(shù)據(jù)庫)-x從控制臺(tái)輸入的信息中讀取最后一個(gè)參數(shù)-d定義多個(gè)定界符為默認(rèn)輸出格式(默認(rèn):\n)--raw使用原數(shù)據(jù)格式返回輸出內(nèi)容--latency進(jìn)入一個(gè)不斷延時(shí)采樣的特殊模式--slave模擬一個(gè)從服務(wù)器到主服務(wù)器的命令顯示反饋--pipe使用管道協(xié)議模式--bigkeys監(jiān)聽顯示數(shù)據(jù)量大的key值,--bigkeys-i0.1--help顯示命令行幫助信息--version顯示版本號(hào)

4、redis-benchmark性能測試工具默認(rèn)雙擊打開是按照默認(rèn)的測試參數(shù)進(jìn)行測試。輸入如上命令后會(huì)看到如下信息,表明同時(shí)并發(fā)10個(gè)連接,總共100次操作。通俗易懂的說就是10個(gè)用戶同時(shí)操作,總共每人操作10次的意思。100requestscompletedin0.01seconds(100個(gè)請求完成于0.01秒)10parallelclients(10個(gè)客戶端并發(fā))3bytespayload(每次寫入3個(gè)字節(jié))keepalive:1(保存一個(gè)鏈接數(shù))100.00%<=1milliseconds(100%的操作小于1秒完成)16666.67requestspersecond(每秒完成16666.67次查詢)命令參數(shù)說明redis-benchmark[-h<host>][-p<port>][-c<clients>][-n<requests]>[-k<boolean>]-h<hostname>主機(jī)名(默認(rèn))-p<port>主機(jī)端口(默認(rèn)6379)-s<socket>主機(jī)套接字(覆蓋主機(jī)和端口)-c<clients>并發(fā)連接的數(shù)量(默認(rèn)50)-n<requests>請求總數(shù)(默認(rèn)10000)-d<size>SET/GET數(shù)據(jù)的字節(jié)大小(默認(rèn)2)-k<boolean>1=keepalive0=reconnect(默認(rèn)1)-r<keyspa

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論