redis入門就是這么簡單

一衡怀、Redis簡介

</br>

1、Redis基本介紹

Redis中文網(wǎng)


  • Reids是一款高性能的key-value數(shù)據(jù)庫逻杖。同時(shí)Redis的value也支持String践盼、Sorted Sets(有序集合)、List篙骡、Set稽坤、ZSet丈甸、Hash等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)。
  • Redis的所有操作都是原子的尿褪。同時(shí)還支持對(duì)幾個(gè)操作全并后的原子性執(zhí)行睦擂。
  • Redis還支持publish、subscribe杖玲、通知顿仇、key過期等特性。

</br>

2摆马、Redis安裝

Redis下載
Redis各版本安裝教程

</br>


  • Redis目錄文件說明
    • redis-benchmark.exe #基準(zhǔn)測試
    • redis-check-aof.exe # aof
    • redis-check-dump.exe # dump
    • redis-cli.exe # 客戶端
    • redis-server.exe # 服務(wù)器
    • redis.windows.conf # redis配置文件臼闻,修改端口號(hào)
  • Redis安裝步驟
    • 下載Redis相應(yīng)的版本,將對(duì)應(yīng)的windows版本(如:64位)文件下的內(nèi)容拷到你指定的文件下(如:D:\Development\Redis\Install)囤采。
    • 打開cmd述呐,進(jìn)入到你所制定的文件目錄下,運(yùn)行 redis-server.exe redis.conf 命令斑唬。

    cmd中如何切換到指定目錄下:
    首先切換到目錄所在根目錄下(如:D盤)市埋,命令: d: 黎泣,就可以進(jìn)入到D盤根目錄下恕刘。
    再進(jìn)入你所需要的目錄下(如:D:\Development\Redis\Install),命令: cd D:\Development\Redis\Install .

  • Redis使用測試
    • 此時(shí)抒倚,在打開一個(gè)cmd命令窗口(原來的不要關(guān)閉)褐着,同樣切換到指定目錄下,運(yùn)行 redis-cli.exe -h 127.0.0.1 -p 6379 命令托呕。
    • 設(shè)置鍵值對(duì)含蓉,運(yùn)行 : set myKey abc 命令。
    • 取出鍵值對(duì)项郊,運(yùn)行 : get myKey 命令馅扣。

</br>

3、Redis配置

Redis配置說明

</br>


  • Redis配置文件着降,位于Redis安裝目錄下的 redis.conf

    • 可以通過 config 命令來查看和設(shè)置配置項(xiàng)差油。
    • 命令:
    redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME(配置的文件名)
    
    • 實(shí)例
    redis 127.0.0.1:6379> CONFIG GET loglevel
    結(jié)果:
    1) "loglevel"
    2) "notice"
    
    • 使用 * 號(hào)獲取所有的配置文件
    redis 127.0.0.1:6379> CONFIG GET *
    結(jié)果:
      1) "dbfilename"
    2) "dump.rdb"
    3) "requirepass"
    4) ""
    5) "masterauth"
    6) ""
    7) "unixsocket"
    8) ""
    9) "logfile"
    
  1. ""
  2. "pidfile"
  3. "/var/run/redis.pid"
  4. "maxmemory"
  5. "0"
  6. "maxmemory-samples"
  7. "3"
  8. "timeout"
  9. "0"
  10. "tcp-keepalive"
  11. "0"
  12. "auto-aof-rewrite-percentage"
  13. "100"
  14. "auto-aof-rewrite-min-size"
  15. "67108864"
  16. "hash-max-ziplist-entries"
  17. "512"
  18. "hash-max-ziplist-value"
  19. "64"
  20. "list-max-ziplist-entries"
  21. "512"
  22. "list-max-ziplist-value"
  23. "64"
  24. "set-max-intset-entries"
  25. "512"
  26. "zset-max-ziplist-entries"
  27. "128"
  28. "zset-max-ziplist-value"
  29. "64"
  30. "hll-sparse-max-bytes"
  31. "3000"
  32. "lua-time-limit"
  33. "5000"
  34. "slowlog-log-slower-than"
  35. "10000"
  36. "latency-monitor-threshold"
  37. "0"
  38. "slowlog-max-len"
  39. "128"
  40. "port"
  41. "6379"
  42. "tcp-backlog"
  43. "511"
  44. "databases"
  45. "16"
  46. "repl-ping-slave-period"
  47. "10"
  48. "repl-timeout"
  49. "60"
  50. "repl-backlog-size"
  51. "1048576"
  52. "repl-backlog-ttl"
  53. "3600"
  54. "maxclients"
  55. "4064"
  56. "watchdog-period"
  57. "0"
  58. "slave-priority"
  59. "100"
  60. "min-slaves-to-write"
  61. "0"
  62. "min-slaves-max-lag"
  63. "10"
  64. "hz"
  65. "10"
  66. "no-appendfsync-on-rewrite"
  67. "no"
  68. "slave-serve-stale-data"
  69. "yes"
  70. "slave-read-only"
  71. "yes"
  72. "stop-writes-on-bgsave-error"
  73. "yes"
  74. "daemonize"
  75. "no"
  76. "rdbcompression"
  77. "yes"
  78. "rdbchecksum"
  79. "yes"
  80. "activerehashing"
  81. "yes"
  82. "repl-disable-tcp-nodelay"
  83. "no"
  84. "aof-rewrite-incremental-fsync"
  85. "yes"
  86. "appendonly"
  87. "no"
  88. "dir"
  89. "/home/deepak/Downloads/redis-2.8.13/src"
  90. "maxmemory-policy"
  91. "volatile-lru"
  92. "appendfsync"
  93. "everysec"
  94. "save"
  95. "3600 1 300 100 60 10000"
  96. "loglevel"
  97. "notice"
  98. "client-output-buffer-limit"
  99. "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"
  100. "unixsocketperm"
  101. "0"
  102. "slaveof"
  103. ""
  104. "notify-keyspace-events"
  105. ""
  106. "bind"
  107. ""
```

</br>

  • 配置配置文件

    • 可以通過修改 redis.conf 文件或使用 CONFIG SET 命令來修改配置文件
    • 配置文件命令
    redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
    
    • 實(shí)例
    redis 127.0.0.1:6379> CONFIG SET loglevel "notice"
    OK
    結(jié)果:
    redis 127.0.0.1:6379> CONFIG GET loglevel
    1) "loglevel"
    2) "notice"
    

</br>

4、參數(shù)說明

redis.conf 配置項(xiàng)說明如下:
Redis配置參數(shù)說明

</br>


redis配置文件 redis.confredis.windows.conf

  • Redis默認(rèn)不是以守候進(jìn)程的方式運(yùn)行的任洞,可以通過配置項(xiàng)修改使用 yes 啟用守候進(jìn)程蓄喇。

** daemonize no**

  • 當(dāng)Redis以守護(hù)進(jìn)程方式運(yùn)行時(shí),Redis默認(rèn)會(huì)把pid寫入 /var/run/redis.pid文件 交掏,可以通過pidfile指定妆偏。
    pidfile /var/run/redis.pid

  • 指定Redis監(jiān)聽端口,默認(rèn)端口為6379盅弛,作者在自己的一篇博文中解釋了為什么選用6379作為默認(rèn)端口钱骂,因?yàn)?379在手機(jī)按鍵上MERZ對(duì)應(yīng)的號(hào)碼叔锐,而MERZ取自意大利歌女Alessia Merz的名字 ,可以通過pidfile指定见秽。
    port 6379

  • 綁定的主機(jī)地址掌腰。
    bind 127.0.0.1

  • 當(dāng)客戶端閑置多長時(shí)間后關(guān)閉連接,如果指定為0张吉,表示關(guān)閉該功能齿梁。
    timeout 300

  • 指定日志記錄級(jí)別,Redis總共支持四個(gè)級(jí)別:debug肮蛹、verbose勺择、notice、warning伦忠,默認(rèn)為verbose省核。
    loglevel verbose

  • 日志記錄方式,默認(rèn)為標(biāo)準(zhǔn)輸出昆码,如果配置Redis為守護(hù)進(jìn)程方式運(yùn)行气忠,而這里又配置為日志記錄方式為標(biāo)準(zhǔn)輸出,則日志將會(huì)發(fā)送給/dev/null赋咽。
    logfile stdout

  • 設(shè)置數(shù)據(jù)庫的數(shù)量旧噪,默認(rèn)數(shù)據(jù)庫為0,可以使用SELECT <dbid>命令在連接上指定數(shù)據(jù)庫id脓匿。
    databases 16

  • 指定在多長時(shí)間內(nèi)淘钟,有多少次更新操作,就將數(shù)據(jù)同步到數(shù)據(jù)文件陪毡,可以多個(gè)條件配合米母。
    save <seconds> <changes>

Redis默認(rèn)配置文件中提供了三個(gè)條件:

save 900 1
save 300 10
save 60 10000
分別表示900秒(15分鐘)內(nèi)有1個(gè)更改,300秒(5分鐘)內(nèi)有10個(gè)更改以及60秒內(nèi)有10000個(gè)更改毡琉。
  • 指定存儲(chǔ)至本地?cái)?shù)據(jù)庫時(shí)是否壓縮數(shù)據(jù)铁瞒,默認(rèn)為yes,Redis采用LZF壓縮桅滋,如果為了節(jié)省CPU時(shí)間慧耍,可以關(guān)閉該選項(xiàng),但會(huì)導(dǎo)致數(shù)據(jù)庫文件變的巨大虱歪。
    rdbcompression yes

  • 指定本地?cái)?shù)據(jù)庫文件名蜂绎,默認(rèn)值為dump.rdb。
    dbfilename dump.rdb

  • 指定本地?cái)?shù)據(jù)庫存放目錄笋鄙。
    dir ./

  • 設(shè)置當(dāng)本機(jī)為slav服務(wù)時(shí)师枣,設(shè)置master服務(wù)的IP地址及端口,在Redis啟動(dòng)時(shí)萧落,它會(huì)自動(dòng)從master進(jìn)行數(shù)據(jù)同步践美。
    slaveof <masterip> <masterport>

  • 當(dāng)master服務(wù)設(shè)置了密碼保護(hù)時(shí)洗贰,slav服務(wù)連接master的密碼。
    masterauth <master-password>

  • 設(shè)置Redis連接密碼陨倡,如果配置了連接密碼敛滋,客戶端在連接Redis時(shí)需要通過AUTH <password>命令提供密碼,默認(rèn)關(guān)閉兴革。
    <font color='red'>requirepass foobared</font>

  • 設(shè)置同一時(shí)間最大客戶端連接數(shù)绎晃,默認(rèn)無限制,Redis可以同時(shí)打開的客戶端連接數(shù)為Redis進(jìn)程可以打開的最大文件描述符數(shù)杂曲,如果設(shè)置 maxclients 0庶艾,表示不作限制。當(dāng)客戶端連接數(shù)到達(dá)限制時(shí)擎勘,Redis會(huì)關(guān)閉新的連接并向客戶端返回max number of clients reached錯(cuò)誤信息咱揍。
    maxclients 128

  • 指定Redis最大內(nèi)存限制,Redis在啟動(dòng)時(shí)會(huì)把數(shù)據(jù)加載到內(nèi)存中棚饵,達(dá)到最大內(nèi)存后煤裙,Redis會(huì)先嘗試清除已到期或即將到期的Key,當(dāng)此方法處理 后噪漾,仍然到達(dá)最大內(nèi)存設(shè)置硼砰,將無法再進(jìn)行寫入操作,但仍然可以進(jìn)行讀取操作怪与。Redis新的vm機(jī)制夺刑,會(huì)把Key存放內(nèi)存,Value會(huì)存放在swap區(qū)分别。
    <font color='red'>maxmemory <bytes></font>

  • 指定是否在每次更新操作后進(jìn)行日志記錄,Redis在默認(rèn)情況下是異步的把數(shù)據(jù)寫入磁盤存淫,如果不開啟耘斩,可能會(huì)在斷電時(shí)導(dǎo)致一段時(shí)間內(nèi)的數(shù)據(jù)丟失。因?yàn)?redis本身同步數(shù)據(jù)文件是按上面save條件來同步的桅咆,所以有的數(shù)據(jù)會(huì)在一段時(shí)間內(nèi)只存在于內(nèi)存中括授。默認(rèn)為no。
    appendonly no

  • 指定更新日志文件名岩饼,默認(rèn)為appendonly.aof荚虚。
    appendfilename appendonly.aof

  • 指定更新日志條件,共有3個(gè)可選值:
    no:表示等操作系統(tǒng)進(jìn)行數(shù)據(jù)緩存同步到磁盤(快)
    always:表示每次更新操作后手動(dòng)調(diào)用fsync()將數(shù)據(jù)寫到磁盤(慢籍茧,安全)
    everysec:表示每秒同步一次(折衷版述,默認(rèn)值)。
    appendfilename appendonly.aof

  • 指定是否啟用虛擬內(nèi)存機(jī)制寞冯,默認(rèn)值為no渴析,簡單的介紹一下晚伙,VM機(jī)制將數(shù)據(jù)分頁存放,由Redis將訪問量較少的頁即冷數(shù)據(jù)swap到磁盤上俭茧,訪問多的頁面由磁盤自動(dòng)換出到內(nèi)存中(在后面的文章我會(huì)仔細(xì)分析Redis的VM機(jī)制)咆疗。
    vm-enabled no

  • 虛擬內(nèi)存文件路徑,默認(rèn)值為/tmp/redis.swap母债,不可多個(gè)Redis實(shí)例共享午磁。
    vm-swap-file /tmp/redis.swap

  • 將所有大于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-memory 0

  • Redis swap文件分成了很多的page漓踢,一個(gè)對(duì)象可以保存在多個(gè)page上面,但一個(gè)page上不能被多個(gè)對(duì)象共享漏隐,vm-page-size是要根據(jù)存儲(chǔ)的 數(shù)據(jù)大小來設(shè)定的喧半,作者建議如果存儲(chǔ)很多小對(duì)象,page大小最好設(shè)置為32或者64bytes青责;如果存儲(chǔ)很大大對(duì)象挺据,則可以使用更大的page,如果不 確定脖隶,就使用默認(rèn)值扁耐。
    vm-page-size 32

  • 設(shè)置swap文件中的page數(shù)量,由于頁表(一種表示頁面空閑或使用的bitmap)是在放在內(nèi)存中的产阱,婉称,在磁盤上每8個(gè)pages將消耗1byte的內(nèi)存。
    vm-pages 134217728

  • 設(shè)置訪問swap文件的線程數(shù),最好不要超過機(jī)器的核數(shù),如果設(shè)置為0,那么所有對(duì)swap文件的操作都是串行的构蹬,可能會(huì)造成比較長時(shí)間的延遲王暗。默認(rèn)值為4。
    vm-max-threads 4

  • 設(shè)置在向客戶端應(yīng)答時(shí)庄敛,是否把較小的包合并為一個(gè)包發(fā)送俗壹,默認(rèn)為開啟。
    glueoutputbuf yes

  • 指定在超過一定的數(shù)量或者最大的元素超過某一臨界值時(shí)藻烤,采用一種特殊的哈希算法绷雏。
    hash-max-zipmap-entries 64
    hash-max-zipmap-value 512

  • 指定是否激活重置哈希,默認(rèn)為開啟(后面在介紹Redis的哈希算法時(shí)具體介紹)怖亭。
    activerehashing yes

  • 指定包含其它的配置文件涎显,可以在同一主機(jī)上多個(gè)Redis實(shí)例之間使用同一份配置文件,而同時(shí)各個(gè)實(shí)例又擁有自己的特定配置文件兴猩。
    include /path/to/local.conf


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末期吓,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子峭跳,更是在濱河造成了極大的恐慌膘婶,老刑警劉巖缺前,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異悬襟,居然都是意外死亡衅码,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門脊岳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逝段,“玉大人,你說我怎么就攤上這事割捅∧糖” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵亿驾,是天一觀的道長嘹黔。 經(jīng)常有香客問我,道長莫瞬,這世上最難降的妖魔是什么儡蔓? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮疼邀,結(jié)果婚禮上喂江,老公的妹妹穿的比我還像新娘。我一直安慰自己旁振,他們只是感情好获询,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拐袜,像睡著了一般吉嚣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上阻肿,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天瓦戚,我揣著相機(jī)與錄音,去河邊找鬼丛塌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛畜疾,可吹牛的內(nèi)容都是我干的赴邻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼啡捶,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼姥敛!你這毒婦竟也來了银择?” 一聲冷哼從身側(cè)響起变抽,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤曙求,失蹤者是張志新(化名)和其女友劉穎卖词,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體墨榄,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡玄糟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了袄秩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阵翎。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖之剧,靈堂內(nèi)的尸體忽然破棺而出郭卫,到底是詐尸還是另有隱情,我是刑警寧澤背稼,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布贰军,位于F島的核電站,受9級(jí)特大地震影響蟹肘,放射性物質(zhì)發(fā)生泄漏词疼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一疆前、第九天 我趴在偏房一處隱蔽的房頂上張望寒跳。 院中可真熱鬧,春花似錦竹椒、人聲如沸童太。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽书释。三九已至,卻和暖如春赊窥,著一層夾襖步出監(jiān)牢的瞬間爆惧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工锨能, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扯再,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓址遇,卻偏偏與公主長得像熄阻,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子倔约,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容