redis + spring + hibernate

本文介绍了Redis与Spring的整合,包括环境搭建、配置、序列化机制和测试。还探讨了Redis的事务特性,并结合Hibernate进行事务管理。通过示例展示了如何在Spring中使用Redis事务和Hibernate事务。
摘要由CSDN通过智能技术生成

概述

        今天使用redis锁犯了一个低级的错误,锁的时间设置太短,导致多线程跑时,造成对数据的重复处理,对自己编码习惯做一个深刻的反思,使用redis这种实时存储的服务,存储要考虑容量,速度,安全,但是在实时方面,过期时间应该是一个很重要的参数,不应忽略.值此反思之际,顺便对redis认知作一个简陋的总结.

        redis是一个key_value的存储系统,支持存储的类型包括string,list,set,zset,hash,对数据的操作有push/pop,add/remove以及交并差集等,重要的一点,这些操作多事原子性.今天主要整理的是redis与spring的整合以及使用.

        spring集成redis(spring-redis-data),现在以常用的模板使用为例.其集成的思路跟之前spring集成hibernate很相似,redis对应数据库,配置中有池,有工厂,模板内封装有连接.

spring整合redis 

搭建环境

       环境:可以正常访问的redis服务器+spring4.3.4.RELEASE

       redis服务的简单搭建,用于测试,windows下,搭建简单redis

https://github.com/dmajkic/redis/downloads   下载,选择对应的32位或64,我的是64位,cmd窗口下进入64bit的文件夹,执行redis-server.exe redis.conf便可默认启动redis,测试redis安装是否成功,双击redis-cli.exe,进入新的cmd窗口,插入一条记录set hello hi,查询get hello,得到"hi",安装成功

pom.xml

	<dependencies>
	
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
		<!--spring整合redis,模板.工厂.连接池等  -->
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-redis</artifactId>
			<version>1.8.0.RELEASE</version>
		</dependency>
		
		<!--spring测试-->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>4.3.4.RELEASE</version>
		</dependency>

		<!--redis客户端,连接redis-->
		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>2.9.0</version>
		</dependency>

	</dependencies>  
      这里有个地方注意,spring-test 版本与junit版本要匹配,不然会测试会报错

redis.properties

#访问地址  
redis.host=localhost  
#访问端口  
redis.port=6379  
#注意,如果没有password,此处不设置值,但这一项要保留  
redis.password=
  
#最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。  
redis.maxIdle=100 
#最小空闲数
redis.minIdle=10
#连接池的最大数据库连接数。设为0表示无限制  
redis.maxActive=600  
#最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。  
redis.maxWait=1000  
#在borrow一个jedis实例时,是否提前进行alidate操作;如果为true,则得到的jedis实例均是可用的;  
redis.testOnBorrow=true  

spring-redis.xml

    <!--ignore-unresolvable=“true" 设置true找不到不会报错,默认false-->  
    <context:property-placeholder location="classpath:redis.properties" ignore-unresolvable="false"/>  
  
    <!-- redis连接池 -->  
    <bean id="jedisConfig" class="redis.clients.jedis.JedisPoolConfig">  
    <!--以下所有的参数配置可以在JedisPoolConfig中查找,都有其相应的默认值-->  
        <property name="maxTotal" value="${redis.maxActive}"></property>  
        <property name="minIdle" value="${redis.minIdle}" />
        <property name="maxIdle" value="${redis.maxIdle}"></property>  
        <property name="maxWaitMillis" value="${redis.maxWait}"></property>  
        <property name="testOnBorrow" value="${redis.testOnBorrow}"></property>  
    </bean>  
    
    <!-- redis连接工厂 -->  
    <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">  
        <property name="hostName" value="${redis.host}"></property>  
        <property name="port" value="${redis.port}"></property>  
        <property name="password" value="${redis.password}"></property>  
        <property name="poolConfig" ref="jedisConfig"></property>  
    </bean>  
    
    <!-- redis操作模板,这里采用尽量面向对象的模板 -->  
    <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">  
        <property name="connectionFactory" ref="connectionFactory"/>  
        <!--     如果不配置Serializer,那么存储的时候只能使用String,如果用对象类型存储,那么会提示错误 can't cast to String!!!-->  
        <property name="keySerializer">  
            <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>  
        </property>  
        <property name="valueSerializer">  
            <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>  
        </property>  
        <!--开启事务-->  
        <property name="enableTransactionSupport" value="true"/>  
    </bean>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我听到您的要求了。您的第一个问题是要我描述关于Struts、Spring Boot、Hibernate、PostgreSQL、Redis和Tomcat技术框架选型的内容,需要写15000字。 首先,让我们先了解一下这些技术框架的基本概念。 - Struts是一个基于MVC模式的Java Web应用程序框架,它使用了丰富的标签库和AJAX技术实现动态Web页面的构建。 - Spring Boot是一个基于Spring框架的开源Java应用程序框架,它提供了一些自带的默认设置,使得Java应用程序更易于构建和部署。 - Hibernate是一个流行的开源Java持久性框架,可以直接将Java对象映射到数据库表中,从而简化了开发人员的工作。 - PostgreSQL是一个开源的关系型数据库管理系统,在性能和可扩展性方面颇有优势。 - Redis是一个基于内存的数据结构存储系统,可以作为高效的缓存解决方案。 - Tomcat是一个流行的开源Java Web服务器软件,支持JSP和Servlet技术。 在选择这些技术框架时,需要考虑以下几个方面的因素: 1. 功能和性能要求:根据您的应用程序功能需求及性能要求,选择适合的技术框架。 2. 开发人员技能:根据您的开发团队的技能和经验,选择易于学习和掌握的技术框架。 3. 维护和支持:选择一个活跃的社区和可靠的技术供应商。 4. 安全性:选择拥有安全性建议和认证的技术框架。 5. 成本:开发和维护的成本也是选择技术框架的因素之一。 在这些技术框架中,Struts已经很长时间没有更新了,在性能、安全性和响应时间方面逊于Spring Boot。 因此,建议使用Spring Boot作为Web应用程序框架,并与Hibernate进行数据持久化。同时,选择PostgreSQL作为后端数据库,因为它具有性能和可扩展性优势。 对于系统中需要进行缓存的数据,Redis是一个高效的解决方案。最后,Tomcat作为Java Web服务器Runtim就可以满足要求。 在整个过程中,保证代码的质量和可维护性是非常重要的。使用这些现代化的技术框架,我们可以轻松构建高质量、高性能的应用程序。 以上是关于Struts、Spring Boot、Hibernate、PostgreSQL、Redis和Tomcat技术选型的详细介绍。希望对您有所帮助。如果您还有任何疑问,请随时联系我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值