* [Redis 是什么](#redis-是什么) * [五种基本类型](#五种基本类型) * [1. STRING](#1-string) * [2. LIST](#2-list) * [3. SET](#3-set) * [4. HASH](#4-hash) * [5. ZSET](#5-zset) * [键的过期时间](#键的过期时间) * [发布与订阅](#发布与订阅) * [事务](#事务) * [持久化](#持久化) * [1. 快照持久化](#1-快照持久化) * [2. AOF 持久化](#2-aof-持久化) * [复制](#复制) * [1. 从服务器连接主服务器的过程](#1-从服务器连接主服务器的过程) * [2. 主从链](#2-主从链) * [处理故障](#处理故障) * [分片](#分片) * [事件](#事件) * [1. 事件类型](#1-事件类型) * [2. 事件的调度与执行](#2-事件的调度与执行) * [Redis 与 Memcached 的区别](#redis-与-memcached-的区别) * [Redis 适用场景](#redis-适用场景) * [数据淘汰策略](#数据淘汰策略) * [一个简单的论坛系统分析](#一个简单的论坛系统分析) * [参考资料](#参考资料) # Redis 是什么 Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。 五种类型数据类型为:字符串、列表、集合、有序集合、散列表。 Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。 # 五种基本类型 | 数据类型 | 可以存储的值 | 操作 | | -- | -- | -- | | STRING | 字符串、整数或者浮点数 | 对整个字符串或者字符串的其中一部分执行操作 对整数和浮点数执行自增或者自减操作 | | LIST | 链表 | 从两端压入或者弹出元素 读取单个或者多个元素 进行修剪,只保留一个范围内的元素 | | SET | 无序集合 | 添加、获取、移除单个元素 检查一个元素是否存在于集合中 计算交集、并集、差集 从集合里面随机获取元素 | | HASH | 包含键值对的无序散列表 | 添加、获取、移除单个键值对 获取所有键值对 检查某个键是否存在| | ZSET | 有序集合 | 添加、获取、删除元素个元素 根据分值范围或者成员来获取元素 计算一个键的排名 | > [What Redis data structures look like](https://redislabs.com/ebook/part-1-getting-started/chapter-1-getting-to-know-redis/1-2-what-redis-data-structures-look-like/) ## 1. STRING