LeeQingShui's Blog

  • 标签

  • 分类

  • 归档

  • 关于

设计模式之代理(Proxy)模式

发表于 2019-05-07 | 更新于 2023-01-15 | 分类于 设计模式
本文字数: 4.5k | 阅读时长 ≈ 6 分钟

序言

  

阅读全文 »

设计模式之工厂(Factory)模式

发表于 2019-04-27 | 更新于 2022-07-19 | 分类于 设计模式
本文字数: 5.9k | 阅读时长 ≈ 8 分钟

思维导图

阅读全文 »

设计模式之装饰者(Decorate)模式

发表于 2019-04-22 | 更新于 2024-12-09 | 分类于 设计模式
本文字数: 3.5k | 阅读时长 ≈ 5 分钟

思维导图

阅读全文 »

设计模式之观察者(Observer)模式

发表于 2019-04-21 | 更新于 2023-01-13 | 分类于 设计模式
本文字数: 7.1k | 阅读时长 ≈ 10 分钟

思维导图

阅读全文 »

(*)Redis 实战应用之分布式 Session 共享

发表于 2019-04-20 | 更新于 2025-11-10 | 分类于 NoSQL
本文字数: 2k | 阅读时长 ≈ 3 分钟

前言

  在传统的单体应用中,所有用户请求都由同一台服务器处理,会话(Session)信息通常保存在服务器内存中即可。
  客户端第一次登录后,服务端会创建一个 Session 并生成 SessionId,保存在服务端内存中,同时将 SessionId 通过 Cookie 返回给客户端。之后客户端的每次请求都会携带该 SessionId,服务端即可识别用户的登录状态。

  然而,随着业务规模扩大和访问量增加,单台服务器已无法承受高并发请求,我们往往会采用 Nginx + 多台应用服务器 的负载均衡方式进行水平扩展。
  此时,Session 共享问题便随之出现。

阅读全文 »

(*)Redis 实战应用之验证码

发表于 2019-04-18 | 更新于 2023-07-23 | 分类于 NoSQL
本文字数: 982 | 阅读时长 ≈ 1 分钟

序言

  随着技术的不断发展,为了使用户拥有更好的体验,许多网站在登陆界面额外提供了使用手机验证码的登陆方式。
  该功能基本使用 Redis 数据库实现,不仅能提高效率,还可以减少维护量。
  下面我们通过一个简单的例子来了解一下 Redis 是怎么实现这种功能的。

阅读全文 »

(六)Redis 哨兵机制

发表于 2019-04-15 | 更新于 2022-12-28 | 分类于 NoSQL
本文字数: 9.1k | 阅读时长 ≈ 13 分钟

序言

  当主机宕机后出现故障后无法及时恢复,可以在从机执行slave no one命令使其上位变为主机,但是,这样的人工操作带来一个问题,难道半夜主机宕机还要通知运维起来输命令吗?
  这显然不符合常理,为了自动化管理这个过程,Redis 引入了哨兵机制。

阅读全文 »

(五)Redis 主从复制

发表于 2019-04-14 | 更新于 2022-12-31 | 分类于 NoSQL
本文字数: 8.1k | 阅读时长 ≈ 12 分钟

前言

  虽然 Redis 的性能非常优秀,能快速处理请求,但它有时也会衰老为步履蹒跚的老人,比如面对以下情况:

  • ① 存储过多元素: 若涉及的元素达到上万个甚至上百万个时,命令执行耗时可能需要以秒来进行计算
  • ② 单机性能瓶颈:即使一个命令只需要花费 10 ms 就能完成,单个 Redis 实例 1s 也只能处理 100 个命令

  试问谁不想拥有青春永驻,充满活力呢?
  Redis 也妄想如此,但可惜的是它只是一项技术工具,无法自适应极端场景。不过没关系,程序员作为投骰子的那个人,完全可以将其扩展,为这头猛虎安上翅膀。

  面对情况 ①,可能是业务场景数据结构使用的不合理,可视具体代码考虑优化,本文不做详细讨论。
  面对情况 ②,是否可以将单台 Redis 实例增加为多台,将第一台 Redis 实例中的数据复制到其他实例中呢?
  Redis 本身考虑到了第 ② 点,因此实现了一个功能——主从复制。

阅读全文 »

(四)Redis 持久化

发表于 2019-04-13 | 更新于 2022-12-28 | 分类于 NoSQL
本文字数: 8.5k | 阅读时长 ≈ 12 分钟

前言

  由于 Redis 是内存数据库,因此会将自己的数据库状态存储在内存当中,但是,一旦服务器进程出现意外退出了,若不想办法将存储在内存中的数据库状态保存到磁盘中,则服务器中的数据库状态也会消失不见。
  为了避免数据的意外丢失,需要将内存中的数据库状态保存到磁盘中。
  为此,Redis 提供了持久化技术以达到该目的。

  在 Redis 中,持久化拥有以下三种方式:

  • RDB(Redis DataBase):快照方式,将某一个时刻的内存数据,以二进制的方式写入磁盘;
  • AOF(Append Only File):文件追加方式,记录所有的操作命令,并以文本的形式追加到文件中;
  • 混合持久化方式:Redis 4.0 之后新增的方式,其结合了 RDB 和 AOF 的优点,在写入的时候,先把当前的数据以 RDB 的形式写入文件的开头,再将后续的操作命令以 AOF 的格式存入文件,既能保证 Redis 重启时的速度,又能减低数据丢失的风险。

  下面,就跟随本文来了解一下这三种方式吧!

阅读全文 »

(三)Redis 事务

发表于 2019-04-12 | 更新于 2022-12-28 | 分类于 NoSQL
本文字数: 3.8k | 阅读时长 ≈ 5 分钟

序言

  对于数据库事务而言,通常包含了一个序列的对数据库的读/写操作,其主要作用有两个:

  • ① 为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。
  • ② 当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。

  当事务被提交给了数据库管理系统(DBMS),则 DBMS 需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库中,若事务中有的操作没有成功完成,则事务中的所有操作都需要回滚),回到事务执行前的状态;同时,该事务对数据库或者其他事务的执行无影响,所有的事务都好像在独立的运行。

  数据库的事务是通过 DBMS 完成处理的,那么,对于 Redis 而言,又是如何保证事务的呢?

阅读全文 »

1…789…15
LeeQingShui

LeeQingShui

144 日志
16 分类
68 标签
RSS
© 2018 – 2025 LeeQingShui | 站点总字数: 846k
赣 ICP 备 2022002212 号
本站已运行
本站总访问量 次 | 本站访客 人次
0%