前言
本文小新為大家?guī)?超詳細(xì)Redis入門教程——Redis 的安裝與配置 相關(guān)知識(shí),具體內(nèi)容包括Redis 的安裝
,連接前的配置
,Redis 客戶端分類
(包括:命令行客戶端
,圖形界面客戶端
,Java 代碼客戶端
),Redis 配置文件詳解
等進(jìn)行詳盡介紹~
不積跬步,無以至千里;不積小流,無以成江海。每天進(jìn)步一點(diǎn)點(diǎn),在成為強(qiáng)者的路上,小新與大家共同成長!
??博主主頁:小新要變強(qiáng) 的主頁
??Java全棧學(xué)習(xí)路線可參考:【Java全棧學(xué)習(xí)路線】最全的Java學(xué)習(xí)路線及知識(shí)清單,Java自學(xué)方向指引,內(nèi)含最全Java全棧學(xué)習(xí)技術(shù)清單~
??算法刷題路線可參考:算法刷題路線總結(jié)與相關(guān)資料分享,內(nèi)含最詳盡的算法刷題路線指南及相關(guān)資料分享~
??Java微服務(wù)開源項(xiàng)目可參考:企業(yè)級(jí)Java微服務(wù)開源項(xiàng)目(開源框架,用于學(xué)習(xí)、畢設(shè)、公司項(xiàng)目、私活等,減少開發(fā)工作,讓您只關(guān)注業(yè)務(wù)?。?/p>
??本文上接:超詳細(xì)Redis入門教程——Redis概述
目錄
本文介紹的是將Redis 安裝到 Linux 系統(tǒng)中。
一、Redis 的安裝
1??克隆并配置主機(jī)
- 修改主機(jī)名:
/etc/hostname
- 修改網(wǎng)絡(luò)配置:
/etc/sysconfig/network-scripts/ifcfg-ens33
2??安裝前的準(zhǔn)備工作
??(1)安裝 gcc
由于 Redis 是由 C/C++語言編寫的,而從官網(wǎng)下載的 Redis 安裝包是需要編譯后才可安裝的,所以對其進(jìn)行編譯就必須要使用相關(guān)編譯器。對于 C/C++語言的編譯器,使用最多的是gcc 與 gcc-c++,而這兩款編譯器在 CentOS7 中是沒有安裝的,所以首先要安裝這兩款編譯器。
GCC,GNU Compiler Collection,GNU 編譯器集合。
??(2) 下載 Redis
Redis 的官網(wǎng)為:http://redis.io 。點(diǎn)擊鏈接可以直接進(jìn)行下載。
??(3) 上傳到 Linux
將下載好的壓縮包上傳到 Linux 的/opt/tools 目錄中。
3??安裝 Redis
??(1) 解壓 Redis
將 Redis 解壓到/opt/apps 目錄中。
進(jìn)入到/opt/apps 目錄中再將 Redis 解壓包目錄更名為 redis(不更名也無所謂)。
??(2) 編譯
編譯過程是根據(jù) Makefile 文件進(jìn)行的,而 Redis 解壓包中已經(jīng)存在該文件了。所以可以直接進(jìn)行編譯了。
進(jìn)入到解壓目錄中,然后執(zhí)行編譯命令 make。
當(dāng)看到如下提示時(shí),表示編譯成功。
??(3) 安裝
在 Linux 中對于編譯過的安裝包執(zhí)行 make install 進(jìn)行安裝。
可以看到,共安裝了三個(gè)組件:redis 服務(wù)器、客戶端與一個(gè)性能測試工具 benchmark。
??(4) 查看 bin 目錄
安裝完成后,打開/usr/local/bin 目錄,可以看到出現(xiàn)了很多的文件。
通過 echo $PATH 可以看到,/usr/local/bin 目錄是存在于該系統(tǒng)變量中的,這樣這些命令就可以在任意目錄中執(zhí)行了。
4??Redis 啟動(dòng)與停止
??(1) 前臺(tái)啟動(dòng)
在任意目錄執(zhí)行 redis-server 命令即可啟動(dòng) Redis。這種啟動(dòng)方式會(huì)占用當(dāng)前命令行窗口。
再開啟一個(gè)會(huì)話窗口,可以查看到當(dāng)前的 Redis 進(jìn)程,默認(rèn)端口號(hào)為 6379。
通過 Ctrl + C 命令可以停止 Redis。
??(2) 命令式后臺(tái)啟動(dòng)
使用 nohub 命令,最后再添加一個(gè)&符,可以使要啟動(dòng)的程序在后臺(tái)以守護(hù)進(jìn)程方式運(yùn)行。這樣的好處是,進(jìn)程啟動(dòng)后不會(huì)占用一個(gè)會(huì)話窗口,且其還會(huì)在當(dāng)前目錄,即運(yùn)行啟動(dòng)命令的當(dāng)前目錄中創(chuàng)建一個(gè) nohup.out 文件用于記錄 Redis 的操作日志。
??(3) Redis 的停止
通過 redis-cli shutdown 命令可以停止 Redis。
??(4) 配置式后臺(tái)啟動(dòng)
使用 nohup 命令可以使 Redis 后臺(tái)啟動(dòng),但每次都要鍵入 nohup 與&符,比較麻煩??梢酝ㄟ^修改 Linux 中 Redis 的核心配置文件 redis.conf 達(dá)到后臺(tái)啟動(dòng)的目的。redis.conf 文件在Redis 的安裝目錄根下。
將 daemonize 屬性值由 no 改為 yes,使 Redis 進(jìn)程以守護(hù)進(jìn)程方式運(yùn)行。
修改后再啟動(dòng) Redis,就無需再鍵入 nohup 與&符了,但必須要指定啟動(dòng)所使用的 Redis 配置文件。這是為什么呢?
使用 nohup redis-server &命令啟動(dòng) Redis 時(shí),啟動(dòng)項(xiàng)中已經(jīng)設(shè)置好了 Redis 各個(gè)參數(shù)的默認(rèn)值,Redis 會(huì)按照這些設(shè)置的參數(shù)進(jìn)行啟動(dòng)。但這些參數(shù)是可以在配置文件中進(jìn)行修改的,修改后,需要在啟動(dòng)命令中指定要加載的配置文件,這樣,配置文件中的參數(shù)值將覆蓋原默認(rèn)值。
Redis 已經(jīng)給我們提供好了配置文件模板,是 Redis 安裝目錄的根目錄下的 redis.conf 文件。由于剛剛對 redis.conf 配置文件做了修改,所以在開啟 Redis 時(shí)需要顯示指出要加載的配置文件。配置文件應(yīng)緊跟在 redis-server 的后面。
二、連接前的配置
Redis 是一個(gè)內(nèi)存數(shù)據(jù)庫服務(wù)器,就像 MySQL 一樣,對其操作也需要通過客戶端進(jìn)行。若要使遠(yuǎn)程主機(jī)上的客戶端能夠連接并訪問到服務(wù)端的 Redis,則服務(wù)端首先要做如下配置。
1??綁定客戶端 IP
Redis 可以通過修改配置文件來限定可以訪問自己的客戶端 IP。
以上設(shè)置后,只允許當(dāng)前主機(jī)訪問當(dāng)前的 Redis,其它主機(jī)均不可訪問。所以,如果不想限定訪問的客戶端,只需要將該行注釋掉即可。
2??關(guān)閉保護(hù)模式
默認(rèn)保護(hù)模式是開啟的。其只允許本機(jī)的客戶端訪問,即只允許自己訪問自己。但生產(chǎn)中應(yīng)該關(guān)閉,以確保其它客戶端可以連接 Redis。
3??設(shè)置訪問密碼
為 Redis 設(shè)置訪問密碼,可以對要讀/寫 Redis 的用戶進(jìn)行身份驗(yàn)證。沒有密碼的用戶可以登錄Redis,但無法訪問。
??(1) 密碼設(shè)置
訪問密碼的設(shè)置位置在 redis.conf 配置文件中。默認(rèn)是被注釋掉的,沒有密碼。
沒有通過密碼登錄的用戶,無法讀/寫 Redis。
??(2) 使用密碼
對于密碼的使用,有兩種方式:登錄時(shí)未使用密碼,則訪問時(shí)先輸入密碼;登錄時(shí)直接使用密碼登錄,訪問時(shí)無需再輸入密碼。
A、 登錄時(shí)未使用密碼
B、 登錄時(shí)使用密碼
C、 退出時(shí)使用密碼
??(3) 注意
為了方便后面的介紹,我們這里就不設(shè)置訪問密碼了,直接將其注釋掉即可。
4??禁止/重命名命令
后面要學(xué)習(xí)兩個(gè)非常危險(xiǎn)的命令:flushal 與 flushdb。它們都是用于直接刪除整個(gè) Redis 數(shù)據(jù)庫的。若讓用戶可以隨便使用它們,可能會(huì)危及數(shù)據(jù)安全。Redis 可以通過修改配置文件來禁止使用這些命令,或重命名這些命令。以下配置,禁用了 flushall 與 flushdb 命令。
當(dāng)然,在學(xué)習(xí)過程中暫時(shí)不禁用它們。
5??啟動(dòng) Redis
當(dāng)然,若要使客戶端能夠連接 Redis,則必須開啟服務(wù)端的 Redis。
三、Redis 客戶端分類
Redis 客戶端也像 MySQL 客戶端一樣有多種類型:命令行客戶端、圖形界面客戶端、Java 代碼客戶端。
1??命令行客戶端
Redis 提供了基本的命令行客戶端。打開命令行客戶端的命令為 redis-cli。
- -h:指定要連接的 Redis 服務(wù)器的 IP。
- -p:指定要連接的 Redis 的端口號(hào)。
若連接的是本機(jī) Redis,且端口號(hào)沒有改變,保持默認(rèn)的 6379,則-h 與-p 選項(xiàng)可以省略不寫。
2??圖形界面客戶端
??(1) Redis Desktop Manager
Redis 的圖形界面客戶端很多,其中較出名的是 Redis Desktop Manager 的客戶端。不過,該軟件原來是免費(fèi)軟件,從 0.8.8 版本后變?yōu)榱松虡I(yè)化收費(fèi)軟件。官網(wǎng)為:https://resp.app/
??(2) RedisPlus
RedisPlus 是為 Redis 可視化管理開發(fā)的一款開源免費(fèi)的桌面客戶端軟件,支持 Windows 、Linux、Mac 三大系統(tǒng)平臺(tái),RedisPlus 提供更加高效、方便、快捷的使用體驗(yàn),有著更加現(xiàn)代化的用戶界面風(fēng)格。
RedisPlus 的官網(wǎng)地址為 https://gitee.com/MaxBill/RedisPlus。
3??Java 代碼客戶端
所謂 Java 代碼客戶端就是一套操作 Redis 的 API,其作用就像 JDBC 一樣,所以 Java 代碼客戶端其實(shí)就是一個(gè)或多個(gè) Jar 包,提供了對 Redis 的操作接口。
對 Redis 操作的 API 很多,例如 jdbc-redis、jredis 等,但最常用也是最有名的是 Jedis。
四、Redis 配置文件詳解
Redis 的核心配置文件 redis.conf 在安裝根目錄下,默認(rèn)包含 2000 多行。這些內(nèi)容根據(jù)功能被劃分為了很多部分。下面將一些重要部分進(jìn)行介紹。
1??基礎(chǔ)說明
這部分主要是給出一些說明,包含三部分意思:
- 第 1-6 行用于說明,如果要啟動(dòng) Redis,需要指出配置文件的路徑。
- 第 8-16 行用于說明當(dāng)前配置文件中可以使用的的容量單位及意義。
- 第 18 行用于說明這些容量單位沒有大小寫之分。
2??includes
指定要在當(dāng)前配置文件中包含的配置文件。這樣做的目的主要是便于配置信息管理:可以將不同場景的配置都進(jìn)行單獨(dú)定義,然后在當(dāng)前核心配置文件中根據(jù)不同場景選擇包含進(jìn)不同的配置文件。
3??modules
Redis 配置文件中可以通過加載不同的第三方模塊,來增強(qiáng)、擴(kuò)展 Redis 的功能。
4??network
Network 配置模塊是比較重要的部分,主要進(jìn)行網(wǎng)絡(luò)相關(guān)的配置。其中較重要的有:
??(1) bind
指定可以訪問當(dāng)前 Redis 服務(wù)的客戶端 IP,默認(rèn)只允許本地訪問,即當(dāng)前 Redis 自己訪問自己。為了使所有其它客戶端都可訪問,一般要將其注釋掉。
??(2) protected-mode
默認(rèn)保護(hù)模式是開啟的。其只允許本機(jī)的客戶端訪問,即只允許自己訪問自己。但生產(chǎn)中應(yīng)該關(guān)閉,以確保其它客戶端可以連接 Redis。
??(3) port
Redis 監(jiān)聽的連接端口號(hào),默認(rèn) 6379。
??(4) tcp-backlog
tcp-backlog 是一個(gè) TCP 連接的隊(duì)列,其主要用于解決高并發(fā)場景下客戶端慢連接問題。這里設(shè)置的值就是這個(gè)隊(duì)列的長度。該隊(duì)列與 TCP 連接的三次握手有關(guān)。不同的 Linux 內(nèi)核, backlog 隊(duì)列中存放的元素(客戶端連接)類型是不同的。
- Linux 內(nèi)核 2.2 版本之前,該隊(duì)列中存放的是已完成了第一次握手的所有客戶端連接,其中就包含已完成三次握手的客戶端連接。當(dāng)然,此時(shí)的backlog 隊(duì)列中的連接也具有兩種狀態(tài):未完成三次握手的連接狀態(tài)為 SYN_RECEIVED,已完成三次握手的連接狀態(tài)為ESTABLISHED。只有ESTABLISHED 狀態(tài)的連接才會(huì)被 Redis 處理。
- Linux 內(nèi)核 2.2 版本之后 TCP 系統(tǒng)中維護(hù)了兩個(gè)隊(duì)列:SYN_RECEIVED 隊(duì)列與 ESTABLISHED隊(duì)列。SYN_RECEIVED 隊(duì)列中存放的是未完成三次握手的連接,ESTABLISHED 隊(duì)列中存放的是已完成三次握手的連接。此時(shí)的backlog 就是 ESTABLISHED 隊(duì)列。
查看 Linux 內(nèi)核版本:
TCP 中的 backlog 隊(duì)列的長度在 Linux 中由內(nèi)核參數(shù) somaxconn 來決定。所以,在 Redis 中該隊(duì)列的長度由 Redis 配置文件設(shè)置與 somaxconn 來共同決定:取它們中的最小值。
查看當(dāng)前 Linux 內(nèi)核中 somaxconn 的值。
生產(chǎn)環(huán)境下(特別是高并發(fā)場景下),backlog 的值最好要大一些,否則可能會(huì)影響系統(tǒng)性能。
修改/etc/sysctl.conf 文件,在文件最后添加如下內(nèi)容:
修改過后可以重啟虛擬機(jī),也可以通過執(zhí)行如下命令來使新的修改生效。
??(5) timeout
空閑超時(shí)。當(dāng)客戶端與 Redis 間的空閑時(shí)間超過該時(shí)長后,連接自動(dòng)斷開。單位秒。默認(rèn)值為 0,表示永遠(yuǎn)不超時(shí)。
??(6) tcp-keepalive
該配置主要用于設(shè)置 Redis 檢測與其連接的所有客戶端的存活性時(shí)間間隔,單位秒。一般是在空閑超時(shí) timeout 設(shè)置為 0 時(shí)進(jìn)行配置。
5??general
??(1) daemonize
該配置可以控制 Redis 啟動(dòng)是否采用守護(hù)進(jìn)程方式,即是否是后臺(tái)啟動(dòng)。yes 是采用后臺(tái)啟動(dòng)。
??(2) pidfile
該配置用于指定 Redis 運(yùn)行時(shí) pid 寫入的文件,無論 Redis 是否采用守護(hù)進(jìn)程方式啟動(dòng), pid 都會(huì)寫入到該配置的文件。
注意,如果沒有配置 pid 文件,不同的啟動(dòng)方式,pid 文件的產(chǎn)生效果是不同的:
- 采用守護(hù)進(jìn)程方式啟動(dòng)(后臺(tái)啟動(dòng),daemonize 為 yes):pid 文件為/var/run/redis.pid。
- 采用前臺(tái)啟動(dòng)(daemonize 為 no):不生產(chǎn) pid 文件
??(3) loglevel
配置日志的級(jí)別。Redis 中共有四個(gè)級(jí)別,由低到高依次是:
- debug:可以獲取到很多的信息,一般在開發(fā)和測試時(shí)使用。
- verbose:可以獲取到很多不太有用的信息,但不像 debug 級(jí)別那么多。
- notice:可以獲取到在生產(chǎn)中想獲取到的適當(dāng)多的信息,默認(rèn)級(jí)別。
- warning:只記錄非常重要/關(guān)鍵的信息。
??(4) logfile
指定日志文件。如果設(shè)置為空串,則強(qiáng)制將日志記錄到標(biāo)準(zhǔn)輸出設(shè)備(顯示器)。如果使用的是守護(hù)進(jìn)程啟動(dòng)方式,設(shè)置為空串,則意味著會(huì)將日志發(fā)送到設(shè)備/dev/null(空設(shè)備)。
??(5) databases
設(shè)置數(shù)據(jù)庫的數(shù)量。默認(rèn)數(shù)據(jù)庫是 0 號(hào)數(shù)據(jù)庫??梢允褂?select <dbid>
在每個(gè)連接的基礎(chǔ)上選擇一個(gè)不同的數(shù)據(jù)庫,其中 dbid 是介于 0 和’databases’-1’之間的數(shù)字。
6??security
用戶設(shè)置 ACL 權(quán)限、Redis 訪問密碼相關(guān)配置。該模塊中最常用的就是 requirepass 屬性。
設(shè)置客戶端訪問密碼。注釋掉后則沒有密碼。
7??clients
該模塊用于設(shè)置與客戶端相關(guān)的屬性,其中僅包含一個(gè)屬性 maxclients。 maxclients 用于設(shè)置 Redis 可并發(fā)處理的客戶端連接數(shù)量,默認(rèn)值為 10000。如果達(dá)到了該最大連接數(shù),則會(huì)拒絕再來的新連接,并返回一個(gè)異常信息:已達(dá)到最大連接數(shù)。
注意,該值不能超過 Linux 系統(tǒng)支持的可打開的文件描述符最大數(shù)量閾值。查看該閾值的方式如下。修改該值,可以通過修改/etc/secutiry/limits.conf 文件(自己查)。
8??memory management
該配置可以控制最大可用內(nèi)存及相關(guān)內(nèi)容移除問題。
??(1) maxmemory
將內(nèi)存使用限制設(shè)置為指定的字節(jié)數(shù)。當(dāng)達(dá)到內(nèi)存限制時(shí),Redis 將根據(jù)選擇的逐出策略maxmemory-policy 嘗試刪除符合條件的 key。
如果不能按照逐出策略移除 key,則會(huì)給寫操作命令返回 error,但對于只讀的命令是沒有影響的。
??(2) maxmamory-policy
該屬性用于設(shè)置,當(dāng)達(dá)到 maxmemory 時(shí),Redis 將如何選擇要移除的內(nèi)容。當(dāng)然,如果沒有符合相應(yīng)策略的內(nèi)容要?jiǎng)h除,則在執(zhí)行寫入命令時(shí)會(huì)給出 errors 的響應(yīng)。Redis 中共支持 8 種移除策略:
- volatile-lru:使用近似 LRU 算法移除,僅適用于設(shè)置了過期時(shí)間的 key。
- allkeys-lru:使用近似 LRU 算法移除,可適用于所有類型的 key。
- volatile-lfu:使用近似 LFU 算法移除,僅適用于設(shè)置了過期時(shí)間的 key。
- allkeys-lfu:使用近似 LFU 算法移除,可適用于所有類型的 key。
- volatile-random:隨機(jī)移除一個(gè) key,僅適用于設(shè)置了過期時(shí)間的 key。
- allkeys-random:隨機(jī)移除一個(gè) key,可適用于所有類型的 key。
- volatile-ttl:移除距離過期時(shí)間最近的 key。
- noeviction:不移除任何內(nèi)容,只是在寫操作時(shí)返回一個(gè)錯(cuò)誤,默認(rèn)值。
??(3) maxmemory-samples
該屬性用于指定挑選要?jiǎng)h除的 key 的樣本數(shù)量。樣本的選擇采用的是 LRU 算法,其不能修改。但從樣本中再選擇要移除的 key,則采用的是 maxmamory-policy 指定的策略。
??(4) maxmemory-eviction-tenacity
設(shè)置移除容忍度。數(shù)值越小表示容忍度越低,需要移除的數(shù)據(jù)移除延遲越??;數(shù)值越大表示容忍度越高,需要移除的數(shù)據(jù)移除延遲越大。
9??threaded I/O
該配置模塊用于配置 Redis 對多線程 IO 模型的支持。
??(1) io-threads
該屬性用于指定要啟用多線程 IO 模型時(shí),要使用的線程數(shù)量。
查看當(dāng)前系統(tǒng)中包含的 CPU 數(shù)量:
??(2) io-threads-do-reads
該屬性用于啟用多線程 IO 模型中的多線程處理讀請求的能力。
后記
文章來源:http://www.zghlxwxcb.cn/news/detail-418585.html
??Java全棧學(xué)習(xí)路線可參考:【Java全棧學(xué)習(xí)路線】最全的Java學(xué)習(xí)路線及知識(shí)清單,Java自學(xué)方向指引,內(nèi)含最全Java全棧學(xué)習(xí)技術(shù)清單~
??算法刷題路線可參考:算法刷題路線總結(jié)與相關(guān)資料分享,內(nèi)含最詳盡的算法刷題路線指南及相關(guān)資料分享~文章來源地址http://www.zghlxwxcb.cn/news/detail-418585.html
到了這里,關(guān)于超詳細(xì)Redis入門教程——Redis 的安裝與配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!