* [一、概述](#一概述) * [二、数据类型](#二数据类型) * [STRING](#string) * [LIST](#list) * [SET](#set) * [HASH](#hash) * [ZSET](#zset) * [三、使用场景](#三使用场景) * [缓存](#缓存) * [计数器](#计数器) * [消息队列](#消息队列) * [查找表](#查找表) * [交集运算](#交集运算) * [排行榜](#排行榜) * [分布式 Session](#分布式-session) * [分布式锁](#分布式锁) * [四、Redis 与 Memcached](#四redis-与-memcached) * [数据类型](#数据类型) * [数据持久化](#数据持久化) * [分布式](#分布式) * [内存管理机制](#内存管理机制) * [五、键的过期时间](#五键的过期时间) * [六、数据淘汰策略](#六数据淘汰策略) * [七、持久化](#七持久化) * [快照持久化](#快照持久化) * [AOF 持久化](#aof-持久化) * [八、发布与订阅](#八发布与订阅) * [九、事务](#九事务) * [十、事件](#十事件) * [文件事件](#文件事件) * [时间事件](#时间事件) * [事件的调度与执行](#事件的调度与执行) * [十一、复制](#十一复制) * [连接过程](#连接过程) * [主从链](#主从链) * [十二、Sentinel](#十二sentinel) * [十三、分片](#十三分片) * [十四、一个简单的论坛系统分析](#十四一个简单的论坛系统分析) * [文章信息](#文章信息) * [点赞功能](#点赞功能) * [对文章进行排序](#对文章进行排序) * [参考资料](#参考资料) # 一、概述 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/) ## STRING