`

利用redis缓存锁记录,数据库锁行

 
阅读更多
public ResultBean issue(String originID, final Long userID, final String fromIp) {
    try {
        if (!cacheSessionStorage.lock(ISSUING_LOCK + userID)) {
            return ResultBean.failed(Result.GLOBAL.FAIL.getCode(), "由于当前正在提现申请等原因,提现额度可能发生变化,发标失败,请稍后重试。");
        }
        Subject subjectDraft = subjectDraftDAO.getByOriginID(originID);
        int limitCategory = subjectDraft.getLimitCategory().intValue();
        if (LimitCategory.NET_VALUE.getType() == limitCategory) {
            return issueNetValue(originID, userID, fromIp);
        } else if (LimitCategory.CREDIT_LIMIT.getType() == limitCategory) {
            return issueCredit(originID, userID, fromIp);
        } else if (LimitCategory.FAST_LIMIT.getType() == limitCategory
                || LimitCategory.SPECIFIC.getType() == limitCategory
                || LimitCategory.DISCUSS.getType() == limitCategory
                || LimitCategory.ESSENCE.getType() == limitCategory
                || LimitCategory.GONGXIN.getType() == limitCategory) {
            return issueFastLoan(originID, userID, fromIp);
        } else if (LimitCategory.ASSETS_LIMIT.getType() == limitCategory) {
            return issueAssets(originID, userID, fromIp);
        } else {
            throw new UserException(BeanCode.GLOBAL.FAIL.getCode(), "发标类型不存在!");
        }
    }catch (Exception e){
        throw new UserException(BeanCode.GLOBAL.FAIL.getCode(), e.getMessage());
    }finally {
        cacheSessionStorage.unlock(ISSUING_LOCK + userID);
    }
}


2.除了使用redis锁行,还有利用数据库行锁,如果要锁的表比较大,而且只是记录一个业务操作,
通常使用中间表,表示这个业务状态,加行锁。
分享到:
评论

相关推荐

    mybatis+redis缓存配置

    ### MyBatis与Redis缓存配置详解 #### 一、MyBatis缓存机制概述 在MyBatis中,缓存是一项重要的性能优化措施。它能够显著减少数据库的访问次数,提高应用程序的响应速度。MyBatis提供了两种级别的缓存支持:一级...

    redis缓存服务器

    Redis 是一个高性能的键值对数据存储系统,常被用作数据库、缓存和消息中间件。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合,这使得 Redis 在各种场景下有着广泛的应用。Redis 以其内存高速读写性能...

    redis缓存数据库windows解压版.zip

    1. 下载并解压"redis缓存数据库windows解压版.zip",里面包含了Redis的Windows编译版本。 2. 启动`redis-server.exe`,这将启动Redis服务器。 3. 使用`redis-cli.exe`进行客户端连接,测试Redis的基本操作,如设置和...

    redis缓存安装包和教案

    本资源包含Redis缓存的安装包以及相关学习教程,特别是关于Redis持久化方式的教案,对于想要深入理解和应用Redis的开发者来说,是一份宝贵的学习资料。 首先,让我们深入了解一下Redis的安装过程。在Windows环境下...

    Redis缓存url访问次数(SpringBoot拦截器)

    标题 "Redis缓存url访问次数(SpringBoot拦截器)" 描述的是一个使用SpringBoot框架构建的应用中,通过拦截器来统计URL访问次数,并利用Redis作为缓存存储这些计数的过程。这个技术方案通常用于网站性能优化,通过...

    VB_redis缓存读写类及调用demo

    本示例是关于如何在VB6.0环境下使用VB.Redis缓存读写类来与Redis进行交互,使得古老的VB6程序也能享受到现代缓存服务的优势。 首先,VB.Redis缓存读写类是由用户fj543原创的,它基于`mswinsck.OCX`控件进行封装,这...

    Redis缓存数据库安装程序window64位安装版,jar包资源

    Redis是一款开源、高性能的键值对数据存储系统,常被用作数据库、缓存和消息中间件。在Windows 64位环境下安装Redis,可以利用提供的安装包进行操作。以下是一份详细的安装步骤和相关知识点: 1. **下载与解压** ...

    spring+mybatis+redis缓存入门

    在IT行业中,构建高效、可扩展的Web应用是至关重要的,而Spring框架、MyBatis持久层框架以及Redis缓存系统的结合使用,是实现这一目标的常见方式。本教程主要针对初学者,介绍如何将这三者整合,实现数据缓存功能,...

    redis缓存技术资料

    Redis,全称Remote Dictionary Server,是一款高性能的键值存储系统,由Salvatore Sanfilippo创建并维护,采用ANSI ...在实际项目中,可以根据业务需求选择合适的数据类型和特性,充分利用Redis来优化系统的整体性能。

    Redis缓存工具

    Redis是一种开源的、基于键值对的数据存储系统,被广泛应用于缓存、数据库、消息中间件等场景。...在实际使用过程中,了解并掌握上述知识点,将有助于你更好地利用Redis来提升系统的性能和可扩展性。

    windows-redis缓存

    1. **缓存**:由于Redis的高性能,常被用于网站的session存储、页面静态化数据的缓存,以及数据库查询结果的缓存,以减轻数据库压力。 2. **计数器**:如统计网页访问次数、社交网络的点赞数等。 3. **排行榜**:...

    redis非关系型数据库

    一、Redis是什么? 1 是一个高性能的(key/value)分布式内存数据库; 2 是一个NoSql数据库,基于...4 分布式系统下,Redis可以利用哨兵模式Sentinel监控主机工作状态,在Master主服务器发生故障的时候,可以实现Maste

    redis非关系型数据库安装包

    Redis,全称Remote Dictionary Server,是一款高性能的键值对存储系统,被广泛应用于缓存、消息中间件、计数器...了解和掌握这些Redis的核心知识点,有助于你在开发过程中有效地利用Redis,提升应用的性能和响应速度。

    缓存数据库,redis_x64,缓存数据库,开发自用

    Redis 是一个高性能的键值对数据存储系统,常被用作缓存数据库。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,这些数据结构设计得非常巧妙,使得 Redis 在处理复杂的数据操作时表现出色。Redis 的...

    redis键值对型数据库知识详解.zip

    Redis是一款高性能的键值对型数据库,广泛应用在缓存、数据持久化、消息队列等多个领域。本资料详细解析了Redis的基本概念、数据结构、...通过深入学习和实践,我们可以更好地利用Redis优化系统性能,解决实际问题。

    redis缓存使用和配置

    **二、Redis缓存使用** 1. **缓存策略**: 缓存策略通常包括LRU(Least Recently Used)和LFU(Least Frequently Used),Redis自身并不直接提供这两种策略,但可以通过第三方库实现。 2. **缓存失效**: 可以设置...

    Redis系统学习之缓存穿透,缓存击穿,缓存雪崩的概念及其解决方案.docx

    ### Redis系统学习之缓存穿透、缓存击穿与缓存雪崩的概念及其解决方案 #### 缓存穿透 **概念**: 缓存穿透是指在高并发场景下,大量的请求访问了一个既不在缓存中也不在数据库中的数据。这种情况通常发生在非法...

    Redis非关系型数据库笔记-数据持久化-主从同步-缓存-笔记-五大数据类型-三大特殊数据类型

    ### Redis非关系型数据库知识点详解 #### 一、Redis简介与特点 - **定义**: Redis是一种开源的、基于内存的日志型Key-Value数据库。它使用ANSI C编写,支持网络连接,提供丰富的API接口供多种编程语言调用。 - **...

    【中间件篇-Redis缓存数据库】Redis高级特性和应用(慢查询、Pipeline、事务、Lua)

    Redis,作为一个高性能的键值对数据存储系统,广泛应用于缓存、消息队列以及数据结构服务器等场景。本文将深入探讨Redis的高级特性,包括慢查询、Pipeline、事务和Lua脚本,帮助你更好地理解和利用这些特性提升系统...

    redis客户端,连接查看redis数据库

    Redis是一种高性能的键值对数据存储系统,常用于缓存、消息队列和数据库功能。在本场景中,"redis客户端,连接查看redis数据库"指的是使用特定的客户端工具来连接到Redis服务器,以便管理和操作存储在Redis中的数据...

Global site tag (gtag.js) - Google Analytics