前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring整合Redis

Spring整合Redis

作者头像
爱撒谎的男孩
发布2019-12-31 15:10:43
6940
发布2019-12-31 15:10:43
举报
文章被收录于专栏:码猿技术专栏码猿技术专栏

文章目录

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
代码语言:javascript
复制
<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的配置信息
代码语言:javascript
复制
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数据库
代码语言:javascript
复制
<!-- 加载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 约束

文档

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring - Data - Redis
    • 添加依赖
      • 配置RedisTemplate
        • 序列化问题
          • RedisTemplate
            • 常用的类
          • 文档
          相关产品与服务
          文件存储
          文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档