ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 数据类型 [TOC] Redis 5种数据类型 > `string`(字符串),`hash`(哈希),`list`(列表),`set`(集合)及`zset`(sorted set:有序集合) > Redis 在 2.8.9 版本添加了 HyperLogLog 结构。 ## string (字符串) * 一个`key` 对应一个 `value` * 二进制安全,可以包含任何数据;例如: 图片或者序列化的对象 * 一个键最大能存储512MB ## hash(哈希) * `key => value` 键值对 * 一个 string 类型的 field 和 value 的映射表 * 每个 hash 可以存储 2^32 - 1 键值对(40多亿) ## list(列表) * 简单的字符串列表,按照插入顺序排序 * 列表最多可存储 2^32 - 1 元素 (4294967295, 每个列表可存储40多亿)。 ## set(集合) * 不允许重复的数据出现 * Redis 的 Set 是 string 类型的无序集合。 * 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 * 集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)。 ## zset(sorted set : 有序集合) * 和Set一样也是string类型元素的集合,且不允许重复的成员。 * 每个元素都会关联一个double类型的分数 * 成员是唯一的,但分数(score)却可以重复。 * 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 * 集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)。 ## HyperLogLog * 用来做基数统计的算法 * 输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。 * 每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数 * HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素 > 基数 : > 比如数据集 {2, 4, 6, 7, 5, 7, 8}, 那么这个数据集的基数集为 {2, 4, 6 ,7,5, 8}, 基数(不重复元素)为6。 基数估计就是在误差可接受的范围内,快速计算基数。