springboot 整合 redis 主从同步 sentinel哨兵 实现商品抢购秒杀

本文介绍了如何使用SpringBoot整合Redis的主从同步与Sentinel哨兵机制来构建商品抢购秒杀系统。详细讲解了从Redis环境配置,包括主从同步、Sentinel配置,到SpringBoot项目的创建、配置和接口实现,最后展示了哨兵在主从故障切换中的作用。
摘要由CSDN通过智能技术生成

这段时间利用周末学习了一下redis的主从同步,同时配合sentinel哨兵机制,sentinel是redis实现HA的一种方式。为了能学以致用,这里使用springboot 把redis 主从同步及sentinel整合起来实现一个商品抢购的demo,同时在开发过程中遇到的问题也都整理下来了。一方面加深对所学知识的印象,另一方面希望可以为那些刚接触过这些知识的同学提供点实际帮助,springboot 整合redis主从及sentinel哨兵,自己从零开始,也花了一些时间,当然对那些大牛来说,此文可以绕过。

一、redis主从及sentinel环境配置

1、官方网站下载redis  https://redis.io/download
2、解压压缩包
  tar -xvf redis-4.0.1.tar.gz

3、解压完成后,进入目录 redis-4.0.1
cd redis-4.0.1

4、执行make命令
make
执行make报错,提示cc:未找到命令,原因是虚拟机系统中缺少gcc,安装gcc即可
   
虚拟机安装gcc命令
  安装命令:yum -y install gcc automake autoconf libtool make 

安装gcc后,执行make 继续报错:zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录

解决方案:
执行命令由make  改成  make MALLOC=libc

5、安装redis服务到指定的目录  /usr/local/redis
make PREFIX=/usr/local/redis install

6、创建配置文件
mkdir /etc/redis
 
复制配置文件到/etc/redis/ 下面去
cp redis.cnf  /etc/redis/

7、启动redis客户端  进入redis 的bin 目录
./redis-server

8、查看redis是否正常启动
ps -ef | grep redis

或者查看redis端口是否被监听
netstat -tunple | grep 6379

9、修改redis 配置文件  后台启动
vi /etc/redis/redis.conf
修改daemonize no   将no改成yes  即可

./redis-server  /etc/redis/redis-conf    使用配置文件后台启动

10、关闭linux后台运行的redis服务
进入 bin 目录
使用 pkill 命令
pkill -9 redis-server

11、redis客户端连接
./redis-cli -h 192.168.137.30 -p 6379
set name hello
get name

12、redis 主从同步,slave启动时,会给master发送一个同步命令,然后master以文件的形式同步给slave;
第一次是全量同步,以后会以增量的形式同步,
master同步时数据是非阻塞的,slave同步时时阻塞的(当slave正在同步时,如果应用发送请求过来,必须等slave同步完之后,才能接受请求)

哨兵机制 切换回来之前的主从 一是修改sentinel配置文件,二是关掉sentinel进程,重启redis主从
master  读写并行
slave  只读
    ./redis-cli -h 192.168.137.30 -p 6379 客户端连接
  
进入后
192.168.137.30:6379> info  查看配置信息

13、哨兵后台启动 
修改配置文件sentinel.conf 增加 daemonize yes

启动  ./redis-sentinel /etc/redis/sentinel.conf


通过以上步骤,redis环境配置基本上就完成了。

开始创建springboot项目,这里使用的是idea,新建project-->Spring Initializr 然后next,定义相关包名 路径即可.

1、application.yml配置如下:

spring:
  redis:
    hostName: 192.168.137.30
    port: 6379
    password:
    pool:
      maxActive: 200
      maxWait: -1
      maxIdle: 8
      minIdle: 0
    timeout: 0
    database: 0
    sentinel:
      master: mymaster
      nodes: 192.168.137.32
      port: 26379

server:
  port: 8080

2、pom.xml增加redis依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-redis</artifactId>
   <version>1.5.6.RELEASE</version>
</dependency>
<dependency>
   <groupId>redis.clients</groupId>
   <artifactId>jedis</artifactId>
</dependency>
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值