Linux(Centos7)下redis安裝、部署、開機自啟

来源:https://www.cnblogs.com/hxun/archive/2019/06/24/11075755.html
-Advertisement-
Play Games

1.什麼是redis redis是用C語言開發的一個開源的高性能鍵值對(key-value)資料庫。它通過提供多種鍵值數據類型來適應不同場景下的存儲需求,目前為止redis支持的鍵值數據類型如下字元串、列表(lists)、集合(sets)、有序集合(sorts sets)、哈希表(hashs) 2. ...


1.什麼是redis

redis是用C語言開發的一個開源的高性能鍵值對(key-value)資料庫。它通過提供多種鍵值數據類型來適應不同場景下的存儲需求,目前為止redis支持的鍵值數據類型如下字元串、列表(lists)、集合(sets)、有序集合(sorts sets)、哈希表(hashs)

2.redis的應用場景 

緩存(數據查詢、短連接、新聞內容、商品內容等等)。(最多使用
分散式集群架構中的session分離。
聊天室的線上好友列表。
任務隊列。(秒殺、搶購、12306等等) 
應用排行榜。 
網站訪問統計。 
數據過期處理(可以精確到毫秒)

3.redis的安裝 

下麵介紹在CentOS環境下,Redis的安裝與部署,redis從3.0版本以後增加了集群功能。  

步驟如下:

  由於Redis是用C語言編寫,所以編譯時需要gcc,

yum install gcc-c++

 

  通過官網下載 地址:http://download.redis.io/releases/redis-5.0.0.tar.gz

  或 使用linux wget命令:wget http://download.redis.io/releases/redis-5.0.0.tar.gz

 

把源碼包上傳到linux伺服器,在上傳的目錄下進行解壓

tar -zxvf redis-5.0.0.tar.gz

 

進入解壓後的目錄進行編譯make,指定目錄安裝make install 如 /usr/local/redis

cd /redis-5.0.0/

make (這裡進redis-5.0.0/目錄下直接make編譯就好了)

make install PREFIX=/usr/local/redis   (指定編譯路徑)

進入安裝目錄bin下
cd /usr/local/redis/bin

此時的目錄結構是這樣的

  • redis-benchmark redis性能測試工具
  • redis-check-aof AOF文件修複工具
  • redis-check-rdb RDB文件修複工具
  • redis-cli redis命令行客戶端
  • redis.conf redis配置文件
  • redis-sentinal redis集群管理工具
  • redis-server redis服務進程

4.啟動Redis

1.前端模式啟動

/usr/local/redis/bin/redis-server
或 cd /usr/local/redis/bin 運行 ./redis-server

前端模式啟動的缺點是ssh命令視窗關閉則redis-server程式結束,故不推薦使用此方法。

2.後端模式啟動

1)redis的源碼目錄中複製redis.confredis的安裝目錄bin下。

 

cp redis.conf /usr/local/redis/bin

 

2)修改配置文件 (是否後臺啟動)

vim /usr/local/redis/bin/redis.conf

找到 daemonize  按i 進入編輯模式 把no 改為 yes 

按ESC + :wq 保存退出

 

執行如下命令啟動redis:

cd /usr/local/redis/bin

./redis-server ./redis.conf

3.查看是否啟動成功

ps aux|grep redis

redis預設埠為 6379,可更改redis.conf文件,修改埠號

 

5. 關閉redis

強行終止redis進程可能會導致redis持久化數據丟失。

正確停止Redis的方式應該是向Redis發送SHUTDOWN命令,

命令為:

cd /usr/local/redis
./bin/redis-cli shutdown

 

強行終止redis

pkill redis-server


6.讓redis開機自啟

方法一

1) vim /etc/init.d/redis  編寫腳本 (輸入下麵的代碼)
# chkconfig: 2345 10 90
# description: Start and Stop redis

PATH=/usr/local/bin:/sbin:/usr/bin:/bin

REDISPORT=6379 #實際環境而定
EXEC=/usr/local/redis/bin/redis-server #實際環境而定
REDIS_CLI=/usr/local/redis/bin/redis-cli #實際環境而定

PIDFILE=/var/run/redis.pid
CONF="/usr/local/redis/bin/redis.conf" #實際環境而定

case "$1" in
        start)
                if [ -f $PIDFILE ]
                then
                        echo "$PIDFILE exists, process is already running or crashed."
                else
                        echo "Starting Redis server..."
                        $EXEC $CONF
                fi
                if [ "$?"="0" ]
                then
                        echo "Redis is running..."
                fi
                ;;
        stop)
                if [ ! -f $PIDFILE ]
                then
                        echo "$PIDFILE exists, process is not running."
                else
                        PID=$(cat $PIDFILE)
                        echo "Stopping..."
                        $REDIS_CLI -p $REDISPORT SHUTDOWN
                        while [ -x $PIDFILE ]
                        do
                                echo "Waiting for Redis to shutdown..."
                                sleep 1
                        done
                        echo "Redis stopped"
                fi
                ;;
        restart|force-reload)
                ${0} stop
                ${0} start
                ;;
        *)
                echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
                exit 1
esac

 

2)  配置開機啟動

chmod 755 /etc/init.d/redis #設置文件redis的許可權,讓Linux可以執行
chkconfig redis on    #開啟服務自啟動
chkconfig --list #查看所有註冊的腳本文件
service redis start #啟動
service redis stop #關閉redis

 

3) 檢測是否成功

reboot  #重啟--如果是centos6.5學過來的,init 0與init 6一樣在centos7適用
ps aux|grep redis #查看redis進程是否存在

 

方法二:

centos 7以上是用Systemd進行系統初始化的,Systemd 是 Linux 系統中最新的初始化系統(init),它主要的設計目標是剋服 sysvinit 固有的缺點,提高系統的啟動速度。 
Systemd服務文件以.service結尾,比如現在要建立redis為開機啟動,如果用yum install命令安裝的,yum命令會自動創建redis.service文件,直接用命令systemcel enable redis.service設置開機啟動即可

 1.在系統服務目錄里創建redis.service文件

vim /etc/systemd/system/redis.service

寫入以下內容:

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

[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

註意:ExecStart配置成自己的路徑 

配置描述: 

  Description:描述服務 
  After:描述服務類別 
  [Service]服務運行參數的設置 
  Type=forking是後臺運行的形式 
  ExecStart為服務的具體運行命令 
  ExecReload為重啟命令 
  ExecStop為停止命令 
  PrivateTmp=True表示給服務分配獨立的臨時空間 
  註意:[Service]的啟動、重啟、停止命令全部要求使用絕對路徑 
  [Install]運行級別下服務安裝的相關設置,可設置為多用戶,即系統運行級別為3

2. 測試並加入開機自啟 

  先關閉redis-server 
  systemctl stop redis.service

  開啟redis-server 
  systemctl start redis.service #如果服務是開啟狀態,使用此命令會啟動失敗。

3. 開啟成功,將服務加入開機自啟 
  systemctl enable redis.service #註意後面不能跟空格 

4.  reboot #重啟

5.  查看服務運行狀態:systemctl status redis.service

6. 全部命令

  systemctl start redis.service #啟動redis服務 
  systemctl enable redis.service #設置開機自啟動 
  systemctl disable redis.service #停止開機自啟動 
  systemctl status redis.service #查看服務當前狀態 
  systemctl restart redis.service  #重新啟動服務 
  systemctl list-units --type=service #查看所有已啟動的服務 

 

7.測試代碼

引入jar包:

代碼:

public class JedisTest {

    @Test
    public void testJedisSingle() {
        //創建一個jedis的對象。
        Jedis jedis = new Jedis("172.20.10.7", 6379);
        //調用jedis對象的方法,方法名稱和redis的命令一致。
        jedis.set("key1", "jedis test");
        String str = jedis.get("key1");
        System.out.println(str);
        //關閉jedis。
        jedis.close();
    }
    
    /**
     * 使用連接池
     */
    @Test
    public void testJedisPool() {
        //創建jedis連接池
        JedisPool pool = new JedisPool("172.20.10.7", 6379);
        //從連接池中獲得Jedis對象
        Jedis jedis = pool.getResource();
        String str = jedis.get("key1");
        System.out.println(str);
        //關閉jedis對象
        jedis.close();
        pool.close();
    }
}

 

 

 

至此redis安裝配置完畢。

good luck !

     

 


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

-Advertisement-
Play Games
更多相關文章
  • Redis hash可儲存多個鍵值對,適合儲存對象的屬性。 1、hset key fieldName fileValue //hset即hash set,set這裡是設置的意思。往hash中添加一個欄位(鍵值對) 示例: hset score zhangsan 90 //score是hash的名稱, ...
  • 在生產環境中, 要保證服務在各種極限情況下的穩定和高可用, 所以在部署ES集群時, 需要考慮伺服器的記憶體、CPU、磁碟, 集群的網路、節點個數, 並且要優化JVM的各項參數. 首先從這些方面著手進行部署前的規劃. ...
  • 一.安裝redis #一主二從三台Server安裝步驟相同。 wget http://download.redis.io/releases/redis-5.0.4.tar.gz tar xzf redis-5.0.4.tar.gz cd redis-5.0.4 make 二.配置埠 master默 ...
  • 1、getset key newValue //給key設置value,並返回舊的value,如果沒有舊的value,返回nil。 示例: set age 10 getset age 20 //age 的值被設置為20,並返回舊的值10 2、getrange key start end //獲取va ...
  • ①length 函數說明:計算字元串長度的函數 返回結果:數字 使用圖解: ②lengthb 函數說明:計算字元串位元組長度。在學習過程中,瞭解到還有一個 lengthb 函數。位元組和字元的區別 返回結果:數字 使用圖解:(漢字占兩個位元組,數字和字母占一個位元組) 🌂substr 函數說明:字元截取函 ...
  • 上周遇到了將數據從orcle導入到impala的問題,這個項目耽誤了我近一周的時間,雖然是種種原因導致的,但是還是做個總結。 需求首先是跑數據,跑數據這個就不敘述,用的是公司的平臺。 講講耽誤我最久的事吧 數據的導入導出。 將數據從orcle導出 PLSQL直接導出 我這邊連接公司的orcle資料庫 ...
  • 文 | 子龍 有技術,有乾貨,有故事的斜杠青年 一,寫在前面的話 最近公司需要按天,按小時查看數據,可以直觀的看到時間段的數據峰值。接到需求,就開始瘋狂百度搜索,但是搜索到的資料有很多都不清楚,需要自己去總結和挖掘其中的重要信息。現在我把分享出來了呢,希望大家喜歡。 針對sqlserver, 有幾點 ...
  • select dateadd(dd,-day(getdate()) + 1,getdate()) '當月起始時間' //查詢當月起始時間 select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)) '當月結束時間' //查詢當月結束 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...