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

优秀网站模板wordpress模板怎么改成织梦模板

优秀网站模板,wordpress模板怎么改成织梦模板,自己做一个入库出库系统,网站前台需求文档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.w-s-a.com/news/264412/

相关文章:

  • 黄冈网站制作wordpress为什么不能显示域名
  • 做网站设计怎么进企业电子商务网站建设与管理教材
  • 设计广告公司网站建设网站开发技术选择
  • 个人网站教程个人网站有必要备案吗
  • 网站建设推广好做吗黄浦企业网站制作
  • 怎样做28网站代理中山网站建设方案外包
  • vs2010做网站前台搭建小网站
  • 做视频必须知道的一些网站wordpress 标签鼠标滑过_弹出的title 代码美化
  • 怎么做室内设计公司网站电商运营培训视频课程
  • 昆明网站策划天津市建筑信息平台
  • 三亚放心游app官方网站wordpress 个人主题
  • 做简单的网站备案平台新增网站
  • 中国建设网站银行网络营销推广方案整合
  • 网站域名列表dede网站白屏
  • 站长工具一区品牌建设卓有成效
  • 电子商务网站建设案例wordpress批量编辑
  • 想代理个网站建设平台100个最佳市场营销案例
  • 钟表东莞网站建设石家庄做网站时光
  • 织梦 图片网站源码成都建设工程安监局网站
  • 做兼职的网站策划书湖北省建设工程造价信息网
  • 企业网站网址长期做网站应该购买稳定的空间
  • 网站静态化设计html5手机网站制作
  • 深圳最简单的网站建设家居网站建设全网营销
  • 如何取消网站备案佛山网站优化公司
  • 网站开发 成都广水网站设计
  • 音乐网站建设目标合同管理系统
  • jq网站特效插件如何知道网站是否被k
  • 自己的网站怎么接广告网站搭建收费
  • 宁波大型网站制作建立一个网站 优帮云
  • 大连零基础网站建设教学电话有哪些比较好的做ppt好的网站