spring redisTemplate 持久化到redis中数据更改为String类型
来源:互联网 发布:js获取页面所有内容 编辑:程序博客网 时间:2024/06/06 07:37
原配置文件:
<bean id="jedisTemplate" class="com.mljr.yourcredit.installment.common.JedisWrapper"
scope="singleton">
<property name="redisServerHost" value="${redis.server.host}" />
<property name="redisServerPort" value="${redis.server.port}" />
<property name="redisServerPassword" value="${redis.server.pwd}" />
<property name="redisServerTimeout" value="${redis.server.timeout}" />
</bean>
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="${redis.maxIdle}" />
<property name="maxTotal" value="${redis.maxTotal}" />
<property name="minIdle" value="${redis.minIdle}" />
<property name="testOnBorrow" value="${redis.testOnBorrow}" />
</bean>
<bean id="jedisConnFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"p:host-name="${redis.server.host}" p:port="${redis.server.port}"
p:timeout="${redis.server.timeout}" p:password="${redis.server.pwd}"
p:pool-config-ref="poolConfig" p:use-pool="true" />
<bean id="stringSerializer"
class="org.springframework.data.redis.serializer.StringRedisSerializer" />
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="jedisConnFactory" p:keySerializer-ref="stringSerializer"
p:hashKeySerializer-ref="stringSerializer"
/>
原因:
spring操作redis是在jedis客户端基础上进行的,而jedis客户端与redis交互的时候协议中定义是用byte类型交互,jedis中提供了string类型转为byte[]类型,
但是看到spring-data-redis中RedisTemplate<K, V>在操作的时候k,v是泛型的,所以RedisTemplate中有了上面那段代码,在没有特殊定义的情况下,spring默认采用defaultSerializer = new JdkSerializationRedisSerializer();来对key,value进行序列化操作
解决的办法就是手动定义序列化的方法,spring-data-redis中还提供了一个序列化的类专门针对string类型的序列化org.springframework.data.redis.serializer.StringRedisSerializer这个类,可以在xml里面指定:
将配置文件更改为:
<bean id="jedisTemplate" class="com.mljr.yourcredit.installment.common.JedisWrapper"
scope="singleton">
<property name="redisServerHost" value="${redis.server.host}" />
<property name="redisServerPort" value="${redis.server.port}" />
<property name="redisServerPassword" value="${redis.server.pwd}" />
<property name="redisServerTimeout" value="${redis.server.timeout}" />
</bean>
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="${redis.maxIdle}" />
<property name="maxTotal" value="${redis.maxTotal}" />
<property name="minIdle" value="${redis.minIdle}" />
<property name="testOnBorrow" value="${redis.testOnBorrow}" />
</bean>
<bean id="jedisConnFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:host-name="${redis.server.host}" p:port="${redis.server.port}"
p:timeout="${redis.server.timeout}" p:password="${redis.server.pwd}"
p:pool-config-ref="poolConfig" p:use-pool="true" />
<bean id="stringSerializer"
class="org.springframework.data.redis.serializer.StringRedisSerializer" />
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="jedisConnFactory" p:keySerializer-ref="stringSerializer"
p:hashKeySerializer-ref="stringSerializer"
p:hashValueSerializer-ref="stringSerializer"/>
<bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate"
p:connectionFactory-ref="jedisConnFactory" />
<bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager"
c:redisOperations-ref="redisTemplate" />
标红处我们增加了属性和配置bean"stringRedisTemplate" 并且 redisTemplate 新增加了 p:hashKeySerializer-ref 和 p:hashValueSerializer-ref 并且都引用了 stringSerializer String类型的 redis持久化class 所以当我们再从 redis命令行中 输出信息的时候 看到的便是 string类型的数据了。当然 我们再次引用的时候 使用 stringRedisTemplate 即可。
例如:
ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue();
opsForValue.set("testKeyValue","1");
System.out.println(opsForValue.get("testKeyValue")); //1 这里就变成string类型了 之前是 byte类型 也就是springRedisTemplate 默认的
- spring redisTemplate 持久化到redis中数据更改为String类型
- redis-springboot-redistemplate更改序列化方式
- Redis中-string类型数据
- redis中数据持久化(四)
- Maven中Spring-Data-Redis存储对象(redisTemplate)
- Maven中Spring-Data-Redis存储对象(redisTemplate)
- Maven中Spring-Data-Redis存储对象(redisTemplate)
- Maven中Spring-Data-Redis存储对象(redisTemplate)
- Maven中Spring-Data-Redis存储对象(redisTemplate)
- 关于spring中使用redis中文乱码问题(redistemplate)
- Maven中Spring-Data-Redis存储对象(redisTemplate)
- Maven中Spring-Data-Redis存储对象(redisTemplate)
- spring集成redis之RedisTemplate
- Spring集成Redis使用RedisTemplate
- Spring RedisTemplate操作-String操作
- redis数据持久化
- Redis数据持久化
- redis数据持久化
- 奇怪的短信
- HyperNet: Towards Accurate Region Proposal Generation and Joint Object Detection
- d3区域生成器
- php 简单消息推送(含源码)
- LinkedList类概述
- spring redisTemplate 持久化到redis中数据更改为String类型
- iOS汇编教程:ARM(1)和ARM(2)
- Mac 误删(抹掉)系统后,恢复重装
- if + WARN 可以简化code
- MYSQL无法打开的一些解决方法
- linux阻塞与非阻塞,同步与异步、I/O模型
- 74. Search a 2D Matrix
- linkedList模拟栈结构
- 灰度共生矩阵及相关特征值的计算——opencv