springboot整合spring-data-redis遇到的坑
程序员文章站
2024-03-31 14:50:58
描述
使用springboot整合redis,使用默认的序列化配置,然后使用redis-client去查询时查询不到相应的key.
使用工具发现,key的前面多了\xa...
描述
使用springboot整合redis,使用默认的序列化配置,然后使用redis-client去查询时查询不到相应的key.
使用工具发现,key的前面多了\xac\xed\x00\x05t\x00!这样一个串.
而且value也是不能直观可见的.
问题所在
使用springdataredis,默认情况下是使用org.springframework.data.redis.serializer.jdkserializationredisserializer这个类来做序列化.
org.springframework.data.redis.core.redistemplate代码块.
public void afterpropertiesset() { super.afterpropertiesset(); boolean defaultused = false; if (defaultserializer == null) { defaultserializer = new jdkserializationredisserializer( classloader != null ? classloader : this.getclass().getclassloader()); } if (enabledefaultserializer) { if (keyserializer == null) { keyserializer = defaultserializer; defaultused = true; } if (valueserializer == null) { valueserializer = defaultserializer; defaultused = true; } if (hashkeyserializer == null) { hashkeyserializer = defaultserializer; defaultused = true; } if (hashvalueserializer == null) { hashvalueserializer = defaultserializer; defaultused = true; } } if (enabledefaultserializer && defaultused) { assert.notnull(defaultserializer, "default serializer null and not all serializers initialized"); } if (scriptexecutor == null) { this.scriptexecutor = new defaultscriptexecutor<k>(this); } initialized = true; }
解决
手动设置key的序列化方式为stringredisserializer,强制使用.
由于spring不支持泛型注入,这样会导致所有的redistemplate的key序列方式都为stringredisserializer. 同时,最好在序列化对象保存时候手动将其转为json串后存入redis.易于在可视化工具中直接查看对应value
@bean public redistemplate<string, ?> redistemplate(redisconnectionfactory factory) { redistemplate<string, object> redistemplate = new redistemplate(); redistemplate.setconnectionfactory(factory); redisserializer<string> stringredisserializer = new stringredisserializer();//long类型不可以会出现异常信息; redistemplate.setkeyserializer(stringredisserializer); return redistemplate; }
以上所述是小编给大家介绍的springboot整合spring-data-redis遇到的坑,希望对大家有所帮助
上一篇: Android异常处理最佳实践
下一篇: java使用jaxb操作xml示例
推荐阅读
-
springboot整合spring-data-redis遇到的坑
-
mybatis逆向工程与分页在springboot中的应用及遇到坑
-
SpringBoot项目整合mybatis的方法步骤与实例
-
SpringBoot整合Mysql和Redis的详细过程
-
SpringBoot 整合mongoDB并自定义连接池的示例代码
-
解决SpringBoot配置文件application.yml遇到的坑
-
SpringBoot 整合mongoDB并自定义连接池的示例代码
-
SpringBoot整合Mysql和Redis的详细过程
-
Grails中使用Spring Security遇到的坑
-
dedecms同步远程发布遇到的一些坑!!!