前言
现如今的互联网应用大都是采用 分布式系统架构 设计的,所以 消息队列 已经逐渐成为企业的应用系统 内部通信 的核心手段,
它具有 低耦合、可靠投递、广播、流量控制、最终一致性 等一系列功能。
当前使用较多的 消息队列 有 RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ 等,而部分数据库 如 Redis、MySQL 以及 phxsql ,如果硬搞的话,其实也可实现消息队列的功能。
可能有人觉得,各种开源的 MQ 已经足够使用了,为什么需要用 Redis 实现 MQ 呢?
- 有些简单的业务场景,可能不需要重量级的 MQ 组件(相比 Redis 来说,Kafka 和 RabbitMQ 都算是重量级的消息队列)
那你有考虑过用 Redis 做消息队列吗?
这一章,我会结合消息队列的特点和 Redis 做消息队列的使用方式,以及实际项目中的使用,来和大家探讨下 Redis 消息队列的方案。
Redis简介
- Redis与Memcached区别
- Redis优点
- Redis缺点
Redis数据类型
- String
- Hash
- List
- Set
- Sorted set
Redis事务
- MULTI&EXEC(原子执行,并非互斥)
- WATCH&UNWATCH(原子执行+乐观锁)
Redis分布式锁
- 排他锁 SETNX
- 带有超时特性的锁
Redis持久化机制
- RDB(Redis Database,全量模式)
- AOF(Append Only File,增量模式)
- 触发方式
- 相互比较
- RDB最佳策略
- AOF最佳策略
- Redis消息队列
Redis高级数据结构
- BitMap(String的一些其他命令)
- 过期策略
- 内存淘汰策略
- 主从复制(数据是同步的,类似于MySQL Replication)
- 哨兵 sentinel(数据是同步的)
- 集群(数据是分片的,sharing)
- Hash映射(并非一致性哈希,而是哈希槽)
- 数据分片
- 节点间通信协议——Gossip
- 主从选举——Raft
- 功能限制
- 数据迁移/在线扩容
- Codis
- twemproxy
配置文件+应用场景+Lua脚本+与DB保持一致
Redis源码
- 线程模型——单线程
- RedisObject
这份文档从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。
速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。