引言 为什么写这篇文章? 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。 但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。于是博主战战兢兢,顶着被大家喷的风险,写了这篇文章。 文章结构 本文由以下三个部分组成 1、讲解缓存更新策略 2、对每种策略进行缺点分析 3、针对缺点给出改进方案 正文 先做一个说明,从理论上来说…

2019年10月30日 0条评论 465点热度 0人点赞 阅读全文

单独的数据库: 微服务设计的一个关键是数据库设计,基本原则是每个服务都有自己单独的数据库,而且只有微服务本身可以访问这个数据库。它是基于下面三个原因。 优化服务接口:微服务之间的接口越小越好,最好只有服务调用接口(RPC或消息),没有其他接口。如果微服务不能独享自己的数据库,那么数据库也变成了接口的一部分,这大大拓展了接口范围。 错误诊断:生产环境中的错误大部分都是和数据库有关的,要么是数据出了问题,要么是数据库的使用方式出了问题。当你不能完全控制数据库的访问时,会有各种各样的错误发生。它可能是别的程序直接连到你的…

2019年10月19日 0条评论 445点热度 0人点赞 阅读全文

四大特性(ACID): 原子性(Atomicity) 原子性指事务所包含的所有操作要么全部成功,要么全部失败回滚。 一致性(Consistemcy) 一致性是指事务必须使数据库从一个一致性状态改变到另外一个一致性状态,也就是说事务执行之前和执行之后都必须处于一致性状态。 隔离性(Isolation) 隔离性是当多个用户并发访问数据库时,数据库为每个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要互相隔离。 持久性(Durability) 在事务完成后,该事务对数据库所作的更改永久保存在数据库之中,并不…

2019年09月02日 0条评论 879点热度 0人点赞 阅读全文

参照mongoDB的ID生成策略,生成唯一ID。 一共12个字节(示例:5cecf0a8a7573ea439fa1a89) 前4个字节表示时间戳 再往后数3个字节表示运行当前程序的机器ID 再往后2个字节表示生成此id的进程的ID 最后3个字节表示由一个随机数开始的计数器生成的值 然后转为16进制的字符串。 源码如下: import lombok.extern.slf4j.Slf4j; import java.io.Serializable; import java.net.NetworkInterface; im…

2019年07月13日 0条评论 1215点热度 0人点赞 阅读全文

PO persistant object 持久对象 与数据库中表相映射的Java对象。PO中不应该包含任何对数据库的操作。 POJO plain ordinary java object 简单java对象 最基本的Java Bean,只有属性字段及setter和getter方法(传统意义上的Java对象)。 VO value object 值对象 通常用于业务层之间的数据传递,和PO一样仅仅包含数据。但是应该是抽象出的业务对象,可以和表对应,也可以不对应。 BO business object 业务对象 封装业务逻…

2019年06月28日 0条评论 932点热度 0人点赞 阅读全文

  数据库(database) 创建新的数据库: create database [if not exists] db_name; 删除数据库: drop database db_name; 使用数据库: use db_name; 显示所有数据库: show databases;       表(table) 创建表: Create table table_name(列名 数据类型...); 删除表: Drop table table_name; 查看表: Describe(…

2019年06月20日 0条评论 829点热度 0人点赞 阅读全文