1. 程式人生 > 資料庫 >Redis安裝以及常見問題

Redis安裝以及常見問題

安裝

下載

redis官網地址:

centos安裝

  1. 建立軟體放置目錄mkdir soft
  2. 進入soft目錄並下載redis安裝包。
cd soft 
wget https://download.redis.io/releases/redis-6.0.9.tar.gz
  1. 解壓 tar -zxvf redis-6.0.9.tar.gz
  2. 進入解壓後目錄,並檢視README檔案。瞭解軟體說明和使用方式。
# 閱讀README,檢視軟體說明。可以得知在根目錄下執行make命令
vi README
  1. 執行make 命令進行編譯。正確編譯後可在src目錄下看到執行redis的方法
  2. 建立服務,便於日後進行管理
make PREFIX=/opt/endea/redis install
#設定環境變數
vi /etc/profile
    REDIS_HOME=/opt/endea/redis
    export PATH=$PATH:$REDIS_HOME/bin
source /etc/profile
cd /utils
./install_server.sh
#一步一步安裝,選擇埠號,配置檔案目錄,日誌目錄,資料目錄;可以執行多次,執行一次安裝建立一個redis例項程序,但是埠號不能一致

常見問題

make失敗問題

根據日誌進行檢視,結合日誌進行檢視

未安裝編譯工具引起

yum install gcc

gcc版本問題引起

報錯如下:

server.c:5127:29: 錯誤:‘struct redisServer’沒有名為‘pidfile’的成員
     if (background || server.pidfile) createPidFile();
                             ^
server.c:5132:16: 錯誤:‘struct redisServer’沒有名為‘sentinel_mode’的成員
     if (!server.sentinel_mode) {
                ^
server.c:5142:19: 錯誤:‘struct redisServer’沒有名為‘cluster_enabled’的成員
         if (server.cluster_enabled) {
                   ^
server.c:5150:19: 錯誤:‘struct redisServer’沒有名為‘ipfd_count’的成員
         if (server.ipfd_count > 0 || server.tlsfd_count > 0)
                   ^
server.c:5150:44: 錯誤:‘struct redisServer’沒有名為‘tlsfd_count’的成員
         if (server.ipfd_count > 0 || server.tlsfd_count > 0)

原因: gcc版本和redis版本不相容
檢視gcc版本:

gcc -v

解決方法:升級gcc版本

yum -y install centos-release-scl  # 升級到9.1版本
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
#永久使用gcc9.1版本
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
#臨時使用gcc9.1版本
scl enable devtoolset-9 bash

./install_server.sh安裝失敗問題

問題如下

This systems seems to use systemd.
Please take a look at the provided example service unit files in this directory, and adapt and install them. Sorry!

解決方案
開啟install_server.sh檔案(vi install_server.sh),註釋如下內容即可。

#bail if this system is managed by systemd
#_pid_1_exe="$(readlink -f /proc/1/exe)"
#if [ "${_pid_1_exe##*/}" = systemd ]
#then
#       echo "This systems seems to use systemd."
#       echo "Please take a look at the provided example service unit files in this directory, and adapt and install them. Sorry!"
#       exit 1
#fi