概述
大约 2 分钟
概述
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
核心特性
- Redis 是一个
开源的key-value存储系统 - 和 Memcached 类似,它支持存储的 value 类型相对更多,包括
string(字符串)、list(链表)、set(集合)、zset(sorted set 有序集合)和hash(哈希类型) - 这些数据类型都支持 push/pop、add/remove 及取交集、并集和差集等更丰富的操作,而且这些操作都是
原子性的 - 在此基础上,Redis 支持各种不同方式的
排序 - 与 Memcached 一样,为了保证效率,数据都是
缓存在内存中 - 区别的是 Redis 会
周期性地把更新的数据写入磁盘,或把修改操作写入追加的记录文件 - 并且在此基础上实现了
master-slave(主从)同步
参考文档:Redis 入门
单线程 + 多路IO复用
单线程 + 多路 IO 复用
简单理解就是:一个服务端进程可以同时处理多个套接字描述符。
- 多路:多个客户端连接(连接就是套接字描述符)
- 复用:使用单进程就能够实现同时处理多个客户端的连接
传统方式通过增加进程和线程的数量来并发处理多个套接字,免不了上下文切换的开销;而 IO 多路复用只需要一个进程就能够处理多个套接字,从而解决了上下文切换的问题。其发展可以分 select → poll → epoll 三个阶段来描述。
五大数据类型
| 类型 | 简介 | 典型应用场景 |
|---|---|---|
| String | 二进制安全的字符串,最大 512M | 缓存、计数器、分布式锁 |
| Hash | field-value 映射,类似 Java Map | 存储对象(用户信息等) |
| List | 双向链表,按插入顺序排序 | 消息队列、最新列表 |
| Set | 无序集合,元素唯一 | 去重、共同好友、点赞 |
| Zset | 带 score 的有序集合 | 排行榜、按权重排序的延迟队列 |
