--- title: Redis date: 2018/06/09 categories: - database tags: - database - key-value - cache --- # Redis - [概述](#概述) - [Redis 简介](#redis-简介) - [Redis 的优势](#redis-的优势) - [数据类型](#数据类型) - [STRING](#string) - [LIST](#list) - [SET](#set) - [HASH](#hash) - [ZSET](#zset) - [使用场景](#使用场景) - [Redis 与 Memcached](#redis-与-memcached) - [Redis 管道](#redis-管道) - [键的过期时间](#键的过期时间) - [数据淘汰策略](#数据淘汰策略) - [持久化](#持久化) - [快照持久化](#快照持久化) - [AOF 持久化](#aof-持久化) - [发布与订阅](#发布与订阅) - [事务](#事务) - [EXEC](#exec) - [MULTI](#multi) - [DISCARD](#discard) - [WATCH](#watch) - [事件](#事件) - [文件事件](#文件事件) - [时间事件](#时间事件) - [事件的调度与执行](#事件的调度与执行) - [复制](#复制) - [连接过程](#连接过程) - [主从链](#主从链) - [Sentinel](#sentinel) - [分片](#分片) - [Redis Client](#redis-client) - [资料](#资料) ## 概述 ### Redis 简介 Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。 键的类型只能为字符串,值支持的五种类型数据类型为:字符串、列表、集合、有序集合、散列表。 Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。 ### Redis 的优势 - 性能极高 – Redis 能读的速度是 110000 次/s,写的速度是 81000 次/s。 - 丰富的数据类型 - 支持字符串、列表、集合、有序集合、散列表。 - 原子 - Redis 的所有操作都是原子性的。单个操作是原子性的。多个操作也支持事务,即原子性,通过 MULTI 和 EXEC 指令包起来。 - 持久化 - Redis 支持数据的持久化。可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 - 备份 - Redis 支持数据的备份,即 master-slave 模式的数据备份。 - 丰富的特性 - Redis 还支持发布订阅, 通知, key 过期等等特性。 ## 数据类型 | 数据类型 | 可以存储的值 | 操作 | | :------: | :--------------------: | :--------------------------------------------------------------------------------------------------------------: | | 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