1. 程式人生 > 其它 >centos7 安裝redis 6.0.3

centos7 安裝redis 6.0.3

簡介
Redis,全稱Remote Dictionary Server(遠端字典伺服器) ,全開源基於C語言開發,是高效能的(key/value)分散式記憶體資料庫,基於記憶體執行並支援持久化的NoSQL資料庫,是當前最熱門的NoSQL資料庫之一,也被人們稱為資料結構伺服器。

環境準備

作業系統

[root@had-test ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

redis6版本的下載連線:http://download.redis.io/releases/redis-6.0.3.tar.gz

建立redis目錄,將redis的安裝包下載到這個 目錄

[root@had-test ~]# cd /opt/
[root@had-test opt]# mkdir redis #將redis的安裝包下載到這個目錄

安裝依賴

yum -y install gcc gcc-c++ make tcl #測試需要依賴tcl

編譯安裝需要gcc5.3以上,可以用gcc -v 命令檢視當前版本號,使用下面的命令升級到gcc9.1:


yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
#scl命令啟用只是臨時的,新開的會話預設還是原gcc版本。
scl enable devtoolset-9 bash
#如果要長期使用gcc 9.1的話執行下面的命令即可:

echo -e"\nsource /opt/rh/devtoolset-9/enable" >>/etc/profile

編譯安裝

[root@redis-1 redis]# tar xf redis-6.0.3.tar.gz
[root@redis-1 redis]# ls
redis-6.0.3 redis-6.0.3.tar.gz
[root@redis-1 redis]# mv redis-6.0.3 redis
[root@redis-1 redis]# ls
redis redis-6.0.3.tar.gz
[root@redis-1 redis]# cd redis/
[root@redis-1 redis]# make

[root@redis-1 redis]#make install PREFIX=/opt/redis6 #安裝指定目錄

#如果編譯出錯之後再編譯可以先執行命令刪除之前的編譯檔案

make distclean

編譯完了可以執行命令測試

make test

配置啟動

進入到安裝的目錄/opt/redis6下 將原始碼中的redis.conf檔案 複製到redis6的bin目錄下並修改配置

mkdir/opt/redis6/data

cp /opt/redis/redis/redis.conf /opt//redis6/bin/

vim/opt/redis6/bin/redis.conf
#daemonize no 改為yes,開啟後臺執行,預設是前臺執行
daemonize yes
#把這一行註釋,監聽所有IP
#bind 127.0.0.1
#protected-mode yes 如果改為no,則是關閉保護模式,這種模式下不能配置系統服務,建議還是開啟
protected-mode yes
#requirpass,保護模式開啟的時候要配置密碼或者bind ip
requirepass 123456
#修改本引數,指定資料目錄
dir /opt/redis6/data
#修改本引數,指定日誌目錄
logfile /opt//redis6/redis_6379.log

啟動redis

編寫啟動指令碼

vim /lib/systemd/system/redis.service

[Unit]
Description=Redis
After=network.target
[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/opt/redis6/bin/redis-server /opt/redis6/bin/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

使用systemctl命令
# 過載服務
systemctl daemon-reload
# 開機自啟
systemctl enable redis
# 啟動
systemctl start redis
# 重啟
systemctl restart redis   
# 停止
systemctl stop redis
# 檢視狀態
systemctl status redis
# 關閉開機啟動
systemctldisable redis

使用Redis Desktop Manager連線Redis


下載安裝redis desktop manager:
Github:https://github.com/uglide/RedisDesktopManager
官網:https://redisdesktop.com/
配置防火牆,嫌麻煩直接關閉即可:
#檢視防火牆狀態
systemctl status firewalld
#關閉防火牆
service firewalld stop
#開啟防火牆
service firewalld start
#單獨開6379埠
firewall-cmd --permanent --add-port=6379
tcpfirewall-cmd --reload
由於上面的配置我們已經開啟了所有IP的監聽,因此可以直接連線:
關閉保護模式且無密碼模式:

開啟保護模式設定密碼,以systemctl命令啟動和開機自啟:

注:redis6之後支援多執行緒,使用redis6的io多執行緒的好處?

1,reddis6把多執行緒用在哪裡?

redis執行的瓶頸,通常不在cpu,而在記憶體和網路I/O

Redis 6 對多執行緒的啟用,主要用在處理網路I/O,

流程就是:把監聽到的網路的事件,分發給work thread做處理,

在處理完之後,由主執行緒負責執行。

說明:這是我們要注意的地方:

redis6對於命令的執行仍然是由主執行緒執行,

也就是象以前使用的原子性的命令如rpush/lua指令碼仍然具有原子性,

不會因為多執行緒的引入也失效。

2,效能提升顯著:

Redis讀寫網路的 read/write 系統呼叫在 執行期間佔用了大部分 CPU 時間,

所以把網路讀寫做成多執行緒的方式對效能會有很大提升,

根據測試,在 4個執行緒 IO 時,效能相比單執行緒提高一倍,

是redis6中的最可觀的效能提升

3.什麼情況適宜啟用io多執行緒?

來自官方配置檔案的說明:

預設情況多執行緒是disabled,當server有至少4個核心或更多時可以啟用,

至少留下一個備用的核心。

當設定為多於8個執行緒時,不會用明顯的效能提升

建議當確實遇到效能問題時而且redis的例項能佔用cpu時間的一大部分時

再啟用threaded I/O,這樣會比較有效,

否則沒有啟用這個功能的必要。

下面是多執行緒的配置方法:

配置指令一

#io-threads: 啟用的io執行緒數量

io-threads 4

這個值設定為多少?

根據配置檔案的說明:

如果你的server有4個核心,嘗試把這個值設定為3

如果有8個核心,嘗試把這個值設定為6

但這個值不建議超過8

配置指令二:

#讀請求也使用io執行緒

io-threads-do-reads yes

設定為yes即可,配置檔案中的說明:

當I/O threads被啟用時,執行緒僅用於寫,

如果需要把讀資料和協議解析也啟用執行緒,

則需要把io-threads-do-reads也設定為yes

作者認為對讀請求啟用io-threads得到的幫助不算太多

redis配置多執行緒注意事項

1.在redis執行時通過config set 來使用執行緒的配置指令不會生效,

當SSL啟用時,多執行緒也不會生效

2,如果使用redis-benchmark測試redis的速度 ,

需要確認redis-benchmark是多執行緒模式,

使用 --threads選項來匹配redis的執行緒數量,

否則不會看到效能有明顯提升