`
恶魔眼睛
  • 浏览: 10731 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

高并发情况下的redis链接处理

阅读更多
项目中用到redis,之后的高并发环境下测试,发现经常出现链接获取不到的问题。
最后修改的代码如下:
Jedis jedis = jedisPool.getResource();
			boolean success = true;
			try {
				if(jedis == null){
					Product product = productDao.findProductById(id);
					return product;
				}
				String json = jedis.hget(JedisKeyConstants.PRODUCT_CONFIG__CACHE_KEY, id);
				if (StringUtils.isNotBlank(json)) {
					return JSON.parseObject(json, Product.class);
				}else{
					Product product = productDao.findProductById(id);

					if (product != null) {
						Transaction t = jedis.multi();
						
						//t.hdel(key, field)
						//t.del(JedisKeyConstants.PRODUCT_CONFIG__CACHE_KEY);
						t.hset(JedisKeyConstants.PRODUCT_CONFIG__CACHE_KEY, product.getId(), JSON.toJSONString(product));

						t.exec();
						
						jedis.bgsave();
						return product;
					}
				}
			} catch (Exception e) {
				success  = false;
				if(jedis != null){
					jedisPool.returnBrokenResource(jedis);
		        }
			} finally{
				if(success && jedis != null){
					jedisPool.returnResource(jedis);					
				}

			}

分享到:
评论

相关推荐

    基于电商的高并发Redis专栏讲解

    Redis 是一款高性能的键值数据库,因其内存存储特性,使其在处理高并发场景时表现出色。在电商环境中,Redis 常用于分页缓存、购物车缓存和读写分片优化等场景,以提高系统的响应速度和用户体验。 1. **Redis 运行...

    基于redis实现高并发异步秒杀点评项目

    在构建高并发异步秒杀点评项目的背景下,Redis作为一个高性能的键值数据库,因其独特的特性在处理此类场景中发挥着至关重要的作用。本项目利用Redis的缓存特性、队列功能以及原子操作来确保系统在面对大量用户请求时...

    .NET链接Redis类库

    它会自动管理连接的创建、复用和关闭,确保高并发环境下的高效运行。 9. **持久化与复制**:虽然Redis本身支持RDB和AOF两种持久化方式,ServiceStack.Redis库并不直接处理这些。但开发人员需要了解这些特性,以便在...

    (源码)基于SpringBoot和Redis的高并发秒杀系统.zip

    本项目是一个基于Spring Boot框架的高并发秒杀系统,旨在优化秒杀场景下的性能和用户体验。通过引入Redis缓存、CDN加速、分布式消息队列等技术手段,系统能够有效应对高并发请求,确保秒杀活动的顺利进行。 ## 项目...

    C++ 操作Redis数据库VS2013测试Demo及redis sdk

    它支持同步和异步两种模式,同步模式适用于简单场景,异步模式则适合处理高并发请求。 2. **VS2013环境配置**: 在Visual Studio 2013中,你需要将hiredis库添加到项目中,包括头文件和库文件。首先,将下载的...

    redis6.0 window版本

    1. **多线程I/O**:Redis 6.0引入了多线程模型,将网络I/O操作分担到多个线程中,提升了处理高并发请求的能力,但请注意,Redis的核心数据操作仍然是单线程执行,以保持其原子性和一致性。 2. **LUA脚本改进**:在...

    tomcat-redis依赖jar包

    Jedis是较早且广泛应用的Redis客户端,支持多种Redis命令,而Lettuce则提供了更现代的Netty基础的异步API,适合高并发场景。 2. **集成步骤** - 添加依赖:在Maven或Gradle项目中,你需要在pom.xml或build.gradle...

    redis+jedis

    默认情况下,Redis服务器会启动在6379端口。 2. **配置**:Redis的配置文件是`redis.conf`,可以根据需求修改各项参数,如内存限制、持久化策略、日志级别等。 3. **启动**:在安装目录下的`bin`目录中,运行`redis-...

    redis4.0-windows64位

    - **多线程I/O**:尽管Redis仍然是单线程模型,但4.0引入了多线程来处理网络I/O,提升了处理高并发请求的能力。 2. **Windows 64位环境** Redis通常被认为是更适合Linux环境的服务,但在Windows上也有广泛的应用...

    hiredis,swoole 连接redis

    总的来说,结合hiredis和swoole,我们可以构建出一个高性能、高并发的Redis客户端,这对于需要处理大量并发请求的Web应用来说,是非常有价值的。同时,这也意味着开发者需要对swoole的事件驱动模型和协程机制有深入...

    Windows下Redis3.0 编译过后的exe

    2. **LUA脚本原子执行**:Redis 3.0增强了对LUA脚本的支持,确保脚本在服务器端以原子方式执行,这意味着在脚本执行过程中,不会与其他命令发生冲突,提高了数据处理的并发性和安全性。 3. **流式数据输出(Pub/Sub...

    redis-mac-6.2.2

    例如,它可能引入了多线程支持,这使得Redis在处理大量并发请求时能更好地利用现代多核处理器的性能。同时,它可能还增强了对复制(replication)的支持,提供了更强大的主从同步机制,以及对客户端的流控策略,防止...

    redis连接池

    Redis连接池是数据库连接管理的一种策略,主要用于优化数据库操作,特别是在高并发环境下,它可以有效地减少创建和销毁连接的开销,提高系统性能。Ecmall是一个开源的电子商务平台,其在处理大量用户请求时,利用...

    redis-5.0.3.zip

    1. 高性能:Redis通过内存存储数据,读写速度极快,适合处理大量请求。 2. 支持丰富的数据类型:除了基本的字符串,还支持哈希表、列表、集合、有序集合等复杂数据结构,这使得Redis在各种场景下都能发挥作用。 3. ...

    redis -ppt笔记

    Redis 是一个强大且灵活的键值数据库,它的内存存储、丰富的数据结构和高并发特性使其在现代 Web 开发中扮演着重要角色。了解 Redis 的基础知识、特性和操作方法,对于任何希望优化应用程序性能或构建高效数据解决...

    尚硅谷Redis视频下载链接

    3. 分布式锁:使用SETNX或SET命令配合超时机制实现,确保并发环境下的资源独占。 六、Redis的应用场景 1. 缓存:快速响应请求,减轻数据库压力。 2. 社交网络:存储用户关系,统计粉丝数等。 3. 排行榜:实时更新...

    Redis 64位window 版 Redis-x64-3.2.100

    Redis 是一个高性能的键值数据库,常用于缓存和数据持久化。在Windows平台上,Redis提供了专门的版本来适应操作系统的特性。"Redis-x64-3.2.100"是Redis的一个64位版本,适用于64位的Windows系统。这个版本可能包含...

    Redis-3.2.100-Windows集群配置版

    这种分布式架构使得Redis集群能够处理更大的数据量和更高的并发请求。 哨兵系统是Redis的一个重要组件,用于监控和管理集群。在该压缩包中,哨兵已经预配置好,但为了实现哨兵模式,你需要根据实际情况修改主从配置...

    php-redis 中文文档

    - 对于事务处理,请仔细考虑原子性和并发控制问题。 - 发布与订阅功能依赖于 Redis 服务器的支持。 以上内容概括了 `phpredis` 扩展的主要功能及其使用方法,希望这些知识点能够帮助开发者更好地理解和运用此工具。

    redis 讲义.docx

    它被设计为解决高并发、高可用、高可扩展性以及大数据存储的问题,常作为关系型数据库的补充。Redis 不是传统的 SQL 数据库,而是属于 NoSQL 领域,其中 NoSQL 意味着“非仅 SQL”,意味着它不依赖于传统的关系...

Global site tag (gtag.js) - Google Analytics