redis的五种数据类型是什么?
如下:
一、string
string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
命令: SET 和 GET 命令。
二、hash
Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
HMSET, HGET 命令,HMSET 设置了两个 field=>value 对, HGET 获取对应 field 对应的 value。
三、list
列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
lpush 设置值,lrange取值。
四、set
redis的set是string的无序集合。集合通过哈希表实现。
添加一个string元素到key对应的set集合中,用 sadd命令。返回1表示成功,0表示在集合中已存在,返回错误表示key对应的set不存在。
查看用smembers 命令。
集合内元素的唯一性,第二次插入的元素将被忽略。
集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。
五、zset
redis的zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
添加元素到集合,元素在集合中存在则更新对应score:zadd key score member。
Redis数据模型:
Redis的外围由一个键、值映射的字典构成。与其他非关系型数据库主要不同在于:Redis中值的类型不仅限于字符串,还支持如下抽象数据类型:
1、字符串列表。
2、无序不重复的字符串集合。
3、有序不重复的字符串集合。
4、键、值都为字符串的哈希表。
值的类型决定了值本身支持的操作。Redis支持不同无序、有序的列表,无序、有序的集合间的交集、并集等高级服务器端原子操作。
2023-03-23 · 百度认证:北京一天天教育科技有限公司官方账号,教育领域创作者
一、String | 字符串类型
Redis的字符串类型,可以存储字符串、整数或浮点数,如果存储的是整数或者浮点数,还能执行自增或自减操作。Reids的string类型是二进制的,可以包含任何数据,比如一个序列化的对象、一个图片、字节流等,不过存储大小上限是512M。
Redis底层定义了自己的一种数据结构。
二、List | 列表类型
Redis的列表类型和许多编程语言中的列表类型类似,可以有序地存储多个字符串,支持从列表的左端和右端推入或弹出元素,Redis列表的底层实现是压缩列表,Redis内容自己实现的数据结构和双端链表。
将一个或者多个value值插入列表的表头。如果 key 不存在,会创建一个空列表并执行 LPUSH 操作。当 key
存在但不是列表类型时,返回一个错误。
三、set | 集合类型
Redis的集合以无序的方式存储多个不同的元素,这里要注意的是无序和不同。除了对集合能快速执行添加、删除、检查一个元素是否在集合中之外,还可以对多个集合执行交集、并集和差集运算。
Redis的集合类型底层实现主要是通过一种叫做字典的数据结构。不过Redis为了追求极致的性能,会根据存储的值是否是整数,选择一种intset的数据结构。当满足一定条件后,会切换成字典的实现。
四、hash | 散列表(哈希表)
Redis的hash类型其实就是一个缩减版的redis。它存储的是键值对,将多个键值对存储到一个redis键里面。
hash类型的底层主要也是基于字典这种数据结构来实现的。
五、zset | 有序集合
有序集合相比较于集合,多个有序两个字,我们知道set集合类型存储的元素是无序的,那Redis有序集合是怎么保证有序的?使用分值,有序集合里存储这成员与分值之间的映射,并提供了分值处理命令,以及根据分值的大小有序地获取成员或分值的命令。
Redis有序集合的实现使用了一种叫跳跃表的数据结构(简称跳表,可自行查阅),同时也使用到了前面提到的压缩列表。也是满足一定条件的话,会自行转换。