-
字符串(
String
)string
是redis
最基本的数据类型, 一个key
对应一个value
string
类型是二进制安全
的, 意味着redis
的string
可以包含任何数据, 比如 图片 或者 序列化的对象string
类型的值最大占用空间是512M
, 但一般情况下不建议直接将图片存储到redis
中, 即使这会产生一定的延迟。存储文件路径可以节省内存占用,增添灵活性,使项目易于管理,若使用云存储服务,可以降低许多成本。 -
列表(
List
)redis
列表是简单的字符串列表, 按照插入顺序排序, 用户可以添加一个元素到列表的头部 或 尾部redis list
的底层是一个双端链表
, 最多可以包含2^32 - 1
个元素 -
哈希表(
hash
)redis hash
是一个sting
类型的field
和value
的映射表,hash
特别适合用于存储对象 -
集合(
Set
)Set
是String
类型的无序集合, 集合成员是唯一的, 这意味着集合中不能出现重复的数据, 集合的对象的编码可以是Intset
或者hashtable
Set
底层由hash
实现, 所以添加, 删除, 查找的时间复杂度都是 O(1)。 -
有序集合(
ZSet
,sorted set
)zset
和set
一样, 也是string
类型元素的集合, 且不允许重复的元素不同点在于: 每个元素都会关联一个
double
类型的分数,redis
通过分数来为集合中的成员进行从小到大的排序。zset
成员是唯一的, 但score(分数)
可以重复zset
集合是通过哈希表实现的, 所以添加, 删除, 查找的时间复杂度都是 O(1)。集合中最大的成员数为 2^32-1 -
地理空间(
GEO
)GEO
主要用于存储地理位置信息, 并对存储的信息进行操作, 包括 添加地理位置的坐标, 获取地理位置的坐标, 计算两个位置之间的距离, 根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。 -
基数统计(
HyperLogLog
)HyperLogLog
是用来做基数统计的算法,HyperLogLog
的优点是: 在输入元素的数量或体积非常大时, 计算基数所需的空间总是固定且很小的.每个
HyperLogLog
键只需要花费12kb
内存, 就可以计算接近2^64
个不同元素的基数, 这和计算基数时, 元素越多, 耗费内存越多的集合形成鲜明对比但是, 因为
HyperLogLog
只会根据元素来计算基数, 而不会存储输入元素本身, 所以HyperLogLog
不能像集合那样, 返回输入的各个元素 -
位图(
bitmap
)由 0 和 1 状态表现的二进制位的 bit 数组, 多用于只有两种结果的数据中
-
位域(
bitfield
)通过
bitfield
命令可以一次性操作多个比特位域(指连续的多个比特位), 它会执行一系列操作并返回一个响应数组, 这个数组中的元素对应参数列表中的相应操作的执行结果。 -
流(
Stream
)stream
类似于一个消息队列,redis
本身有一个redis
发布订阅(pub/sub)来实现消息队列的功能, 但有个缺点就是消息无法持久化, 如果出现网络断开,redis
宕机的情况, 消息就会被丢弃。但
stream
提供了消息的持久化和主备复制功能, 可以让任何客户端访问任何时刻的数据, 并且能记住每一个客户端的访问位置, 还能保证消息不丢失