- 博客(7)
- 收藏
- 关注
原创 缓存 —— Redis总结
持久化机制 Redis是内存型数据库,为了避免应用重启、挂掉或断电等情况导致的数据丢失,Redis提供了持久化机制,即把内存中的数据持久化到磁盘,提升数据的可靠性。Redis提供了两种持久化方案:RDB持久化和AOF持久化。RDB持久化 RDB就是某时刻内存数据的快照,用于机器重启或者从机全量同步。RDB持久化过程为:创建一个单独的子进程;子进程启动后开始将内存数据dump到临时文件;当拷贝完成后用临时文件替换现有的RDB文件(为了保证数据文件的完整性);AOF持久化 AOF相当
2020-06-29 17:38:05 302
原创 主从数据库一致性问题
原因 数据库集群的主从数据同步存在延时,延迟期间从库上的读请求会读取到不一致的数据,如下图所示。(不管同步还是异步,只要存在数据冗余就存在数据一致性问题)解决方案 整体思路:数据库的主从同步可以实现数据的最终一致性,延迟时间一般在几毫秒以内,因此可以按照业务对数据不一致时间的容忍程度设计对应的方案。对于绝大部分业务来说,比如订单、消息、搜索等场景,这些业务场景下是可以容忍几毫秒的延时,因此可以直接忽略数据不一致问题;对于不能容忍几毫秒的不一致性的业务,则需要强制性读主。强制性读主太过暴力,
2020-06-28 09:38:12 459
原创 缓存 —— 先数据库还是先缓存(2)
到底是先操作数据库还是先操作缓存,取决于哪种方案可以避免数据不一致,或者数据不一致的概率更低。下面的分析会基于Cache Aside策略展开,为什么基于Cache Aside策略,请查看博文“缓存更新策略”。方案1:先缓存再数据库 先缓存再数据库的方案,在并发读写情况下,会出现数据不一致的情况,如下图所示。而且,这种不一致情况会伴随着并发量的上升而严重(换句话说,并发量越大,出现的概率越大)。方案2:先数据库再缓存 先数据库再缓存的方案,在删除缓存失败的情况下,会出现数据不一致的情况,如下
2020-06-24 16:16:12 456
原创 缓存 —— 缓存更新策略(1)
Cache Aside缓存策略读请求处理策略缓存命中,直接返回缓存数据;缓存未命中,从数据库加载数据,更新缓存;写请求处理策略(不同点)先更新数据库,然后删除缓存;数据不一致情况情况1: 写请求处理期间,并发的读请求读取到旧数据,写完成后缓存更新到最新数据;(最终一致性)情况2: 读请求处理期间,并发的写请求更新数据,导致缓存最终数据为旧数据;(无法实现最终一致性,实际情况中发生的概率极低,因为需要读请求的处理时间大于写请求处理时间,并且缓存失效,正常情况写请求处理时间大于读
2020-06-24 11:35:49 380
原创 SQL语句执行过程
SQL执行过程 SQL 语句在 MySQL 中的流程是:SQL 语句→缓存查询→解析器→优化器→执行器,如下图所示:连接器 作用: 身份认证、权限校验、连接管理、以及安全管理;查看连接SHOW PROCESSLIST;Id:连接id;db:连接使用的数据库名称;Command:线程正在执行的命令类型;Sleep:线程正在等待客户端发送命令;Query:线程正在执行查询;Locked:线程正在等待锁释放;Sorting Data:线程正在对结果排序;Sending Dat
2020-06-23 08:45:31 210
原创 InnoDB事务隔离级别
前因后果由来:为了解决并发事务带来的问题,隔离级别定义了并发事务间的相互影响程度;结果:不同的隔离级别应用于不同场景,常用RR和RC;实现:基于MVCC和锁实现;
2020-06-19 11:03:58 324
原创 车载T-BOX
介绍 T-BOX(Telematics BOX),中文名叫做车载通信终端,相当于家庭上网的喵。对于车辆内部,T-BOX与车载CAN总线相连,可以将车辆的信息(车速、位置、油量、电量等),传送到手机/PC端,同时接受手机端等控制指令,对车辆进行控制,如下如所示:...
2020-06-15 10:07:52 1071
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人