Centos7安裝配置Redis6.0.1

前幾天Redis官方發佈了 Redis6.0.1 Stable 版本,本文詳細介紹下Centos7安裝配置Redis6.0.1的步驟。
先大致說一下Redis6.0之前版本的優缺點
優點:

  • 豐富的數據結構
  • 持久化存儲:RDB、AOF
  • 主從同步,故障轉移(哨兵模式)
  • 內存數據庫

缺點:

  • 單線程
  • 單核(不能充分利用CPU多核性能)

Redis6.0版本在原有的基礎上引入了多線程I/O,並且充分利用了多核CPU系統的性能;雖然支持了多線程I/O,但是這個多線程只是用來處理網絡數據的讀寫協議解析,執行命令仍然是單線程。新版本還增加了acl、cluster proxy等新功能,後續慢慢研究一下。

有關老版本和新版本的性能對比可以參考下邊這篇文章,感覺寫的不錯。

Redis 6.0與老版性能對比評測

1 升級gcc

在編譯redis6.0.1之前需要升級gcc的版本,默認情況yum安裝的gcc版本是4.8.5,由於版本過低,在編譯時會報如下錯誤(部分截取)。

In file included from server.h:63:0,
                 from server.c:30:
server.c:4373:30: 錯誤:‘struct redisServer’沒有名爲‘slaves’的成員
             listLength(server.slaves));
                              ^
adlist.h:57:25: 附註:in definition of macro ‘listLength’
 #define listLength(l) ((l)->len)
                         ^
server.c:4377:19: 錯誤:‘struct redisServer’沒有名爲‘repl_min_slaves_to_write’的成員
         if (server.repl_min_slaves_to_write &&
                   ^
server.c:4378:19: 錯誤:‘struct redisServer’沒有名爲‘repl_min_slaves_max_lag’的成員
             server.repl_min_slaves_max_lag) {
                   ^
server.c:4381:23: 錯誤:‘struct redisServer’沒有名爲‘repl_good_slaves_count’的成員
                 server.repl_good_slaves_count);

......


server.c: 在函數‘hasActiveChildProcess’中:
server.c:1476:1: 警告:在有返回值的函數中,控制流程到達函數尾 [-Wreturn-type]
 }
 ^
server.c: 在函數‘allPersistenceDisabled’中:
server.c:1482:1: 警告:在有返回值的函數中,控制流程到達函數尾 [-Wreturn-type]
 }
 ^
server.c: 在函數‘writeCommandsDeniedByDiskError’中:
server.c:3747:1: 警告:在有返回值的函數中,控制流程到達函數尾 [-Wreturn-type]
 }
 ^
server.c: 在函數‘iAmMaster’中:
server.c:4914:1: 警告:在有返回值的函數中,控制流程到達函數尾 [-Wreturn-type]
 }
 ^
make[1]: *** [server.o] 錯誤 1
make[1]: 離開目錄“/application/redis-6.0.1/src”
make: *** [install] 錯誤 2

若不想編譯安裝gcc高版本,這裏推薦一種yum安裝的方式。

1、安裝scl源

yum install centos-release-scl scl-utils-build

2、列出scl可用源

yum list all --enablerepo='centos-sclo-rh'

3、安裝8版本的gcc、gcc-c++、gdb工具鏈(toolchian)

yum install -y devtoolset-8-toolchain
scl enable devtoolset-8 bash
gcc --version

gcc version

2 安裝配置Redis6.0.1

1、獲取壓縮包

# 從官網或者github獲取tar包
wget http://download.redis.io/releases/redis-6.0.1.tar.gz

2、解壓並指定安裝目錄

tar -xf redis-6.0.1.tar.gz
cd redis-6.0.1.tar.gz
make PREFIX=/opt/redis-6.0.1/ install

3、make test(可不做)

# make無誤後可以make test測試下
# 若報錯 You need tcl 8.5 or newer in order to run the Redis test 升級一下tcl即可

wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz  
tar xzvf tcl8.6.1-src.tar.gz  -C /usr/local/  
cd  /usr/local/tcl8.6.1/unix/  
./configure && make && make install

[root@Mredis redis-6.0.1]# make test

......

\o/ All tests passed without errors!

Cleanup: may take some time... OK  # 說明無誤
make[1]: 離開目錄“/application/redis-6.0.1/src”

4、生成配置文件

mkdir /opt/redis-6.0.1/conf/6379
cd /opt/redis-6.0.1/conf/6379

# 拷貝默認配置文件至6379實例目錄下
cp /application/redis-6.0.1/redis.conf /opt/redis-6.0.1/conf/6379/

5、修改配置文件
大致跟老版本的一樣,由於新版本添加了多線程的功能,所以還需要根據系統CPU核心數量去配置此參數。

# bind本地ip
bind 192.168.0.100

# 根據需求去修改端口
port 6379

# 以daemon方式運行
daemonize yes

# 日誌文件
logfile "/opt/redis-6.0.1/conf/6379/logs/redis_6379.log"

# 數據保存目錄
dir /opt/redis-6.0.1/conf/6379/data

# 內存最大使用量
maxmemory 512MB

# I/O線程數,官方建議配置系統核心數量的3/4,我這裏是2核,所以最多配置2就可以了
# 可以通過 lscpu 命令去查看本地系統的CPU核心數
io-threads 2

# 默認情況下,如果不開啓多線程讀功能,那麼多線程只能進行寫操作,是否開啓多線程讀功能看需求
io-threads-do-reads yes

6、啓動redis,並配置開機自啓

# 啓動
/opt/redis-6.0.1/bin/redis-server /opt/redis-6.0.1/conf/6379/redis.conf

# 配置開機自啓
echo "/opt/redis-6.0.1/bin/redis-server /opt/redis-6.0.1/conf/6379/redis.conf" >> /etc/rc.local

可以通過配置環境變量的方式使得redis相關的命令在全局生效。

3 訪問測試

[root@Mredis ~]# /opt/redis-6.0.1/bin/redis-cli -h 192.168.0.100 -p 6379
192.168.0.100:6379> KEYS *
(empty array)
192.168.0.100:6379> set a bbb
OK
192.168.0.100:6379> get a
"bbb"
192.168.0.100:6379> 

參考文章

Centos8平臺安裝redis6.0.1
Centos 7 yum升級GCC 8版本
Redis命令大全

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章