CentOS7 安裝 Redis 7.0.2

来源:https://www.cnblogs.com/broadm/archive/2022/06/25/16412013.html
-Advertisement-
Play Games

安裝 Redis # 首先安裝依賴gcc, 後面需要使用make編譯redis yum install gcc -y # 進入 /usr/local/src 目錄, 把源碼下載到這裡 cd /usr/local/src # 下載 redis 7.0.2 的源碼,github被牆,可以使用國內的地址 ...


安裝 Redis


# 首先安裝依賴gcc, 後面需要使用make編譯redis
yum install gcc -y

# 進入 /usr/local/src 目錄, 把源碼下載到這裡
cd /usr/local/src

# 下載 redis 7.0.2 的源碼,github被牆,可以使用國內的地址
wget http://download.redis.io/releases/redis-7.0.2.tar.gz

# 解壓縮
tar zxvf redis-7.0.2.tar.gz

# 進入解壓後的文件夾
cd redis-7.0.2

# 編譯並安裝 redis, 漫長的等待...
make && make install

# 安裝完成後,redis會被預設安裝在  /usr/local/bin/
# 查看下這個目錄下的文件,可以看到有 redis-server, 這個文件就是redis的服務程式了
ls /usr/local/bin/

啟動 Redis

# 因為redis被預設安裝在/usr/local/bin,這個目錄預設就在系統的環境變數中(不信,你可以使用 env 命令,查看一下你的PATH是不是有)
# 所以,我們可以在任意位置運行 redis-server 來啟動 redis
redis-server

啟動成功,你可以看到如下界面:

redis啟動成功.png

但是這裡有些問題:

  • redis的預設埠是 6379, 假如這個埠被占用了怎麼辦?
[[email protected] ~]# redis-server
6610:C 25 Jun 2022 15:47:53.378 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
6610:C 25 Jun 2022 15:47:53.378 # Redis version=7.0.2, bits=64, commit=00000000, modified=0, pid=6610, just started
6610:C 25 Jun 2022 15:47:53.378 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
6610:M 25 Jun 2022 15:47:53.379 * Increased maximum number of open files to 10032 (it was originally set to 1024).
6610:M 25 Jun 2022 15:47:53.379 * monotonic clock: POSIX clock_gettime
6610:M 25 Jun 2022 15:47:53.380 # Warning: Could not create server TCP listening socket *:6379: bind: Address already in use
6610:M 25 Jun 2022 15:47:53.380 # Failed listening on port 6379 (TCP), aborting.

  • redis-server 預設以前臺方式啟動,即啟動完成後,一直占據命令視窗,我們無法再執行其他操作了,這明顯不合適,我們需要的是後臺啟動

修改配置文件

好在 redis 提供了配置文件,我們可以配置redis,修改預設埠,修改啟動方式為後臺啟動,修改密碼等等.

還記得上面,我們解壓redis的目錄嗎? 沒錯,就是 /usr/local/src/redis-7.0.2, 讓我們進入到這個目錄, redis的配置文件就在這裡 redis.conf

# 進入redis的解壓目錄
cd /usr/local/src/redis-7.0.2

# 查看目錄內容, 你會看到 redis.conf
ls

# 在編輯 redis.conf 之前, 好的做法是先備份它
cp redis.conf redis.conf.backup

# 好了,現在我們可以大膽的修改 redis.conf 了
vim redis.conf

後臺啟動

首先我們搜索 daemonize , vim的查找操作別忘了(不會的話自己百度)
找到 daemonize no 這一行, 然後我們把 no 修改為 yes, 這樣就可以後臺啟動redis了

daemonize yes

設置密碼

我們搜索 requirepass,找到 # requirepass foobared 這一行, 我們可以看到預設密碼這一行被註釋了,說明預設沒有開啟密碼保護

requirepass 你的密碼

設置埠

搜索 port, 你會發現 port 6379 這一行, 需要的話你就改它吧(比如,你的6379埠被其他程式占用了)

port 6379

允許遠程訪問

找到 bind 127.0.0.1 -::1, 修改為

bind 0.0.0.0

修改其他配置請查看官方文檔

OK, 改完了配置文件, 我們要怎麼使用它呢? 很簡單:
執行下麵的命令,必須要在 redis.conf 所在的文件夾, 就是上面的 /usr/local/src/redis-7.0.2
如果你離開這個文件夾了,請使用完整的路徑 redis-server /usr/local/src/redis-7.0.2/redis.conf

redis-server redis.conf

現在redis就是以後臺的方式啟動了,看看我的實操:

[[email protected] redis-7.0.2]# redis-server redis.conf
[[email protected] redis-7.0.2]# ps -ef | grep redis
root       6573   1970  0 15:47 pts/0    00:00:05 redis-server *:6379
root       6704   6583  0 16:25 pts/1    00:00:00 grep --color=auto redis
[[email protected] redis-7.0.2]# 

開機自啟

這種啟動的方式很low啊,每次重啟機器的話,是不是都要手動敲命令啊
沒錯,你需要開機自啟,也就是需要搞成系統服務,讓我們開始吧:

首先,你要為redis編寫一個系統服務文件:

vim /etc/systemd/system/redis.service

文件內容如下:

[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking

ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-7.0.2/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

註意: 上面的 ExecStart , 如果你按照我的方式一步步來的話,不用改,否則修改為自己的實際安裝路徑

重新載入系統服務

systemctl daemon-reload

設置開機自啟:

systemctl enable redis

啟動,停止,卸載,查看狀態

# 啟動redis服務
systemctl start redis

# 查看服務狀態
systemctl status redis

# 停止服務
systemctl stop redis

# 取消開機自動啟動(卸載服務)
systemctl disabled redis
  • 如果你在啟動redis之後, 使用 systemctl status redis 發現,
    沒有啟動成功, 這可能是因為,你之前已經啟動了redis了,首先把之前啟動的關閉後,再使用 systemctl start redis

  • 你可以使用 ps -ef | grep redis 查看正在運行的redis進程

  • 使用 kill -9 進程ID 殺死正在運行的進程

補充: 如果您的伺服器開啟了防火牆,您需要把redis的埠放行,或者您是使用的雲伺服器,您同樣需要配置防火牆

正常的運行狀態應該是下麵這樣的,祝你好運!!!

[[email protected] redis-7.0.2]# systemctl status redis
● redis.service - redis-server
   Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: disabled)
   Active: active (running) since 六 2022-06-25 16:46:10 CST; 3s ago
  Process: 6907 ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-7.0.2/redis.conf (code=exited, status=0/SUCCESS)
 Main PID: 6908 (redis-server)
    Tasks: 5
   Memory: 6.7M
   CGroup: /system.slice/redis.service
           └─6908 /usr/local/bin/redis-server 127.0.0.1:6379

6月 25 16:46:10 broadm systemd[1]: Starting redis-server...
6月 25 16:46:10 broadm systemd[1]: Started redis-server.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、什麼是智能指針 一般來講C++中對於指針指向的對象需要使用new主動分配堆空間,在使用結束後還需要主動調用delete釋放這個堆空間。為了使得自動、異常安全的對象生存期管理可行,就出現了智能指針這個概念。簡單來看智能指針是 RAII(Resource Acquisition Is Initial ...
  • 我們在做採集數據的時候,過快或者訪問頻繁,或者一訪問就給彈出驗證碼,然後就蚌珠了~ 今天就給大家來一個簡單處理驗證碼的方法 環境模塊 本文使用的是 Python和pycharm 這裡需要用到一個 ddddocr 模塊 ,這是別人開源寫好的一個東西,簡單又好用,但是精確度差一點點,但是還是非常好用的。 ...
  • mysql服務端整體架構 主要分為兩部分,server層和存儲引擎 server層包括連接器、查詢緩存、分析器、優化器、執行器等,涵蓋mysql的大多數核心服務過功能,以及所有的內置函數,所有跨存儲引擎的功能都在這一層實現,比如存儲過程,觸發器,視圖等 存儲引擎層負責數據等存儲和讀取,其架構模式是插 ...
  • tunm二進位協議在python上的實現 tunm是一種對標JSON的二進位協議, 支持JSON的所有類型的動態組合 支持的數據類型 基本支持的類型 "u8", "i8", "u16", "i16", "u32", "i32", "u64", "i64", "varint", "float", "s ...
  • 迎面走來了你的面試官,身穿格子衫,挺著啤酒肚,髮際線嚴重後移的中年男子。 手拿泡著枸杞的保溫杯,胳膊夾著MacBook,MacBook上還貼著公司標語:“加班使我快樂”。 面試官: 看你簡歷上用過MySQL,問你幾個簡單的問題吧。什麼是聚簇索引和非聚簇索引? 這個問題難不住我啊。來之前我看一下一燈M ...
  • Python中的字典 Python中的字典是另一種可變容器模型,且可存儲任意類型對象。鍵值使用冒號分割,你可以看成是一串json。 常用方法 獲取字典中的值 dict[key] 如果key不存在會報錯,建議使用dict.get(key),不存在返回None 修改和新建字典值 dict[key]=va ...
  • 事情的起因是收到了一位網友的請求,他的java課設需要設計實現迷宮相關的程式——如標題概括。 我這邊不方便透露相關信息,就只把任務要求寫出來。 演示視頻指路👉: 基於JavaFX圖形界面的迷宮程式演示_嗶哩嗶哩_bilibili 完整代碼鏈接🔎: 網盤:https://pan.baidu.com ...
  • Redis 的定義? 百度百科: Redis(Remote Dictionary Server ),即遠程字典服務,是一個開源的使用ANSI C語言編寫、支持網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。 中文官網: Redis是一個開源(BSD許可),記憶體存 ...
一周排行
    -Advertisement-
    Play Games
  • 1、什麼是MQTT? MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協議),是一種基於發佈/訂閱(publish/subscribe)模式的"輕量級"通訊協議,該協議構建於TCP/IP協議上,由IBM在1999年發佈。MQTT最大優點在於,可以以極 ...
  • 溫馨提示,請使用ctrl+F進行快速查找 ws2_32.lib error LNK2001: 無法解析的外部符號 __imp_htons error LNK2001: 無法解析的外部符號 __imp_ntohl error LNK2001: 無法解析的外部符號 __imp_ntohs error L ...
  • public static void GetRegistData() { string name = "huishuangzhu"; //搜索到註冊表根目錄 RegistryKey hkml = Registry.ClassesRoot; //搜索到註冊表根目錄下的XXX文件夾。 RegistryK ...
  • 作者:小牛呼嚕嚕 | https://xiaoniuhululu.com 電腦內功、JAVA源碼、職業成長、項目實戰、面試相關資料等更多精彩文章在公眾號「小牛呼嚕嚕」 前言 讀過筆者之前的一篇文章Java記憶體模型(JMM)詳解, 我們知道了由於電腦為了充分利用CPU的高性能,以及各個硬體 存取速 ...
  • 使用Apache PDFBox實現拆分、合併PDF 問題背景 如何拆分PDF? 如何合併PDF? 如何拆分併合並PDF實現去除PDF的某些頁? Apache PDFBox介紹 Apache PDFBox 1.8.10官方文檔 Apache PDFBox 庫是一個開源的 Java 工具,用於處理 PD ...
  • 問題:是不是虛函數的調用就一定是動態綁定?不是的 1:在類的構造函數當中,調用虛函數,也是靜態綁定(構造函數中對虛函數的調用不發生動態綁定) 2:如果不是通過指針或者引用變數來調用虛函數,那就是靜態綁定 代碼1 class Base { public: Base(int data=10):ma(da ...
  • 本篇文章我們將進一步探討下Guava Cache 實現層面的一些邏輯與設計策略,讓我們可以對Guava Cache整體有個更加明朗的認識,促進實際使用中對其的理解。 ...
  • JZ12 矩陣中的路徑 描述 請設計一個函數,用來判斷在一個n乘m的矩陣中是否存在一條包含某長度為len的字元串所有字元的路徑。路徑可以從矩陣中的任意一個格子開始,每一步可以在矩陣中向左,向右,向上,向下移動一個格子。如果一條路徑經過了矩陣中的某一個格子,則該路徑不能再進入該格子。 思路 我們看到他 ...
  • 抽象類和普通類有什麼區別? 抽象類一般不用作抽象實體類型 一般把上面類設計為抽象類? 基類 定義抽象類的唯一目的, 就是去建立派生類. 我們在抽象類基礎上要定義出功能各異的派生類, 再用這些派生類去建立對象. 凡是包含純虛函數的類都是抽象類. 純虛函數不用實現, 故不能被調用, 抽象類無法建立對象. ...
  • 打包下載成.zip文件 項目背景 公司使用vue + SpringBoot實現批量下載功能 今天在調試批量下載這個功能。打包成.zip文件時,在返回給前端瀏覽器出現報錯信息: 後端報錯: ERROR c.c.p.c.e.BusinessExceptionHandler - java.io.IOExc ...