Kaito's Blog

致力成为一枚silver bullet.

0%

大家好,我是 Kaito。

今天凌晨苹果刚刚开完了新品发布会,因为我是一个果粉,手上也有很多苹果设备,平时除了研究技术,还对各种数码产品感兴趣,所以对这次发布会也格外关注。

熬夜看完了发布会的全部内容,连夜写下这篇文章,和大家介绍下发布会上的产品,顺便也聊一聊这几年来,我用过的苹果产品和感受。

阅读全文 »

你好,我是 Kaito。

如何保证缓存和数据库一致性,这是一个老生常谈的话题了。

但很多人对这个问题,依旧有很多疑惑:

  • 到底是更新缓存还是删缓存?
  • 到底选择先更新数据库,再删除缓存,还是先删除缓存,再更新数据库?
  • 为什么要引入消息队列保证一致性?
  • 延迟双删会有什么问题?到底要不要用?

这篇文章,我们就来把这些问题讲清楚。

这篇文章干货很多,希望你可以耐心读完。

阅读全文 »

大家好,我是 Kaito。

就在前段时间,我的个人公众号的关注人数终于达到 1W 人了!

在这里,非常感谢每一位关注这个公众号的读者朋友,感谢你们!

这样的成绩,可能在大 V 的眼中并不算什么,但在技术公众号这个小圈子里,能从 0 做到 1W 人关注,这意味着这个号跨过了生死线,活下来了。

原创不易,很庆幸自己能坚持到现在。在写作之路上,也算是完成了一个小小的里程碑。

今天我就和你聊一聊,这段时间我在公众号写作的感受,以及有哪些收获。

阅读全文 »

大家好,我是 Kaito。

最近事情比较多,一直没发技术文章,大家见谅(新文章已经在写了)。

因为最近参加了一场技术演讲,所以这段时间花了比较多的精力在这上面。不过就在昨天,这件事终于结束了。

这里正好借这个机会,我想和大家聊一聊这个话题,分享一下我的这段经历,我觉得还挺有意思的。

从我是如何接到演讲邀请,到怎样准备一个技术演讲,以及在这整个过程中,我的心路历程和一些思考,希望对你也有所帮助。

阅读全文 »

大家好,我是 Kaito。

这篇文章我想和你聊一聊「时间」这个话题。

时间总是在不经意间流逝,我们在写代码时,也经常会调用「时间 API」,你有思考过这背后的原理吗?

关于时间的问题还有很多,例如:

  • 为什么计算机的时间有时候「走不准」?
  • 计算机究竟是怎么「自动校准」时间的?
  • 我们经常看到的 UTC 时间,到底是什么?
  • 我们在新闻上看到的「北京时间」,真的来自北京吗?

这篇文章,我们就来揭秘时间背后的秘密。

这篇文章非常有意思,希望你可以耐心读完。

阅读全文 »

大家好,我是 Kaito。

这篇文章我想和你聊一聊,关于 Redis 分布式锁的「安全性」问题。

Redis 分布式锁的话题,很多文章已经写烂了,我为什么还要写这篇文章呢?

因为我发现网上 99% 的文章,并没有把这个问题真正讲清楚。导致很多读者看了很多文章,依旧云里雾里。例如下面这些问题,你能清晰地回答上来吗?

  • 基于 Redis 如何实现一个分布式锁?
  • Redis 分布式锁真的安全吗?
  • Redis 的 Redlock 有什么问题?一定安全吗?
  • 业界争论 Redlock,到底在争论什么?哪种观点是对的?
  • 分布式锁到底用 Redis 还是 Zookeeper?
  • 实现一个有「容错性」的分布式锁,都需要考虑哪些问题?

这篇文章,我就来把这些问题彻底讲清楚。

读完这篇文章,你不仅可以彻底了解分布式锁,还会对「分布式系统」有更加深刻的理解。

文章有点长,但干货很多,希望你可以耐心读完。

阅读全文 »

大家好,我是 Kaito。

我经常听到很多人讨论,关于「把 Redis 当作队列来用是否合适」的问题。

有些人表示赞成,他们认为 Redis 很轻量,用作队列很方便。

也些人则反对,认为 Redis 会「丢」数据,最好还是用「专业」的队列中间件更稳妥。

究竟哪种方案更好呢?

这篇文章,我就和你聊一聊把 Redis 当作队列,究竟是否合适这个问题。

我会从简单到复杂,一步步带你梳理其中的细节,把这个问题真正的讲清楚。

看完这篇文章后,我希望你对这个问题你会有全新的认识。

在文章的最后,我还会告诉你关于「技术选型」的思路,文章有点长,希望你可以耐心读完。

阅读全文 »

大家好,我是 Kaito。

这篇文章,我想和你聊一聊在使用 Redis 时,可能会踩到的「坑」。

如果你在使用 Redis 时,也遇到过以下这些「诡异」的场景,那很大概率是踩到「坑」了:

  • 明明一个 key 设置了过期时间,怎么变成不过期了?
  • 使用 O(1) 复杂度的 SETBIT 命令,Redis 竟然被 OOM 了?
  • 执行 RANDOMKEY 随机拿出一个 key,竟然也会阻塞 Redis?
  • 同样的命令,为什么主库查不到数据,从库却可以查到?
  • 从库内存为什么比主库用得还多?
  • 写入到 Redis 的数据,为什么莫名其妙丢了?

究竟是什么原因,导致的这些问题呢?

这篇文章,我就来和你盘点一下,使用 Redis 时可能会踩到「坑」,以及如何去规避。

阅读全文 »

大家好,我是 Kaito。

这篇文章我想和你聊一聊 Redis 的最佳实践。

你的项目或许已经使用 Redis 很长时间了,但在使用过程中,你可能还会或多或少地遇到以下问题:

  • 我的 Redis 内存为什么增长这么快?
  • 为什么我的 Redis 操作延迟变大了?
  • 如何降低 Redis 故障发生的频率?
  • 日常运维 Redis 需要注意什么?
  • 部署 Redis 时,如何做好资源规划?
  • Redis 监控重点要关注哪些指标?

尤其是当你的项目越来越依赖 Redis 时,这些问题就变得尤为重要。

此时,你迫切需要一份「最佳实践指南」

这篇文章,我将从以下七个维度,带你「全面」分析 Redis 的最佳实践优化:

  • 内存
  • 性能
  • 高可靠
  • 日常运维
  • 资源规划
  • 监控
  • 安全

在文章的最后,我还会给你一个完整的最佳实践清单,不管你是业务开发人员,还是 DBA 运维人员,这个清单将会帮助你更加「优雅」地用好 Redis。

这篇文章干货很多,希望你可以耐心读完。

阅读全文 »

大家好,我是 Kaito。

这篇文章我想和你聊一聊 Redis 的架构演化之路。

现如今 Redis 变得越来越流行,几乎在很多项目中都要被用到,不知道你在使用 Redis 时,有没有思考过,Redis 到底是如何稳定、高性能地提供服务的?

你也可以尝试回答一下以下这些问题:

  • 我使用 Redis 的场景很简单,只使用单机版 Redis 会有什么问题吗?
  • 我的 Redis 故障宕机了,数据丢失了怎么办?如何能保证我的业务应用不受影响?
  • 为什么需要主从集群?它有什么优势?
  • 什么是分片集群?我真的需要分片集群吗?

如果你对 Redis 已经有些了解,肯定也听说过数据持久化、主从复制、哨兵这些概念,它们之间又有什么区别和联系呢?

如果你存在这样的疑惑,这篇文章,我会从 0 到 1,再从 1 到 N,带你一步步构建出一个稳定、高性能的 Redis 集群。

在这个过程中,你可以了解到 Redis 为了做到稳定、高性能,都采取了哪些优化方案,以及为什么要这么做?

掌握了这些原理,这样平时你在使用 Redis 时,就能够做到「游刃有余」。

这篇文章干货很多,希望你可以耐心读完。

阅读全文 »