(一)定义
一个开源的,支持CSD协议的,高性能的key-value数据库。
特点:
①支持数据持久化
②支持5种数据格式
③支持数据备份,master-slave模式。
优势:
①性能高,读:11w/s,写:8.1w/s
②数据类型多,string,hash,list,set,zset
③原子性,单个操作原子性,多个操作支持事务,也是原子性。
④丰富的特性,支持发布订阅,key过期等。
(二)数据类型
String
redis最基本的数据类型。
最大512M。
基本存取命令是 SET 和 GET。
Hash
redis hash是一个键值对集合,是string类型的field-value映射表。
特别适合存储对象。
一个hash最多可存2^32 - 1 (40多亿)个元素。
基本存取命令是 HMSET 和 HGET。
List
有序string集合。
按插入顺序排序,支持头插和尾插。
一个list最多可存2^32 - 1 (40多亿)个元素。
基本存取命令是 LPUSH(头插) RPUSH(尾插) LRANGE。
Set
无序string集合,元素不可重复。
通过hash表实现,增删查复杂度都是O(1)。
一个set最多可存2^32 - 1 (40多亿)个元素。
基本存取命令是 SADD 和 SMEMBERS。
zset(sorted set)
有序string集合,元素不可重复。
每个元素都会关联一个double类型的分数(score),通过score来对元素进行排序。score允许重复,重复时按照元素进行字典排序。
一个zset最多可存2^32 - 1 (40多亿)个元素。
基本存取命令是 ZADD 和 ZRANGE。
Stream
redis stream 是redis5.0新增的数据结构。
主要用于MQ,redis自身的发布订阅(pub/sub)功能实现消息队列功能,缺点是无法持久化,可以分发消息,但不能记录历史消息。
redis stream提供了消息持久化和主备复制功能。
结构是消息列表,将所有加入的消息串起来,每个消息都有唯一的ID和对应的内容。
(三)高级特性
数据备份与恢复
使用 SAVE 命令创建备份(会在 redis 安装目录中创建dump.rdb文件)。
将备份文件放到redis安装目录并启动服务即可。
使用 CONFIG GET dir 获取安装目录。
使用 BGSAVE 备份数据(后台运行)。
管道
管道技术最显著的优势是提高了redis服务的性能。
分区
分区是分割数据到多个redis实例的处理过程,每个实例只保存key的一个子集。
优势:
利用多台计算机的内存,允许我们构造更大的数据库。
多核和多台计算机,允许扩展计算能力。
多台计算机和网络适配器,允许扩展网络带宽。
缺点:
不支持多个key的操作,如果这些key在不同的实例中。
不支持多个key的事务操作。
数据处理复杂。
类型:
范围分区
哈希分区