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 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog