当前位置:   article > 正文

springboot整合redis注解版本 redis与Mysql实现数据同步_springboot项目中redis数据怎么给mysql

springboot项目中redis数据怎么给mysql

一、实现原理

通过注解形式实现数据库和redis中数据同步 @Cacheable 用于方法上

二、代码实现

1.引入库

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-redis</artifactId>
            <version>1.4.7.RELEASE</version>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2.链接redis服务 配置文件 application.properties

spring.redis.database=10
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=
  • 1
  • 2
  • 3
  • 4

3、接口调用

重点: @Cacheable(cacheNames = “gatewayHandler”, key = “‘getGatewayHandler’”)
如果 key = “getGatewayHandler” 不加上 ‘getGatewayHandler’ 则会抛出以下异常

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Fri Sep 24 10:07:01 CST 2021
There was an unexpected error (type=Internal Server Error, status=500).
EL1008E: Property or field 'getGatewayHandler' cannot be found on object of type 'org.springframework.cache.interceptor.CacheExpressionRootObject' - maybe not public or not valid?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
/**
 * @author sean
 * @Description TODO
 * @createTime 2021年09月23日 21:04:00
 */
@RestController
@RequestMapping("/redis/")
public class RedisController {
    
    @Autowired
    private GatewayHandlerDbService gatewayHandlerDbService;

    /**
     * 注解版本缓存数据
     *
     * @return
     */
    @Cacheable(cacheNames = "gatewayHandler", key = "'getGatewayHandler'")
    @GetMapping("/set/handler/")
    public Object getGatewayHandler() {

		//如果 redis中没有则执行该方法去数据库查询,如果redis中有则无需执行该操作
        return gatewayHandlerDbService.searchAll();
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

4.启动类 开始redis缓存注解 @EnableCaching

/**
 * @author sean
 * @createTime 2021年09月23日 20:38:00
 */
@SpringBootApplication
@MapperScan("com.sean.springboot.design.mapper")
//开始redis缓存注解
@EnableCaching
public class RedisApp {
    public static void main(String[] args) {
        SpringApplication.run(RedisApp.class, args);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

三、有待更新 Mysql 与Redis 一致性解决方案

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/386131
推荐阅读
相关标签
  

闽ICP备14008679号