为了早日退休而学
这篇文章,我就来和你盘点一下,使用 Redis 时可能会踩到「坑」,以及如何去规避。我把这些问题划分成了三大部分:常见命令有哪些坑?数据持久化有哪些坑?主从库同步有哪些坑?常见命令有哪些坑?首先,我们来看一下,平时在使用 Redis 时,有哪些常见的命令会遇到「意料之外」的结果。1、过期时间意外丢失
如何保证缓存和数据库一致性,这是一个老生常谈的话题了。但很多人对这个问题,依旧有很多疑惑:到底是更新缓存还是删缓存?到底选择先更新数据库,再删除缓存,还是先删除缓存,再更新数据库?为什么要引入消息队列保证一致性?延迟双删会有什么问题?到底要不要用?...这篇文章干货很多哟~引入缓存提高性能我们从最简
什么是 Redis 的脑裂现象当 Redis 主从集群环境出现两个主节点为客户端提供服务,这时客户端请求命令可能会发生数据丢失的情况。脑裂出现的场景场景一主从哨兵集群中如果当发生主从集群切换时,那么一定是超过预设 quorum 数量的哨兵和主库连接超时了,这时哨兵集群才会将主库判断为客观下线,然后哨
keys 命令的用法keys pattern查找符合正则匹配的 key 的列表。扫描对象是 Redis 服务中所有的 key,想想都很慢对不对?同时执行 keys 命令的同时,Redis 进程将被阻塞,无法执行其他命令,假如超过了哨兵的 down-after-milliseconds 配置,还会进行
我们都知道,Redis 有 RDB 和 AOF 两种持久化机制。AOF 这种持久化机制类似于日记记录一样,会把 redis 的执行命令都记录下来,以便数据的恢复,但随之而来就会出现一个问题,那就是他的文件大小就会随着命令的增长一直增长下去,那么就不得不考虑 AOF 文件过大的问题了 。这里先来复习一
这是一条标准的查询语句:这是我们实际上 SQL 执行顺序:我们先执行 from,join 来确定表之间的连接关系,得到初步的数据where 对数据进行普通的初步的筛选group by 分组各组分别执行 having 中的普通筛选或者聚合函数筛选。然后把再根据我们要的数据进行 select,可以是普通
日常开发中,为了更好管理线程资源,减少创建线程和销毁线程的资源损耗,我们会使用线程池来执行一些异步任务。但是线程池使用不当,就可能会引发生产事故。下面跟大家聊聊线程池的10个坑~1、线程池默认使用无界队列,任务过多导致 OOMJDK 开发者提供了线程池的实现类,我们基于 Executors 组件,就
无论是工作还是面试中,我们都会跟 ThreadLocal 打交道,今天就跟大家聊聊 ThreadLocal 的八个关键知识点哈~1、ThreadLocal 是什么? 为什么要使用 ThreadLocal?ThreadLocal是什么?ThreadLocal,即线程本地变量。如果你创建了一个 Thre
1、为什么要使用多线程选择多线程的原因,就是因为快。举个例子:如果要把 1000 块砖搬到楼顶,假设到楼顶有几个电梯,你觉得用一个电梯搬运快,还是同时用几个电梯同时搬运快呢?这个电梯就可以理解为线程。所以,我们使用多线程就是因为: 在正确的场景下,设置恰当数目的线程,可以用来程提高序的运行速率。更专
1、SQL语句执行流程MySQL大体上可分为 Server层 和 存储引擎层 两部分。Server层连接器:TCP握手后服务器来验证登陆用户身份,A用户创建连接后,管理员对A用户权限修改了也不会影响到已经创建的链接权限,必须重新登陆。查询缓存:查询后的结果存储位置,MySQL8.0版本以后已经取消,