Redis——五种数据类型

本文介绍了Redis的五种数据类型:strings、hashs、lists、sets和sortedsets的特点及应用场景,并展示了它们的存储结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       Redis共有strings、hashs、lists、sets、sorted sets五种数据类型,可以说已经比较丰富了。下面只对这几种数据类型的数据结构与用途做简要介绍。至于每种数据类型的操作API,这里只简单一提,不再一一详细介绍,有需要的用户可以Google即可。

一、    strings

       string是最简单的类型,一个Key对应一个Value。string类型是类型安全的,Redis的string可以包含任何数据,比如jpg图片或者序列化的对象。存储结构如下:


      


  常用的API函数有:


  


二、    lists(栈/队列)

       List是一个链表结构,主要功能是push/pop,获取一个范围的所有值等等。操作中key就理解为链表的名称。Redis的list类型其实就是每一个子元素都是string类型的双向链表。我们可以通过push、pop操作从链表的头部或者尾部添加、删除元素,这样list既可以做栈又可以做队列。存储结构如下:


      


  常用的API函数有:


  


      

三、    hashs

       Redis的hash是一个string类型的field和value的映射表。五种数据类型中,只有hash是二维的,它特别适合存储对象。相较于将对象的每个字段属性存为单个string类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。存储结构如下:


      


  常用的API函数有:


  


      

四、    sets

       sets是集合,它是string类型的无序集合。set是通过hash table实现的。它非常类似数学中的集合,所以我们可以取并集、差集、交集。通过这些操作我们可以实现sns中的好友推荐和blog中的tag功能。存储结构如下:


      


  常用的API函数有:


  


      

五、    sorted sets

       sortedsets是sets的一个升级版本,它在sets的基础上增加了一个顺序属性score。这一属性在添加、修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解为有两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。存储结构如下:


  


  常用的API函数有:


  


  五种数据类型已介绍完毕,下面给出常用的键值命令与服务器命令:

  

六、    键值相关命令


      


七、    服务器相关命令

  

      

八、    五种数据类型存储结构全貌

   

### Redis 数据类型概述 Redis 支持多种数据结构,每种都有独特的特性和适用场景。以下是关于字符串、哈希、列表、集合以及有序集合的操作说明。 #### 字符串 (String) 字符串是最简单的数据类型,在 Redis 中可以保存二进制安全的字符串值。除了普通的字符串外,还可以用于计数器等用途。 ```bash SET key value GET key INCR counter_key DECR counter_key ``` 通过 `SET` 命令设置键值对,并可通过 `GET` 获取其值;而 `INCR` 和 `DECR` 则分别用来增加或减少数值型字符串表示的整数值[^1]。 #### 哈希表 (Hash) 哈希表允许存储映射关系的数据集,即字段-值对的形式。适合于像用户资料这样的实体对象建模。 ```bash HSET user:100 name "Alice" age "30" HGETALL user:100 HMGET user:100 name age HDEL user:100 field_name ``` 上述命令展示了如何向名为 `user:100` 的散列中添加多个字段及其对应值,同时提供了批量读取指定字段的方法以及其他管理功能[^2]。 #### 列表 (List) 列表是一种双向链表实现方式,支持高效的头部和尾部插入/删除操作。适用于消息队列之类的场景应用。 ```bash LPUSH mylist item1 RPUSH mylist item2 LRANGE mylist start stop LPOP mylist RPOP mylist ``` 这里定义了一些基本指令来操控两端元素进出顺序排列好的项目序列,并能按索引范围提取子集内容。 #### 集合 (Set) 集合由唯一成员构成,不允许重复项存在。可用于求交并差运算,非常适合处理去重需求的任务。 ```bash SADD unique_set member1 member2 ... SMEMBERS unique_set SINTER set1 set2... SDIFF setA setB... SUNION setX setC... SCARD unique_set ``` 这些命令实现了往无序不重复元素集中加入新条目、查看全部成员、执行多组间的逻辑组合计算等功能。 #### 有序集合 (Sorted Set) 有序集合不仅保留了集合的特点——成员不可重复,还额外赋予每个成员一个分数(score),从而能够按照特定排序规则进行检索查询。 ```bash ZADD sortedset score member ZRANGEBYSCORE sortedset min max WITHSCORES ZREVRANK sortedset member ZREM sortedset member ``` 此部分列举了几类针对带权重节点容器所特有的动作,比如依据得分区间选取记录、逆序定位某位次上的个体或是移除某个已知名称的对象实例。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值