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, 假如這個埠被占用了怎麼辦?
[root@broadm ~]# 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就是以後臺的方式啟動了,看看我的實操:

[root@broadm redis-7.0.2]# redis-server redis.conf
[root@broadm 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
[root@broadm 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的埠放行,或者您是使用的雲伺服器,您同樣需要配置防火牆

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

[root@broadm 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. 說明 /* Performs operations on System.String instances that contain file or directory path information. These operations are performed in a cross-pla ...
  • 視頻地址:【WebApi+Vue3從0到1搭建《許可權管理系統》系列視頻:搭建JWT系統鑒權-嗶哩嗶哩】 https://b23.tv/R6cOcDO qq群:801913255 一、在appsettings.json中設置鑒權屬性 /*jwt鑒權*/ "JwtSetting": { "Issuer" ...
  • 引言 集成測試可在包含應用支持基礎結構(如資料庫、文件系統和網路)的級別上確保應用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機和記憶體中測試伺服器結合使用來支持集成測試。 簡介 集成測試與單元測試相比,能夠在更廣泛的級別上評估應用的組件,確認多個組件一起工作以生成預 ...
  • 在.NET Emit編程中,我們探討了運算操作指令的重要性和應用。這些指令包括各種數學運算、位操作和比較操作,能夠在動態生成的代碼中實現對數據的處理和操作。通過這些指令,開發人員可以靈活地進行算術運算、邏輯運算和比較操作,從而實現各種複雜的演算法和邏輯......本篇之後,將進入第七部分:實戰項目 ...
  • 前言 多表頭表格是一個常見的業務需求,然而WPF中卻沒有預設實現這個功能,得益於WPF強大的控制項模板設計,我們可以通過修改控制項模板的方式自己實現它。 一、需求分析 下圖為一個典型的統計表格,統計1-12月的數據。 此時我們有一個需求,需要將月份按季度劃分,以便能夠直觀地看到季度統計數據,以下為該需求 ...
  • 如何將 ASP.NET Core MVC 項目的視圖分離到另一個項目 在當下這個年代 SPA 已是主流,人們早已忘記了 MVC 以及 Razor 的故事。但是在某些場景下 SSR 還是有意想不到效果。比如某些靜態頁面,比如追求首屏載入速度的時候。最近在項目中回歸傳統效果還是不錯。 有的時候我們希望將 ...
  • System.AggregateException: 發生一個或多個錯誤。 > Microsoft.WebTools.Shared.Exceptions.WebToolsException: 生成失敗。檢查輸出視窗瞭解更多詳細信息。 內部異常堆棧跟蹤的結尾 > (內部異常 #0) Microsoft ...
  • 引言 在上一章節我們實戰了在Asp.Net Core中的項目實戰,這一章節講解一下如何測試Asp.Net Core的中間件。 TestServer 還記得我們在集成測試中提供的TestServer嗎? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。 ...
  • 在發現結果為真的WHEN子句時,CASE表達式的真假值判斷會終止,剩餘的WHEN子句會被忽略: CASE WHEN col_1 IN ('a', 'b') THEN '第一' WHEN col_1 IN ('a') THEN '第二' ELSE '其他' END 註意: 統一各分支返回的數據類型. ...
  • 在C#編程世界中,語法的精妙之處往往體現在那些看似微小卻極具影響力的符號與結構之中。其中,“_ =” 這一組合突然出現還真不知道什麼意思。本文將深入剖析“_ =” 的含義、工作原理及其在實際編程中的廣泛應用,揭示其作為C#語法奇兵的重要角色。 一、下劃線 _:神秘的棄元符號 下劃線 _ 在C#中並非 ...