【问题标题】:Data Replication from MySql to Redis Server从 MySql 到 Redis 服务器的数据复制
【发布时间】:2018-08-08 06:30:27
【问题描述】:

我正在使用 Spring 框架提供的 RedisTemplate 进行内存缓存。和 MySql 作为主数据库。每当在主数据库中添加或更新新行时,我都需要更新缓存。 我如何使用java来完成这个? Redis 服务器是否提供了任何内置功能来实现这一点?

更新:

@Override public void getEmployeeDetailsForRedisTemplate(List<Employee> employee) { 
  logger.info("Saving " + employee.size() + " record to redis template"); 
  for (Employee emp : employee) { 
    listOperations.leftPush(EnumConstants.EMPLOYEE_KEY.getValue(), emp); 
  } 
} 

我一直在定期轮询数据库,并且基于数据库中的状态列,我正在将更新的数据推送到 redis 服务器。这不是一种有效的方法

【问题讨论】:

  • 到目前为止你尝试过什么?您可以发布一些您尝试过的代码 sn-p 吗?即使它不是一个成功的。
  • @Override public void getEmployeeDetailsForRedisTemplate(List&lt;Employee&gt; employee) { logger.info("Saving " + employee.size() + " record to redis template"); for (Employee emp : employee) { listOperations.leftPush(EnumConstants.EMPLOYEE_KEY.getValue(), emp); } } 我一直在定期轮询数据库,并且基于数据库中的状态列,我正在将更新的数据推送到 redis 服务器。这不是一种有效的方法
  • 我已将您的代码放入问题中以便更好地理解。

标签: java spring-data-redis


【解决方案1】:

对不起,我想问一下是否有 Java 代码的代码 sn-p 在添加/更新新行时调用,但我是新人,所以我无法评论

如果您使用 Redis 作为缓存,那么您可能希望通过在配置中设置 RedisCacheManager 来使用 Spring-Data-Redis 提供的 @Cacheable 注释

@Cacheable - 表示调用结果的注解 方法(或类中的所有方法)可以被缓存。每次建议 方法被调用,缓存行为将被应用,检查是否 已经为给定的参数调用了该方法。一种 明智的默认只是使用方法参数来计算密钥, 但是可以通过 key() 属性提供 SpEL 表达式,或者 自定义 KeyGenerator 实现可以替换默认的(参见 keyGenerator())。

如果在缓存中找不到计算键的值,则目标 方法将被调用并将返回值存储在关联的 缓存。请注意,Java8 的 Optional 返回类型是自动 已处理,如果存在,其内容将存储在缓存中。

所以你实际上可以像这样使用它

@Override
@Cacheable(value = "cacheName", key = "#employee.id")
public void getEmployeeDetailsForRedisTemplate(List<Employee> employee) { 
  logger.info("Saving " + employee.size() + " record to redis template"); 
  for (Employee emp : employee) { 
    listOperations.leftPush(EnumConstants.EMPLOYEE_KEY.getValue(), emp); 
  } 
} 

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2021-04-21
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    相关资源
    最近更新 更多