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缓存机制概述 在MyBatis中,缓存是一项重要的性能优化措施。它能够显著减少数据库的访问次数,提高应用程序的响应速度。MyBatis提供了两种级别的缓存支持:一级...
Redis 是一个高性能的键值对数据存储系统,常被用作数据库、缓存和消息中间件。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合,这使得 Redis 在各种场景下有着广泛的应用。Redis 以其内存高速读写性能...
1. 下载并解压"redis缓存数据库windows解压版.zip",里面包含了Redis的Windows编译版本。 2. 启动`redis-server.exe`,这将启动Redis服务器。 3. 使用`redis-cli.exe`进行客户端连接,测试Redis的基本操作,如设置和...
本资源包含Redis缓存的安装包以及相关学习教程,特别是关于Redis持久化方式的教案,对于想要深入理解和应用Redis的开发者来说,是一份宝贵的学习资料。 首先,让我们深入了解一下Redis的安装过程。在Windows环境下...
标题 "Redis缓存url访问次数(SpringBoot拦截器)" 描述的是一个使用SpringBoot框架构建的应用中,通过拦截器来统计URL访问次数,并利用Redis作为缓存存储这些计数的过程。这个技术方案通常用于网站性能优化,通过...
本示例是关于如何在VB6.0环境下使用VB.Redis缓存读写类来与Redis进行交互,使得古老的VB6程序也能享受到现代缓存服务的优势。 首先,VB.Redis缓存读写类是由用户fj543原创的,它基于`mswinsck.OCX`控件进行封装,这...
Redis是一款开源、高性能的键值对数据存储系统,常被用作数据库、缓存和消息中间件。在Windows 64位环境下安装Redis,可以利用提供的安装包进行操作。以下是一份详细的安装步骤和相关知识点: 1. **下载与解压** ...
在IT行业中,构建高效、可扩展的Web应用是至关重要的,而Spring框架、MyBatis持久层框架以及Redis缓存系统的结合使用,是实现这一目标的常见方式。本教程主要针对初学者,介绍如何将这三者整合,实现数据缓存功能,...
Redis,全称Remote Dictionary Server,是一款高性能的键值存储系统,由Salvatore Sanfilippo创建并维护,采用ANSI ...在实际项目中,可以根据业务需求选择合适的数据类型和特性,充分利用Redis来优化系统的整体性能。
Redis是一种开源的、基于键值对的数据存储系统,被广泛应用于缓存、数据库、消息中间件等场景。...在实际使用过程中,了解并掌握上述知识点,将有助于你更好地利用Redis来提升系统的性能和可扩展性。
1. **缓存**:由于Redis的高性能,常被用于网站的session存储、页面静态化数据的缓存,以及数据库查询结果的缓存,以减轻数据库压力。 2. **计数器**:如统计网页访问次数、社交网络的点赞数等。 3. **排行榜**:...
一、Redis是什么? 1 是一个高性能的(key/value)分布式内存数据库; 2 是一个NoSql数据库,基于...4 分布式系统下,Redis可以利用哨兵模式Sentinel监控主机工作状态,在Master主服务器发生故障的时候,可以实现Maste
Redis,全称Remote Dictionary Server,是一款高性能的键值对存储系统,被广泛应用于缓存、消息中间件、计数器...了解和掌握这些Redis的核心知识点,有助于你在开发过程中有效地利用Redis,提升应用的性能和响应速度。
Redis 是一个高性能的键值对数据存储系统,常被用作缓存数据库。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,这些数据结构设计得非常巧妙,使得 Redis 在处理复杂的数据操作时表现出色。Redis 的...
Redis是一款高性能的键值对型数据库,广泛应用在缓存、数据持久化、消息队列等多个领域。本资料详细解析了Redis的基本概念、数据结构、...通过深入学习和实践,我们可以更好地利用Redis优化系统性能,解决实际问题。
**二、Redis缓存使用** 1. **缓存策略**: 缓存策略通常包括LRU(Least Recently Used)和LFU(Least Frequently Used),Redis自身并不直接提供这两种策略,但可以通过第三方库实现。 2. **缓存失效**: 可以设置...
### Redis系统学习之缓存穿透、缓存击穿与缓存雪崩的概念及其解决方案 #### 缓存穿透 **概念**: 缓存穿透是指在高并发场景下,大量的请求访问了一个既不在缓存中也不在数据库中的数据。这种情况通常发生在非法...
### Redis非关系型数据库知识点详解 #### 一、Redis简介与特点 - **定义**: Redis是一种开源的、基于内存的日志型Key-Value数据库。它使用ANSI C编写,支持网络连接,提供丰富的API接口供多种编程语言调用。 - **...
Redis,作为一个高性能的键值对数据存储系统,广泛应用于缓存、消息队列以及数据结构服务器等场景。本文将深入探讨Redis的高级特性,包括慢查询、Pipeline、事务和Lua脚本,帮助你更好地理解和利用这些特性提升系统...
Redis是一种高性能的键值对数据存储系统,常用于缓存、消息队列和数据库功能。在本场景中,"redis客户端,连接查看redis数据库"指的是使用特定的客户端工具来连接到Redis服务器,以便管理和操作存储在Redis中的数据...