目录

redis 五种基础数据类型

李羽秋
李羽秋 2022年12月15日  ·  阅读 1,488

redis 五种基础数据类型

1. 简介

首先对redis来说,所有的key都是字符串。我们在谈数据结构时,讨论的是存储值的数据类型,主要包括:String、List、Set、Zset、Hash。

image-20220420140758103

2. String 字符串

String 类型 是redis中最基本的数据类型,一个key对应一个value。String类型是二进制安全的,即redis的string可以包含任何数据。如数字,字符串,图片或者序列化的对象等。

2.1 命令使用

image-20220420141737572

2.2使用场景

  • 缓存: 经典使用场景,把常用信息,字符串,图片或者视频等
  • 计时器: redis是单线程模型,一个命令执行完才会执行下一个,同时数据可以一步落到其他的数据源
  • session:常见方案spring session + redis 实现session共享

3. List 列表

Redis 中的List其实就是链表,使用List结构,我们可以轻松地实现最新消息排队功能(比如新浪微博的TimeLine)。List的另一个应用就是消息队列,可以利用List的 PUSH 操作,将任务存放在List中,然后工作线程再用 POP 操作将任务取出进行执行。

3.1 命令使用

image-20220420143924007

3.2 使用列表的技巧

  • lpush + lpop = Stack(栈)
  • lpush + rpop = Queue(队列)
  • lpush + ltrim = Capped Collection(有限集合)
  • lpush + brpop = Message Queue(消息队列)

3.3 实战场景

  • 微博TimeLine: 有人发布微博,用lpush加入时间轴,展示新的列表信息
  • 消息队列

3. Set 集合

Redis中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

3.1 命令使用

image-20220420145428799

3.2 实战场景

  • 标签: 给用户添加标签,或者用户给消息添加标签,这样有同一标签或者类似标签的可以给推荐关注的事或者关注的人。
  • 点赞,或点踩,收藏等,可以放到set中实现

4. Hash散列

Redis hash 是一个string 类型的field和value的映射表,hash特别适合用于存储对象。

4.1 命令使用

image-20220420152017769

4.2 实战场景

  • 缓存: 能直观,相比string更节省空间

5. Zset 有序集合

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

5.1 命令使用

image-20220420152410089

5.2 实战场景

  • 排行榜:有序集合经典使用场景。例如小说视频等网站需要对用户上传的小说视频做排行榜,榜单可以按照用户关注数,更新时间,字数等打分,做排行。
分类: redis
标签: