Redis 事件
Redis 服务器是一个事件驱动程序,服务器需要处理两类事件:
文件事件(file event)- Redis 服务器通过套接字(Socket)与客户端或者其它服务器进行通信,文件事件就是对套接字操作的抽象。服务器与客户端(或其他的服务器)的通信会产生文件事件,而服务器通过监听并处理这些事件来完成一系列网络通信操作。时间事件(time event)- Redis 服务器有一些操作需要在给定的时间点执行,时间事件是对这类定时操作的抽象。关键词:
文件事件、时间事件
Redis 服务器是一个事件驱动程序,服务器需要处理两类事件:
文件事件(file event)- Redis 服务器通过套接字(Socket)与客户端或者其它服务器进行通信,文件事件就是对套接字操作的抽象。服务器与客户端(或其他的服务器)的通信会产生文件事件,而服务器通过监听并处理这些事件来完成一系列网络通信操作。时间事件(time event)- Redis 服务器有一些操作需要在给定的时间点执行,时间事件是对这类定时操作的抽象。关键词:
文件事件、时间事件
关键词:
Pipeline
Redis 是一种基于 C/S 模型以及请求/响应协议的 TCP 服务。通常情况下,一个 Redis 命令的请求、响应遵循以下步骤:
显然,如果每个 Redis 命令都发起一次请求、响应,会很低效。因此,Redis 客户端提供了一种批量处理技术,即
Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。
Redis 有两种发布订阅模式
- 基于频道(Channel)的发布订阅
- 基于模式(Pattern)的发布订阅
关键词:
订阅、SUBSCRIBE、PSUBSCRIBE、PUBLISH、观察者模式
String、Hash、List、Set、ZsetBitMap、HyperLogLog、Geo、Stream对象、SDS、链表、字典、跳表、整数集合、压缩列表定时删除、惰性删除、定期删除、LRU、LFURDB、AOF、SAVE、BGSAVE、appendfsync文件事件、时间事件SLAVEOF、SYNC、PSYNC、命令传播、心跳高可用、监控、选主、故障转移、Raft高可用、监控、选主、故障转移、分区、Raft、Gossip订阅、SUBSCRIBE、PSUBSCRIBE、PUBLISH、观察者模式事务、ACID、MULTI、EXEC、DISCARD、WATCHPipelineLua安装、配置、命令、集群、客户端缓存、分布式锁、布隆过滤器面试面试面试
关键词:
定时删除、惰性删除、定期删除、LRU、LFU
Redis 可以为每个键设置过期时间,当键过期时,会自动删除该键。
Redis 中,和键的生存时间相关的命令如下所示:
| 命令 | 描述 |
|---|---|
EXPIRE |
设置 key 的过期时间,单位为秒 |
PEXPIRE |
设置 key 的过期时间,单位为毫秒 |
EXPIREAT |
设置 key 的过期时间为指定的秒级时间戳 |
PEXPIREAT |
设置 key 的过期时间为指定的毫秒级时间戳 |
TTL |
返回 key 的剩余生存时间,单位为秒 |
PTTL |
返回 key 的剩余生存时间,单位为毫秒 |
PERSIST |
移除 key 的过期时间,key 将持久保持 |
Memcached 是一个自由开源的,高性能,分布式内存对象缓存系统。
Memcached 是一种基于内存的 key-value 存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API 调用或者是页面渲染的结果。
Memcached 简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的 API 兼容大部分流行的开发语言。本质上,它是一个简洁的 key-value 存储系统。

Redis 2.8 版本,新增了哨兵模式,以支持“自动故障转移”,它是 Redis 的 HA 方案。
Redis 哨兵模式由一个或多个 Sentinel 实例组成 Sentinel 集群,可以监控任意多个主服务器,以及这些主服务器的所有从服务器;并在被监视的主服务器进入下线状态时,自动将下线主服务器的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。
关键词:
高可用、监控、选主、故障转移、Raft

在 Redis 中,可以通过执行
SLAVEOF命令或设置slaveof选项,让一个服务器去复制(replicate)另一个服务器,其中,后者叫主服务器(master),前者叫从服务器(slave)。Redis 2.8 以前的复制不能高效处理断线后重复制的情况,而 Redis 2.8 新添的部分重同步可以解决这个问题。
关键词:
SLAVEOF、SYNC、PSYNC、命令传播、心跳
缓存是 Redis 最常见的应用场景。
Redis 有多种数据类型,以及丰富的操作命令,并且有着高性能、高可用的特性,非常适合用于分布式缓存。
缓存应用的基本原理,请参考 缓存基本原理 第四 ~ 第六节内容。

Redis 是内存型数据库,为了保证数据在宕机后不会丢失,需要将内存中的数据持久化到硬盘上。
Redis 支持两种持久化方式:RDB 和 AOF。这两种持久化方式既可以同时使用,也可以单独使用。
关键词:
RDB、AOF、SAVE、BGSAVE、appendfsync