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
# 關閉開機啟動
systemctl disable 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的線程數量,

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM