SpringBoot中使用redis做分布式锁

本文通过模拟挂号系统的并发问题,阐述了在集群环境中,单一服务内的锁无法解决线程安全问题。作者介绍了如何使用Redis作为分布式锁来解决这个问题,详细展示了从问题的提出到利用Redis配置和操作,最终成功防止了挂号号段的冲突,实现了分布式环境下的线程安全。
摘要由CSDN通过智能技术生成

一.模拟问题

最近在公司遇到一个问题,挂号系统是做的集群,比如启动了两个相同的服务,病人挂号的时候可能会出现同号的情况,比如两个病人挂出来的号都是上午2号.这就出现了问题,由于是集群部署的,所以单纯在代码中的方法中加锁是不能解决这种情况的.下面我将模拟这种情况,用redis做分布式锁来解决这个问题.

1.新建挂号明细表

2.在idea上新建项目

下图是创建好的项目结构,上面那个parent项目是其他项目不用管它,和新建的没有关系

3.开始创建controller,service,dao(mapper),写好后整体结构如下

这里贴上service实现类的代码,主要代码就是这一块:

package com.zk.service.impl;

import com.zk.mapper.MzMapper;
import com.zk.service.MzService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;

/**
 * 门诊操作service实现类
 *
 * @author zk
 * @date 2020-9-9
 */
@Service
public class MzServiceImpl implements MzService {
    @Autowired
    private MzMapper mzMapper;

    @Override
    public Map<String, Object> gh(String ksdm, String ysdm,String brid) {
        Map<String,Object> resultMap = new HashMap<>();
        int ghxh = 0;
        //获取当前的挂号序号
        Map<String, Object> ghxhMap =
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值