Spring整合Redis

文章目录

1. Spring - Data - Redis

1.1. 添加依赖

1.2. 配置RedisTemplate

1.3. 序列化问题

1.4. RedisTemplate

1.4.1. 常用的类

1.5. 文档

Spring - Data - Redis

添加依赖

  • 需要spring的版本为4.xxx
<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>2.9.0</version>
	<type>jar</type>
	<scope>compile</scope>
</dependency>

<dependency>
	<groupId>org.springframework.data</groupId>
	<artifactId>spring-data-redis</artifactId>
	<version>1.8.9.RELEASE</version>
</dependency>

配置RedisTemplate

  • /src/main/resource文件夹下新建一个redis.properties文件,其中设置redis的配置信息
hostName=39.105.123.197  
port=6379
timeout=15000
usePool=true
maxIdle=80
minIdle=80
maxWaitMillis=500
minEvictableIdleTimeMillis=300000
numTestsPerEvictionRun=3
timeBetweenEvictionRunsMillis=60000
testOnBorrow=true
testOnReturn=false
testOnCreate=false
  • src/main/resource文件夹下新建一个文件spring-redis.xml
    • 创建连接池JedisPoolConfig
    • 创建连接工厂JedisConnectionFactory
    • 配置RedisTemplate,用于操作Redis数据库
<!-- 加载redis.properties,其中定义了数据库的配置信息 -->
	<util:properties id="redisConfig" location="classpath:redis.properties" />

	<!-- 配置Redis的连接池 -->
	<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
		<!-- 配置最大空闲连接数,当空闲连接超过该值时就挨个关闭多余的连接,但不能小于minldle -->
		<property name="maxIdle" value="#{redisConfig.maxIdle}"></property>

		<!-- 配置最小空闲连接数 -->
		<property name="minIdle" value="#{redisConfig.minIdle}"></property>

		<!-- 验证连接是否有效 -->

		<!-- 设置获取连接的时候测试连接是否可用,默认为false -->
		<property name="testOnBorrow" value="#{redisConfig.testOnBorrow}"></property>
		<!-- 新建连接的时候测试连接是否可用,默认为false -->
		<property name="testOnCreate" value="#{redisConfig.testOnCreate}"></property>
		<!-- 将连接释放回连接池的时候测试连接 默认为false -->
		<property name="testOnReturn" value="#{redisConfig.testOnReturn}"></property>
		<!-- 设置等待获取连接池连接的时间,一旦超过这个时间,抛出异常 单位毫秒 -->
		<property name="maxWaitMillis" value="#{redisConfig.maxWaitMillis}"></property>


		<!-- 连接空闲多久从池中去除,单位为毫秒 <=0表示禁用 -->
		<property name="minEvictableIdleTimeMillis" value="#{redisConfig.minEvictableIdleTimeMillis}"></property>

		<!-- 设置每次测试多少空闲连接 <=0表示禁用 -->
		<property name="numTestsPerEvictionRun" value="#{redisConfig.numTestsPerEvictionRun}"></property>

		<!-- 设置定时测试时间,单位毫秒 <=0表示禁用 -->
		<property name="timeBetweenEvictionRunsMillis" value="#{redisConfig.timeBetweenEvictionRunsMillis}"></property>

	</bean>

	<bean id="jedisConnFactory"
		class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
		<!-- 设置是否使用连接池,默认为true -->
		<property name="usePool" value="#{redisConfig.usePool}" />

		<!-- 设置连接池,使用上面配置好的连接池jedisPoolConfig -->
		<property name="poolConfig" ref="jedisPoolConfig"></property>

		<!-- 设置远程的IP地址 -->
		<property name="hostName" value="#{redisConfig.hostName}" />

		<!-- 设置端口号,默认为6379 -->
		<property name="port" value="#{redisConfig.port}"></property>

		<!-- 设置获取连接的超时时间 -->
		<property name="timeout" value="#{redisConfig.timeout}"></property>
	</bean>

	<!-- 配置 StringRedisSerializer序列化 -->
	<bean id="stringRedisSerializer"
		class="org.springframework.data.redis.serializer.StringRedisSerializer" />

	<bean id="jdkSerializationRedisSerializer"
		class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />

	<!-- 配置RedisTemplate,其中封装了操作Redis的各种方法 -->
	<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">

		<!-- 配置Jedis的连接工厂,引用上面 -->
		<property name="connectionFactory" ref="jedisConnFactory" />

		<!-- 配置key的序列化 一般都会使用stringRedisSerializer,默认使用的是JdkSerializationRedisSerializer -->
		<property name="keySerializer" ref="stringRedisSerializer"></property>
		
		<!-- 配置JdkSerializationRedisSerializer序列化 -->
		<property name="valueSerializer" ref="jdkSerializationRedisSerializer"></property>
		
		<!-- 配置hashkey的序列化,就是field -->
		<property name="hashKeySerializer" ref="stringRedisSerializer"></property>
		
		<!-- 配置hashvalue的值的序列化 -->		
		<property name="hashValueSerializer" ref="jdkSerializationRedisSerializer"></property>
	</bean>

序列化问题

  • Spring Data Redis提供了对Key-Value的序列号,在使用RedisTemplate对象是默认使用JdkSerializationRedisSerializer实现。还提供了其它的序列化实现如:Jackson2JsonRedisSerializerJacksonJsonRedisSerializerGenericToStringSerializerStringRedisSerializerOxmSerializer
  • 各种序列化的方式有各种的优点,需要自己权衡使用
  • 上面我们使用的是JdkSerializationRedisSerializer,但是我们的key使用的是StringRedisSerializer

RedisTemplate

  • 这个封装了redis中的所有命令,只需要我们调用即可
  • API文档

常用的类

Key类型操作

ValueOperations

Redis String/Value 操作

ListOperations

Redis List 操作

SetOperations

Redis Set 操作

ZSetOperations

Redis Sort Set 操作

HashOperations

Redis Hash 操作

Value约束操作

BoundValueOperations

Redis String/Value key 约束

BoundListOperations

Redis List key 约束

BoundSetOperations

Redis Set key 约束

BoundZSetOperations

Redis Sort Set key 约束

BoundHashOperations

Redis Hash key 约束

文档

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mybatis配置事务管理器

    爱撒谎的男孩
  • Mybatis配置事务管理器

    爱撒谎的男孩
  • Spring配置DBCP连接池

    爱撒谎的男孩
  • 使用C3P0连接数据库

  • MySQL连接池

    Linux
  • 【JavaWeb基础】JDBC用户登录注册(修订版)

    本来使用的是XML文件作为小型数据库,现在使用Mysql数据库,代码究竟要改多少呢?我们拭目以待!

    Java3y
  • 用户登陆注册【JDBC版】

    前言 在讲解Web开发模式的时候,曾经写过XML版的用户登陆注册案例!现在在原有的项目上,使用数据库版来完成用户的登陆注册!如果不了解的朋友,可以看看我Web开...

    Java3y
  • iOS动画开发之五——炫酷的粒子效果 原

            在上几篇博客中,我们对UIView层的动画以及iOS的核心动画做了介绍,基本已经可以满足iOS应用项目中所有的动画需求,如果你觉得那些都还不够炫...

    珲少
  • c3p0的3种配置方式

    1.通过setters方法一个个地设置各个配置项 2.类路径下提供一个c3p0.properties文件 3.类路径下提供一个c3p0-config.xml文件

    py3study
  • Mysql -- 配置C3P0

    创建c3p0-config.xml文件,名字不能改动,并且放到src下,c3p0包会自动到src下查找c3p0-config.xml,名字错了,地方不对都不能配...

    晚上没宵夜

扫码关注云+社区

领取腾讯云代金券