当前位置: 首页 > news >正文

dede网站怎么备份网站策划选题

dede网站怎么备份,网站策划选题,河南建筑工程网,哪家网站Redis 和 MySQL 数据一致性是分布式系统中的一个常见挑战。保证数据一致性通常涉及几种策略#xff0c;我会详细解释这些策略并提供相应的代码示例。 先更新数据库#xff0c;再更新缓存 这种方法先更新 MySQL#xff0c;然后更新或删除 Redis 缓存。 Transactional publ…Redis 和 MySQL 数据一致性是分布式系统中的一个常见挑战。保证数据一致性通常涉及几种策略我会详细解释这些策略并提供相应的代码示例。 先更新数据库再更新缓存 这种方法先更新 MySQL然后更新或删除 Redis 缓存。 Transactional public void updateUser(User user) {// 1. 更新MySQLuserMapper.updateUser(user);// 2. 更新Redis缓存// 方式1更新缓存redisTemplate.opsForValue().set(user: user.getId(), user);// 方式2删除缓存推荐redisTemplate.delete(user: user.getId()); }优点 简单直接保证数据库有最新数据 缺点 如果更新缓存失败会导致数据不一致 先删除缓存再更新数据库 这种方法先删除 Redis 缓存然后更新 MySQL。 Transactional public void updateUser(User user) {// 1. 删除Redis缓存redisTemplate.delete(user: user.getId());// 2. 更新MySQLuserMapper.updateUser(user); }优点 避免缓存更新失败导致的不一致 缺点 在高并发情况下可能出现数据不一致 延迟双删策略 这种方法在更新数据库前后都删除缓存并在第二次删除时增加短暂延迟。 Transactional public void updateUser(User user) {// 1. 删除Redis缓存redisTemplate.delete(user: user.getId());// 2. 更新MySQLuserMapper.updateUser(user);// 3. 延迟一段时间后再次删除缓存CompletableFuture.runAsync(() - {try {Thread.sleep(500); // 延迟500毫秒redisTemplate.delete(user: user.getId());} catch (InterruptedException e) {// 处理异常}}); }优点 能够处理高并发场景下的数据一致性问题 缺点 实现较为复杂增加了系统延迟 使用消息队列 使用消息队列来保证数据一致性先更新数据库然后发送消息到队列由消费者来更新缓存。 Transactional public void updateUser(User user) {// 1. 更新MySQLuserMapper.updateUser(user);// 2. 发送消息到消息队列kafkaTemplate.send(user-update-topic, JSON.toJSONString(user)); }// 在消费者服务中 KafkaListener(topics user-update-topic) public void consumeUserUpdate(String message) {User user JSON.parseObject(message, User.class);// 更新Redis缓存redisTemplate.opsForValue().set(user: user.getId(), user); }优点 解耦了数据库操作和缓存操作可以处理高并发场景 缺点 增加了系统复杂度可能引入短暂的数据不一致 使用 Canal 进行 MySQL binlog 同步 使用 Canal 监听 MySQL 的 binlog然后更新 Redis 缓存。 Component public class CanalClient {Autowiredprivate RedisTemplateString, String redisTemplate;PostConstructpublic void init() {CanalConnector connector CanalConnectors.newSingleConnector(new InetSocketAddress(127.0.0.1, 11111), example, , );try {connector.connect();connector.subscribe(.*\\..*);while (true) {Message message connector.getWithoutAck(100);long batchId message.getId();ListCanalEntry.Entry entries message.getEntries();if (batchId ! -1 entries.size() 0) {for (CanalEntry.Entry entry : entries) {if (entry.getEntryType() CanalEntry.EntryType.ROWDATA) {CanalEntry.RowChange rowChange CanalEntry.RowChange.parseFrom(entry.getStoreValue());if (rowChange.getEventType() CanalEntry.EventType.UPDATE) {for (CanalEntry.RowData rowData : rowChange.getRowDatasList()) {// 处理更新操作更新Redis缓存updateRedisCache(rowData);}}}}}connector.ack(batchId);}} finally {connector.disconnect();}}private void updateRedisCache(CanalEntry.RowData rowData) {// 根据rowData更新Redis缓存// 这里需要根据具体的数据结构来实现} }优点 实时性高对应用层代码无侵入 缺点 配置和维护相对复杂依赖 MySQL binlog 配置 总结 选择哪种方案取决于具体的业务需求、系统架构和性能要求。对于读多写少的场景可以考虑使用先更新数据库再删除缓存的策略。对于高并发场景可以考虑使用延迟双删或消息队列的方案。对于实时性要求高的场景可以考虑使用 Canal 进行 binlog 同步。无论选择哪种方案都需要考虑异常处理和重试机制以提高系统的可靠性。 在实际应用中可
http://www.dnsts.com.cn/news/88559.html

相关文章:

  • 品牌网站建设必在大蝌蚪怎么做能打不开漫画网站
  • 问卷调查网站怎么做徐州网络推广
  • 网站建设销售话术专业营销网站建设
  • 网站内容页做301wordpress 导入网页
  • 网站推广的措施和手段有哪些超级软文网
  • 如何制作产品网站模板下载地址怎么宣传自己的产品
  • php建网站百度趋势搜索
  • 网站浏览器兼容性通用泰安千橙网络
  • 网站建设流程新闻网页设计图片格式
  • 专门做ppt的网站名称网站可以做无形资产
  • 安庆做网站淮南网站网站建设
  • 企业网站客户案例哪些网站的做的好看的图片
  • 专业的网站建设运营如何制作聊天软件
  • 展厅网站网站建成后 再添加小功能麻烦吗
  • 北京网站制作培训班如何让WordPress快起来
  • 往网站上做新东西需要什么七色鱼设计平台
  • 网站流量在哪设置学校网站建设说明材料
  • 大型门户网站制作教程奉贤做网站公司
  • 网站建设公司初心android应用软件开发
  • 定制化网站开发公司宁波宇丰建设有限公司网站
  • 网站连接如何做二维码包装设计展开图图片
  • wordpress题网络优化关键词
  • 网站配置番禺建设网站策划
  • 国际贸易网站大全承德在线
  • 东莞教育网站建设添加qq好友的超链接做网站
  • 行业网站导航源码网站风格有哪些类型
  • 电脑pc端网站建设是什么意思手机网站用什么做的
  • 如何用易语言做网站辅助百度指数的需求指数
  • 台州市建设规划局网站班子成员个人备案网站名称怎么写
  • 二手书屋网站开发的意义网站建设 中企动力 东莞