天天看點

編譯安裝redis-6.2.1,加入開機自啟

下載下傳安裝包

redis官網下載下傳

https://download.redis.io/releases/redis-6.2.1.tar.gz
           

安裝依賴包

yum install -y gcc gcc-c++ tcl
           

編譯安裝redis

#解壓redis
tar xf redis-6.2.1.tar.gz
#進入解壓後的目錄
cd redis-6.2.1
#編譯
make
#建立redis安裝目錄,主要用于存放redis所需bin檔案
mkdir -p /usr/local/redis
#安裝redis并指定安裝目錄
make PREFIX=/usr/local/redis/ install
#複制預設配置檔案到/etc
cp redis.conf /etc/
#修改配置檔案監聽IP為0.0.0.0,否則隻能本地登入
sed -i s/bind\ 127.0.0.1/bind\ 0.0.0.0/g /etc/redis.conf
#修改運作方式為背景運作
sed -i s/daemonize\ no/daemonize\ yes/g /etc/redis.conf
#設定日志檔案路徑
sed -i [email protected]\ \"\"@logfile\ \"/var/log/redis/redis.log\"@g /etc/redis.conf
#設定資料目錄
sed -i [email protected]\ \./@dir\ /var/lib/[email protected] /etc/redis.conf
#設定redis密碼
echo "requirepass 123456" >>/etc/redis.conf
#建立日志目錄和資料目錄
mkdir /var/log/redis /var/lib/redis
#建立redis使用者,盡量不要用root啟動
useradd redis
#授權
chown -R redis:redis /var/log/redis /var/lib/redis
           

設定系統級啟動

由于不設定ExecStop會導緻在停止的時候很慢,是以這邊寫一個停止腳本

vi /usr/local/redis/bin/redis-shutdown

#!/bin/bash
REDIS_DIR=$(readlink -f "$(dirname "$0")")
REDIS_CLI=$REDIS_DIR/redis-cli
REDIS_CONF=/etc/redis.conf

REDIS_HOST=`awk '/^[[:blank:]]*bind/ {print $2}' $REDIS_CONF | tail -1`
REDIS_PORT=`awk '/^[[:blank:]]*port/ {print $2}' $REDIS_CONF | tail -1`
REDIS_PASS=`awk '/^[[:blank:]]*requirepass/ {print $2}' $REDIS_CONF | tail -1`
REDIS_SOCK=`awk '/^[[:blank:]]*unixsocket\s/ {print $2}' $REDIS_CONF | tail -1`

[ -z "$REDIS_PASS" ] || REDIS_PASS_PARAMETER="-a $REDIS_PASS"

REDIS_PORT=${REDIS_PORT:-6379}

if [ -e "$REDIS_SOCK" ] ; then
	$REDIS_CLI -s $REDIS_SOCK $REDIS_PASS_PARAMETER shutdown
else
	$REDIS_CLI -h $REDIS_HOST -p $REDIS_PORT $REDIS_PASS_PARAMETER shutdown
fi
           
#建立系統服務所需的.service檔案
cat > /etc/systemd/system/redis.service << EOF
[Unit]
Description=The redis-server Process Manager
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /etc/redis.conf
ExecStop=/usr/local/redis/bin/redis-shutdown
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target
EOF

#重載系統服務
systemctl daemon-reload
#設定redis開機自啟
systemctl enable redis
#啟動redis
systemctl start redis
#檢視redis狀态
systemctl status redis
           

安裝完成

編譯安裝redis-6.2.1,加入開機自啟

驗證是否可用

[[email protected] redis-6.2.1]# telnet 192.168.19.249 6379
Trying 192.168.19.249...
Connected to 192.168.19.249.
Escape character is '^]'.
auth 123456
+OK
info Server
$578
# Server
redis_version:6.2.1
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:d9c86de3cac61dab
redis_mode:standalone
os:Linux 3.10.0-862.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.5
process_id:18104
process_supervised:no
run_id:035dd8ea28e979b9d9767c8a947ff5f7588045d8
tcp_port:6379
server_time_usec:1616744047327554
uptime_in_seconds:156
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:6131311
executable:/usr/local/redis/bin/redis-server
config_file:/etc/redis.conf
io_threads_active:0

set weihe 123
+OK
get weihe
$3
123
del weihe 
:1
quit
+OK
Connection closed by foreign host.
           

Redis常用操作指令介紹

#設定(建立)一個Key=Value
set keyname keyvalue
#擷取一個K的值
get keyname
#切換1-15号的庫
select 資料庫編号 0-15
#列印所有key
keys *
#列印指定key,支援正規表達式,例如*weihe*
keys weihe
#測試key是否存在
exits keyname
#檢視生存時間 (-1代表在記憶體中永不過期)
ttl keyname
#檢視類型
type keyname
#移動key到其他資料庫
move keyname dbname
#設定有效時間
expire keyname 10
#删除變量
del keyname
#删除所有變量,危險操作,一般安全整改要求改名
flushall
#儲存變量
save
#關閉服務 ,危險操作,一般安全整改要求改名
shutdown
#檢視redis狀态
info
#退出目前會話,并不會關閉redis
quit