
(*)Redis 实战应用之分布式 Session 共享
(*)Redis 实战应用之验证码
(六)Redis 哨兵机制
(五)Redis 主从复制
前言
虽然 Redis 的性能非常优秀,能快速处理请求,但它有时也会衰老为步履蹒跚的老人,比如面对以下情况:
- ① 存储过多元素: 若涉及的元素达到上万个甚至上百万个时,命令执行耗时可能需要以秒来进行计算
- ② 单机性能瓶颈:即使一个命令只需要花费 10 ms 就能完成,单个 Redis 实例 1s 也只能处理 100 个命令
试问谁不想拥有青春永驻,充满活力呢?
Redis 也妄想如此,但可惜的是它只是一项技术工具,无法自适应极端场景。不过没关系,程序员作为投骰子的那个人,完全可以将其扩展,为这头猛虎安上翅膀。
面对情况 ①,可能是业务场景数据结构使用的不合理,可视具体代码考虑优化,本文不做详细讨论。
面对情况 ②,是否可以将单台 Redis 实例增加为多台,将第一台 Redis 实例中的数据复制到其他实例中呢?
Redis 本身考虑到了第 ② 点,因此实现了一个功能——主从复制。
(四)Redis 持久化
前言
由于 Redis 是内存数据库,因此会将自己的数据库状态存储在内存当中,但是,一旦服务器进程出现意外退出了,若不想办法将存储在内存中的数据库状态保存到磁盘中,则服务器中的数据库状态也会消失不见。
为了避免数据的意外丢失,需要将内存中的数据库状态保存到磁盘中。
为此,Redis 提供了持久化技术以达到该目的。
在 Redis 中,持久化拥有以下三种方式:
- RDB(
Redis DataBase):快照方式,将某一个时刻的内存数据,以二进制的方式写入磁盘; - AOF(
Append Only File):文件追加方式,记录所有的操作命令,并以文本的形式追加到文件中; - 混合持久化方式:Redis 4.0 之后新增的方式,其结合了 RDB 和 AOF 的优点,在写入的时候,先把当前的数据以 RDB 的形式写入文件的开头,再将后续的操作命令以 AOF 的格式存入文件,既能保证 Redis 重启时的速度,又能减低数据丢失的风险。
下面,就跟随本文来了解一下这三种方式吧!
(三)Redis 事务
序言
对于数据库事务而言,通常包含了一个序列的对数据库的读/写操作,其主要作用有两个:
- ① 为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。
- ② 当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰
当事务被提交给了数据库管理系统(DBMS),则 DBMS 需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库中,若事务中有的操作没有成功完成,则事务中的所有操作都需要回滚),回到事务执行前的状态;同时,该事务对数据库或者其他事务的执行无影响,所有的事务都好像在独立的运行。
数据库的事务是通过 DBMS 完成处理的,那么,对于 Redis 而言,又是如何保证事务的呢?Redis 事务是真事务还是伪事务?
(二)Redis 事件
(一)初识 Redis
简介
官方文档:Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.
翻译:Redis 是 一个开源(BSD 许可),内存数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,如字符串,散列,列表,集合,带有范围查询的排序集,位图,超级日志,具有半径查询和流的地理空间索引。
Redis 具有内置复制,Lua 脚本,LRU 回收,事务和不同级别的磁盘持久性,同时通过 Redis Sentinel 提供高可用性,通过 Redis Cluster 提供自动分区。
