King_国王 2019-07-11 18:36 采纳率: 0%
浏览 369

spring+springMVC+mybatis+redis的整合(注解方式)可以返回数据,但是不能缓存到redis中的问题?

1:spring的核心配置文件

<context:property-placeholder location="classpath:config.properties,classpath:config/redis.properties" />

<!-- 创建一个jedis并设置 IP、port、password-->
    <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <!-- <property name="poolConfig" ref="poolConfig"/> -->
        <property name="hostName" value="${redis.url}"/>
        <property name="port" value="${redis.port}"/>
        <property name="password" value="${redis.auth}"/>
        <property name="database" value="${redis.dbIndex}"/>
        <!-- <property name="timeout" value="20000" ></property> -->
    </bean>

    <!-- redis 序列化策略 ,通常情况下key值采用String序列化策略, -->  
    <!-- 如果不指定序列化策略,StringRedisTemplate的key和value都将采用String序列化策略; -->  
    <!-- 但是RedisTemplate的key和value都将采用JDK序列化 这样就会出现采用不同template保存的数据不能用同一个template删除的问题 -->
    <bean id="stringSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
    <bean id="jdkSerializerRedis" class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>

    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" >  
         <property name="connectionFactory" ref="jedisConnectionFactory" />
         <property name="keySerializer" ref="stringSerializer"/> <!-- key使用String序列化方式 -->
         <property name="valueSerializer" ref="stringSerializer"/><!-- value使用jdk序列化方式 -->
    </bean >

    <!-- 配置RedisCacheManager -->
    <bean id="redisCacheManager" class="org.springframework.data.redis.cache.RedisCacheManager">
        <constructor-arg name="redisOperations" ref="redisTemplate"/>
        <property name="defaultExpiration" value="${redis.expiration}"/>
    </bean>

    <aop:aspectj-autoproxy proxy-target-class="true"/>

2:注解

@Cacheable(value ="user")
    @RequestMapping("allmapper/")
    @ResponseBody
    public List<User> allmapper(){
        List<User> selectAllExpertList = mapperService.selectExpertMapper();
        return selectAllExpertList;
    }

3:实体类

我给实体类实现了序列化接口

4:结果:我能返回数据,但是不能把返回的数据放入redis中。有哪位大佬遇见过这种情况的,接小老弟讲解讲解呗!

  • 写回答

1条回答

  • 关注

    建议一步步调试下:
    1、先连下redis server,试试用终端命令的方式能不能写进去;
    2、本地用jedis client写个demo,连接到redis后,试试简单的set k v,看看是否能写进去;
    3、回到你的项目中,从容器启动后,打几个断点,先看看redis连接能不能初始化成功,然后对set的位置也增加日志和断点,并看看返回结果
    只能帮你提供一些咱们常用的解决问题步骤,希望能帮到你!

    评论

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值