網站首頁 編程語言 正文
一、安裝redis
源碼安裝:
1.下載源碼包:
wget http://download.redis.io/releases/redis-6.0.7.tar.gz
2.解壓到指定目錄下:
tar xf redis-6.0.7.tar.gz -C /usr/local/
二、編譯安裝
下載編譯安裝Redis的依賴,因為Redis是C語言編寫的,所以主要安裝C的編譯環境
yum install gcc g++ gcc-c++ make -y
進入redis文件夾進行編譯安裝
cd /usr/local/redis-6.0.7
# 開始編譯
make -j 2
編譯安裝過程中出現大量錯誤如下圖所示:
這是因為安裝6版本的Redis需要5.3以上版本的gcc,而先前YUM安裝的gcc默認安裝的是4.8.5版本。
# 查看gcc版本
gcc -v
顯示gcc版本為4.8.5,需要升級gcc
升級gcc到9版本
yum install centos-release-scl -y
yum install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils -y
然后啟用gcc 9。我看到有些博客中寫到啟用gcc9的方法如下
# 臨時啟用gcc 9
scl enable devtoolset-9 bash
# 長期啟用gcc 9
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
#使配置生效
source /etc/profile
?
這種臨時啟用的方法發現單獨在終端執行沒有問題,不過把它寫到腳本里執行的時候,執行到這一句就會退出腳本。所以在腳本中我直接使用source /opt/rh/devtoolset-9/enable臨時啟用gcc 9。
執行完畢后gcc升級到9.3.1版本
升級好gcc后重新編譯
# 清除之前編譯的可執行文件及配置文件。
make clean
make -j 2
make install
三、啟動Redis
在redis的src目錄下執行./redis-server,出現如下界面說明Redis算是裝好了。不過有幾個警告需要處理一下,解決的方法在警告信息中已經給出了。
#啟動redis服務
[root@mysql_master src]# ./redis-server
#解決警告信息
# 第一個警告的解決方法
echo net.core.somaxconn=511 >> /etc/sysctl.conf
# 第二個警告的解決方法
echo vm.overcommit_memory=1 >> /etc/sysctl.conf
# 使/etc/sysctl.conf生效
sysctl -p
# 第三個警告的解決方法
echo never > /sys/kernel/mm/transparent_hugepage/enabled
#之后再重新執行./redis-server,可以看到,警告信息消失了。Redis服務順利啟動。
此時Redis服務在前臺執行,修改Redis的配置文件,讓Redis服務可以在后臺運行
vim /usr/local/redis-6.0.7/redis.conf
將daemonize no改為daemonize yes,然后使用配置文件重新啟動redis
關閉加密保護,修改數據存儲路徑.......
#redis已成功在后臺啟動
[root@mysql_master redis-6.0.7]# ./src/redis-server redis.conf
#測試redis是否正常工作
[root@mysql_master redis-6.0.7]# ./src/redis-cli
[root@mysql_master src]# ./redis-cli
127.0.0.1:6379> ping
PONG
后臺啟動:
四、配置主從
啟動主結點的redis服務
[root@mysql_master redis-6.0.7]# ./src/redis-server redis.conf
修改兩臺從結點的redis.conf配置文件,指定主節點ip和端口
注意:redis6版本和redis4版本配置主從的名稱不一樣
replicaof 192.168.232.11 6379 主ip+主端口
修改完后啟動兩臺從的redis,讀取redis.conf才能生效
[root@mysql_slave1 redis-6.0.7]# ./src/redis-server redis.conf
五、redis-sentinel---哨兵模式
部署Sentinel:
#查看sentinel.conf里面配置信息
[root@mysql_master redis-6.0.7]# grep -Ev "^$|#" sentinel.conf
三臺都要配置,具體內容如下所示,可以刪完然后復制上去
###############################################################
port 26379
daemonize yes #后臺啟動
pidfile /var/run/redis-sentinel.pid
logfile "/var/log/redis/sentinel.log"
sentinel announce-ip 0.0.0.0
dir /tmp
sentinel monitor mymaster 192.168.232.11 6379 1
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 60000
sentinel deny-scripts-reconfig yes
##############################################################
注意:一定要開啟后臺啟動,否則Ctrl+c退出,sentinel會自動關閉
啟動,三臺都要啟動
#讀取sentinel配置文件,三臺都一樣啟動
[root@mysql_master redis-6.0.7]# ./src/redis-sentinel sentinel.conf
#查看進程是否啟動:
[root@mysql_master redis-6.0.7]# ps -ef | grep redis-sentinel
sentinel操作
[root@mysql_master redis-6.0.7]# ./src/redis-sentinel sentinel.conf
[root@mysql_master redis-6.0.7]# ./src/redis-cli -p 26379
127.0.0.1:26379> sentinel master mymaster
1) "name"
2) "mymaster"
3) "ip"
4) "192.168.232.11"
5) "port"
6) "6379"
7) "runid"
8) "4e5793b30c65c08c1f784a045dbb81f8a327414f"
9) "flags"
10) "master"
127.0.0.1:26379> sentinel slaves mymaster
1) 1) "name"
2) "192.168.232.12:6379"
3) "ip"
4) "192.168.232.12"
5) "port"
6) "6379"
7) "runid"
8) "7172974215efed734fd000bcd9fcc340dd8796ae"
9) "flags"
10) "slave"
11) "link-pending-commands"
2) 1) "name"
2) "192.168.232.20:6379"
3) "ip"
4) "192.168.232.20"
5) "port"
6) "6379"
7) "runid"
8) "9a4f10acbd6c339df8930a1478455ecaffc8c5ca"
9) "flags"
10) "slave"
六、redis cluster集群搭建
環境準備
1.準備三機器,關閉防火墻和selinux
2.制作解析并相互做解析,即三臺互相ping通,主機名可改可不改。
注:規劃架構兩種方案,一種是單機多實例,這里我們采用多機器部署:
三臺機器,每臺機器上面兩個redis實例,一個master一個slave,第一列做主庫,第二
列做備庫
#記得選出控制節點
redis-cluster01 192.168.232.11 7000、7001
redis-cluster02 192.168.232.12 7002、7003
redis-cluster03 192.168.232.20 7004、7005
安裝redis 并配置redis-cluster
1、redis安裝 ,注意3臺機器都需要安裝redis 服務
創建實例目錄
#先裝一個工具tree
yum install tree
#創建節點目錄:按照規劃在每臺redis節點的安裝目錄中創建對應的目錄(以端口號命名)
#具體創建過程不再描述
查看目錄結構(六臺)
[root@mysql_master src]# cd /redis
[root@mysql_master redis]# tree
.
└── cluster
├── 7000
│?? ├── conf
│?? │?? ├── nodes.conf
│?? │?? └── redis.conf
│?? ├── data
│?? │?? ├── appendonly.aof
│?? │?? └── dump.rdb
│?? ├── log
│?? │?? └── redis.log
│?? └── redis.pid
└── 7001
├── conf
│?? ├── nodes.conf
│?? └── redis.conf
├── data
│?? ├── appendonly.aof
│?? └── dump.rdb
├── log
│?? └── redis.log
└── redis.pid
#其他五臺除了名字不一樣,配置文件不一樣,其他都一樣
配置官方配置文件,去掉#開頭的和空格行
#cat redis.conf | grep -v ^# | grep -v ^$
修改配置文件
[root@mysql_master redis]# cd cluster/7000/conf
[root@mysql_master conf]# cat redis.conf
bind 0.0.0.0
protected-mode no
port 7000
daemonize yes
dir /redis/cluster/7000/data
cluster-enabled yes
cluster-config-file /redis/cluster/7000/conf/nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
pidfile /redis/cluster/7000/redis.pid
logfile /redis/cluster/7000/log/redis.log
#其他五臺修改一下目錄
創建集群
注意:創建集群:在其中一個節點操作就可以
redis節點搭建起來后,需要完成redis cluster集群搭建,搭建集群過程中,需要保證6個redis實例都是運行狀態
Redis是根據IP和Port的順序,確定master和slave的,所以要排好序,再執行。
參數:
--cluster-replicas 1:表示為集群中的每個主節點創建一個從節點.書寫流程:主節點
ip+port 對應一個從節點ip+port(正常是前面三個節點為主節點,后面的為從節點)
#先把六臺redis啟動起來再啟動集群
[root@mysql_master src]# ./redis-server /redis/cluster/7000/conf/redis.conf
[root@mysql_master src]# ./redis-server /redis/cluster/7001/conf/redis.conf
[root@mysql_master src]# ./redis-cli --cluster create --cluster-replicas 1 192.168.232.11:7000 192.168.232.11:7001 192.168.232.12:7002 192.168.232.12:7003 192.168.232.20:7004 192.168.232.20:7005
....................
輸入yes,等待集群創建
出現以下信息證明創建成功
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
查看是否切換成集群模式
[root@mysql_master conf]# ps -ef | grep redis
七、redis cluster 向客戶端擴展
轉載請注明出處,未完待續...
原文鏈接:https://www.cnblogs.com/qsmm/p/16871488.html
相關推薦
- 2022-11-15 如何將Android?Studio卸載干凈_Android
- 2023-03-26 Android視圖綁定方法深入探究_Android
- 2022-03-30 python實現記事本功能_python
- 2022-12-09 C語言goto的應用舉例以及詳解_C 語言
- 2024-07-13 spring-cloud和spring-cloud-alibaba的關系
- 2023-07-26 TypeScript的類型推導
- 2022-08-05 Python?list列表查找元素詳情_python
- 2022-12-21 C和C++中argc和argv的含義及用法詳解_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支