* [一、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-代理分片) * [3. 服务器分片](#3-服务器分片) * [十、事件](#十事件) * [事件类型](#事件类型) * [事件的调度与执行](#事件的调度与执行) * [十一、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