Redis基本数据类型

Redis的基本数据类型包括String、List、Set、Hash和Zset。String常用于缓存和计数器,List适用于最新消息队列和消息队列功能,Set提供无序集合操作,Hash适合存储对象,Zset则是一个有序集合,常用于排行榜和权重分配。这些数据类型各有特点,支持多种操作,满足不同场景需求。

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

基本数据类型

String、List、Set、Zset、Hash

数据类型特点

类型操作
String可以是字符串、整数或浮点数对整个字符串或字符串的一部分进行操作;对整数或浮点数进行自增或自减操作;
List一个链表,链表上的每个节点都包含一个字符串对链表的两端进行push和pop操作,读取单个或多个元素;根据值查找或删除元素;
Set包含字符串的无序集合字符串的集合,包含基础的方法有看是否存在添加、获取、删除;还包含计算交集、并集、差集等
Zset和散列一样,用于存储键值对字符串成员与浮点数分数之间的有序映射;元素的排列顺序由分数的大小决定;包含方法有添加、获取、删除单个元素以及根据分值范围或成员来获取元素
Hash包含键值对的无序散列表包含方法有添加、获取、删除单个元素

使用场景及数据结构

String场景

  1. 缓存:缓存图片、验证码等信息,降低mysql读写压力
  2. session共享
  3. 计数器:redis是单线程模型,一个命令执行完才会执行下一个,同时数据可以一步落地到其他的数据源

数据结构

  1. 字符串是Redis最基本的数据类型,不仅所有key都是字符串类型,其它几种数据类型构成的元素也是字符串。注意字符串的长度不能超过512M。

List场景

  1. 使用List结构,我们可以轻松地实现最新消息排队功能(比如新浪微博的TimeLine)。
  2. List的另一个应用就是消息队列,可以利用List的PUSH 操作,将任务存放在List中,然后工作线程再用 POP 操作将任务取出进行执行。
  3. Redis还提供了操作List中某一段的api,你可以直接查询,删 除List中某一段的元素。
  4. 微博TimeLine: 有人发布微博,用lpush加入时间轴,展示新的列表信息。
  5. 消息队列
    Redis 的 Set 是 String 类型的无序集合。

Set场景

  1. 集合成员是不可重复的 Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)
  2. 标签(tag),给用户添加标签,或者用户给消息添加标签,这样有同一标签或者类似标签的可以给推荐关注的事或者关注的人。点赞,或点踩,收藏等,可以放到set中实现

Hash场景

  1. Redis hash 是一个 string 类型的 field(字段) 和 value(属性) 的映射表,hash特别适合用于存储对象。一个hash可以存多个key-value,类似一个对象的多个字段和属性
  2. 缓存: 能直观,相比string更节省空间,的维护缓存信息,如用户信息,视频信息等。

Zset有序集合

简介
Redis 有序集合和集合一样基本一致

每个元素都会关联一个 double 类型的权重参数(score),使得集合中的元素能够按score进行有序排列。
特点:

  1. 有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
  2. 排行榜:有序集合经典使用场景。例如小说视频等网站需要对用户上传的小说视频做排行榜,榜单可以按照用户关注数,更新时间,字数等打分,做排行。
  3. 成绩排行:比如一个存储全班同学成绩的sorted set,其集合value可以是同学的学号,而score就可以是其考试得分,形成了按成绩排序。
  4. 权重分配:可以用sortedset来做带权重的队列,比如普通消息的score为1,重要消息的score为2,然后工作线程可以选择按score的倒序来获取工作任务。让重要的任务优先执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值