安裝和使用Redis

Redis是一個(gè)高性能的內(nèi)存數(shù)據(jù)庫(kù)具被,它體積輕巧性能又高蛤袒,在企業(yè)中被廣泛使用嘹锁。

安裝Redis

Windows安裝

Redis是為L(zhǎng)inux系統(tǒng)設(shè)計(jì)的艺糜,但是也有團(tuán)隊(duì)為Windows做了移植幢妄。我們可以到這里下載Redis的Windows版本兔仰。

如果使用NuGet或者Chocolatey的話,也可以用這些工具安裝Windows版的Redis蕉鸳。

# Nuget
PM> Install-Package Redis-64

# Chocolatey
choco install redis-64

不過我不準(zhǔn)備使用Windows 移植版的Redis乎赴,因?yàn)镽edis是為L(zhǎng)inux設(shè)計(jì)的,而且大部分公司使用的服務(wù)器也是Linux系統(tǒng)潮尝,所以我們不妨直接學(xué)習(xí)Linux版本Redis的安裝和使用榕吼。

Linux安裝

相比之下,由于Redis一開始就是設(shè)計(jì)在Linux上使用的勉失,所以Linux安裝就比較簡(jiǎn)單了。主流的Linux系統(tǒng)的官方軟件倉(cāng)庫(kù)中應(yīng)該都有Redis軟件度宦,所以直接可以利用相應(yīng)的包管理器安裝告匠。

例如戈抄,在ArchLinux中,使用下面命令就可以安裝redis了后专。

sudo pacman -S redis

對(duì)于其他Linux系統(tǒng),使用它們的包管理器安裝Redis即可裸诽。


ArchLinux安裝

安裝完成之后,使用下面的命令啟動(dòng)Redis型凳。

# 讓redis開機(jī)自啟
systemctl enable redis

# 啟動(dòng)redis
systemctl start redis

Docker安裝

其實(shí)最好的辦法還是使用Docker安裝Redis丈冬,由于Docker的容器化特性,我們可以在鏡像中打包一個(gè)配置好的Redis埂蕊。比方說,著名的Gitlab的Docker鏡像中就直接打包了Ruby函似、PostGreSQL喉童、Redis等軟件,我們不需要任何額外配置即可使用整合好的Gitlab堂氯。

首先拉取Redis鏡像祖灰。

docker pull redis

然后啟動(dòng)Redis鏡像畔规,其中name可以修改為自己想要的名字。

docker run --name some-redis -d redis

如果需要持久化數(shù)據(jù)三妈,需要在啟動(dòng)命令中指定數(shù)據(jù)卷莫绣,下面的命令默認(rèn)把數(shù)據(jù)存放到/data。如果需要自定義數(shù)據(jù)卷的位置模燥,可以使用--volumes-from some-volume-container-v /docker/host/dir:/data參數(shù)掩宜。

docker run --name some-redis -d redis redis-server --appendonly yes

要使用redis-cli連接Redis服務(wù)器,使用下面的命令辽旋。

docker run -it --link some-redis:redis --rm redis redis-cli -h redis -p 6379

詳細(xì)配置可以參考Docker官方文檔檐迟。

配置Redis

redis.conf

在Linux下,Redis的配置文件默認(rèn)在/etc/redis.conf(可能根據(jù)操作系統(tǒng)不同而產(chǎn)生變化)溶其。配置文件有很多注釋敦间,仔細(xì)閱讀之后我們就可以配置Redis了。完整的樣例文件可以看這里金闽,techstay/redis.conf。文件看起來很大埠褪,其實(shí)大部分都是注釋挤庇,實(shí)際配置并不多嫡秕。

下面來簡(jiǎn)單介紹一些比較重要的配置。由于我也是剛剛開始學(xué)習(xí)Redis昆咽,所以不會(huì)介紹后面的高級(jí)配置掷酗,這里只介紹最基本最重要的配置。

單位換算

如果需要設(shè)置Redis的內(nèi)存大小和文件大小技肩,就需要設(shè)置具體的數(shù)值浮声。單位換算按照下面的進(jìn)制進(jìn)行換算,不帶b的是1000進(jìn)制雳锋,帶b的是1024進(jìn)制羡洁。存儲(chǔ)單位不區(qū)分大小寫,所以gb辛蚊、gB真仲、GB等單位都是相同的。

# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes

IP地址

bind配置Redis服務(wù)器所綁定的IP地址虑凛,默認(rèn)情況下是本地回環(huán)地址桑谍。如果不指定的話,Redis就會(huì)運(yùn)行在所有網(wǎng)絡(luò)接口上锣披。

bind 127.0.0.1

不過需要注意雹仿,綁定到所有接口可能會(huì)引起安全問題。所以考慮到安全問題峻仇,最好讓Redis只綁定固定的幾個(gè)接口邑商。

保護(hù)模式

Redis可以運(yùn)行在保護(hù)模式,這需要顯示將保護(hù)模式打開。

protected-mode yes

如果保護(hù)模式打開含鳞,并且:1)沒有顯式使用bind綁定具體的IP地址芹务;2)沒有設(shè)置密碼,那么Redis只會(huì)監(jiān)聽本地IPv4和IPv6的回環(huán)地址(127.0.0.1::1)以及Unix Domain Sockets熔吗。

端口號(hào)

默認(rèn)端口號(hào)是6379佳晶,如果需要較高的安全性也可以自定義端口號(hào)。

port 6379

客戶端超時(shí)

當(dāng)客戶端在指定時(shí)間(單位:)內(nèi)沒有任何動(dòng)作時(shí)中跌,Redis就會(huì)斷開連接菇篡。默認(rèn)是0驱还,表示不斷開凸克。

timeout 0

TCP連接存貨時(shí)間

這個(gè)參數(shù)指定TCP連接會(huì)保持多少秒闷沥,默認(rèn)是300秒。

tcp-keepalive 300

守護(hù)模式

指定Redis是否以守護(hù)模式運(yùn)行撞鹉。

daemonize no

日志打印

先說說日志級(jí)別颖侄,有debug览祖、verbosenoticewarning四種日志級(jí)別展蒂,顯示的信息從多到少锰悼。如果需要調(diào)試的話,使用前兩種日志級(jí)別耐薯,如果需要在生產(chǎn)環(huán)境中使用丝里,推薦使用后兩種級(jí)別。默認(rèn)值是notice臼婆。

loglevel notice

還可以指定日志文件的位置幌绍,如果不指定的話,默認(rèn)會(huì)直接在控制臺(tái)輸出日志信息痢虹。如果Redis作為守護(hù)模式運(yùn)行主儡,而且沒有指定日志文件位置糜值, 那么日志會(huì)輸出到/dev/null坯墨。

logfile ""

保存到文件

可以設(shè)置Redis定期將內(nèi)存數(shù)據(jù)保存到文件病往,以免服務(wù)器關(guān)閉之后文件丟失停巷。在這里可以設(shè)置多個(gè)值,例如下面第一行表示每隔900秒蕾各,如果至少有1個(gè)鍵發(fā)生改變則保存數(shù)據(jù)庆揪;第三行表示每隔60秒,如果至少10000個(gè)鍵發(fā)生改變則保存數(shù)據(jù)吝羞。

save 900 1
save 300 10
save 60 10000

密碼

使用密碼可以提高Redis服務(wù)器的安全性内颗。需要注意均澳,由于Redis的高性能特性,一個(gè)用戶一秒鐘最高可以嘗試15萬次密碼负懦。所以為了保證安全性纸厉,密碼需要盡量設(shè)置的長(zhǎng)一些五嫂。

requirepass foobared

配置文件還有其他一些配置,我就不介紹了躯枢。如果需要更詳細(xì)的配置可以直接查看配置文件的注釋槐臀,對(duì)于每個(gè)配置項(xiàng)都有詳細(xì)的介紹水慨。

Docker配置

Docker的Redis鏡像沒有redis.conf文件敬扛,如果你需要這個(gè)文件來配置Redis朝抖,可以自己打包一個(gè)包含redis.conf的鏡像治宣。這需要編寫類似下面這樣的Dockerfile

FROM redis
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]

當(dāng)然其實(shí)完全不用這么麻煩坏怪,直接在啟動(dòng)Redis鏡像的時(shí)候就可以指定配置文件的位置豌拙。這種辦法比較靈活按傅,而且很簡(jiǎn)單,所以如果沒有特別需求的話這樣就可以了唯绍。

docker run -v /myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis redis-server /usr/local/etc/redis/redis.conf

使用Redis

redis-cli

首先來介紹一下Redis的命令行工具redis-cli况芒,我們對(duì)Redis服務(wù)器進(jìn)行操作主要通過它來進(jìn)行。

如果要查看幫助信息耐版,可以使用redis-cli --help命令压汪,下面列出了一部分輸出止剖。

# redis-cli --help
redis-cli 3.2.8

Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]
  -h <hostname>      Server hostname (default: 127.0.0.1).
  -p <port>          Server port (default: 6379).
  -s <socket>        Server socket (overrides hostname and port).
  -a <password>      Password to use when connecting to the server.

如果主機(jī)名和端口號(hào)都是默認(rèn)值的話,可以直接輸入redis-cli進(jìn)入交互式界面亭引。如果需要連接到其他主機(jī)上的Redis服務(wù)器皮获,可以使用-h參數(shù)指定主機(jī)名,使用-p參數(shù)指定端口號(hào)购公,使用-a參數(shù)指定密碼君丁。

# redis-cli
127.0.0.1:6379>

Redis命令

進(jìn)入交互式界面之后,我們可以使用Redis提供的各種命令操作服務(wù)器了橡庞。Redis的命令有很多印蔗,作用也各不相同。大家可以到Redis Command查看所有命令和用途吧趣。如果不喜歡英文的話强挫,可以查看Redis 命令參考薛躬,這是漢化過的命令文檔。

存取數(shù)據(jù)

這里我就列舉一些常用的命令八匠。首先是存取命令趴酣,使用set 鍵 值來保存一個(gè)數(shù)據(jù)岖寞,保存成功后會(huì)返回OK

127.0.0.1:6379> set fuck fuck
OK

保存之后床嫌,可以使用get 鍵來獲取這個(gè)值胸私。

127.0.0.1:6379> get fuck
"fuck"

查詢鍵

keys 模式用于查詢符合模式的鍵的名字岁疼,支持的查詢方式是GLOB類型的,支持*瑰排、?暖侨、[a-b][^a]等通配符京郑。

127.0.0.1:6379> keys *
1) "fuck"
2) "food_num"

配置Redis

和存取命令類似葫掉,還有config getconfig set用于獲取和設(shè)置配置文件中的配置俭厚。比如說,要獲取配置文件的所有值叼丑,使用下面的命令扛门。

127.0.0.1:6379> config get *

再比如尖飞,如果要設(shè)置Redis的登錄密碼,可以這么做贞铣。然后退出redis-cli并重新連接沮明,即可生效。

127.0.0.1:6379> config set requirepass 123456

認(rèn)證

如果Redis服務(wù)器設(shè)置了密碼酱畅,在進(jìn)行任何操作之前都需要認(rèn)證才能進(jìn)行纺酸,否則會(huì)提示NOAUTH址否。

127.0.0.1:6379> get food_num
(error) NOAUTH Authentication required.

這時(shí)候需要使用auth命令進(jìn)行認(rèn)證,才能繼續(xù)操作樊诺。

127.0.0.1:6379> auth 123456

當(dāng)然词爬,也可以直接在redis-cli連接的時(shí)候使用-a參數(shù)指定密碼。

redis-cli -a 123456

超時(shí)和持久

可以使用expire命令為一個(gè)鍵設(shè)置超時(shí)值(單位:秒)痪寻,在這里時(shí)間之后該值會(huì)被刪除虽惭。

127.0.0.1:6379> expire fuck 10
(integer) 1

如果10秒之后再次查看該值,會(huì)發(fā)現(xiàn)已經(jīng)不存在了芽唇。

127.0.0.1:6379> get fuck
(nil)

相應(yīng)的匆笤,還有persist命令,會(huì)將該數(shù)據(jù)的超時(shí)值取消庶诡,這樣只要數(shù)據(jù)庫(kù)還在咆课,這個(gè)數(shù)據(jù)就會(huì)一直存在书蚪。

127.0.0.1:6379> persist fuck
(integer) 0

除了使用expire命令為已存在的值設(shè)置超時(shí)值,還可以在設(shè)置數(shù)據(jù)的時(shí)候直接指定超時(shí)值晴玖。

set key 100 ex 10

在指定了超時(shí)值之后呕屎,可以使用ttl命令查看距離超時(shí)值還剩多少時(shí)間敬察。

127.0.0.1:6379> ttl fuck
(integer) 17

退出

最后,可以使用quit命令退出命令行界面琅催。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末藤抡,一起剝皮案震驚了整個(gè)濱河市缠黍,隨后出現(xiàn)的幾起案子药蜻,更是在濱河造成了極大的恐慌,老刑警劉巖贸典,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廊驼,死亡現(xiàn)場(chǎng)離奇詭異惋砂,居然都是意外死亡西饵,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驯嘱,“玉大人宙拉,你說我怎么就攤上這事』吞” “怎么了锥忿?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵敬鬓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我杈抢,道長(zhǎng)仑性,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮晨汹,結(jié)果婚禮上淘这,老公的妹妹穿的比我還像新娘。我一直安慰自己朦乏,他們只是感情好氧骤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布筹陵。 她就那樣靜靜地躺著朦佩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宋彼。 梳的紋絲不亂的頭發(fā)上仙畦,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天慨畸,我揣著相機(jī)與錄音寸士,去河邊找鬼碴卧。 笑死乃正,一個(gè)胖子當(dāng)著我的面吹牛烫葬,可吹牛的內(nèi)容都是我干的凡蜻。 我是一名探鬼主播搭综,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼划栓!你這毒婦竟也來了兑巾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤忠荞,失蹤者是張志新(化名)和其女友劉穎蒋歌,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體委煤,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡堂油,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年碧绞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了府框。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡讥邻,死狀恐怖迫靖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情兴使,我是刑警寧澤系宜,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站发魄,受9級(jí)特大地震影響盹牧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜励幼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一欢策、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赏淌,春花似錦踩寇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)辣卒。三九已至,卻和暖如春睛榄,著一層夾襖步出監(jiān)牢的瞬間荣茫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工场靴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留啡莉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓旨剥,卻偏偏與公主長(zhǎng)得像咧欣,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子轨帜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理魄咕,服務(wù)發(fā)現(xiàn),斷路器蚌父,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • Docker — 云時(shí)代的程序分發(fā)方式 要說最近一年云計(jì)算業(yè)界有什么大事件哮兰?Google Compute Engi...
    ahohoho閱讀 15,532評(píng)論 15 147
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,811評(píng)論 6 342
  • 焦文英 筆者是一名銀行的個(gè)貸客戶經(jīng)理喝滞,在工作中,幾乎每個(gè)客戶都十分關(guān)心還款方式膏秫,等額本息和等額本金右遭,究竟哪種更實(shí)惠...
    輝夏閱讀 14,643評(píng)論 0 0
  • 酷暑難忍 。荔睹。狸演。 初伏夢(mèng)幻水床柔情聲,潺潺瀝水清幽幽 僻他。宵距。。 中伏幻想手握冰淇淋吨拗,綠蔭樹下秋千蕩 满哪。。劝篷。 末伏只恨...
    畫欣閱讀 270評(píng)論 0 1