一步一步学习Redis——五大数据类型(String、Hash、List、Set、ZSet)简要介绍

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 一步一步学习Redis——五大数据类型(String、Hash、List、Set、ZSet)简要介绍

1.开篇


Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及ZSet(sorted set:有序集合) 

2.Redis五大数据类型


2.1 String(字符串)

String redis 最基本的类型,你可以理解成与Memcached一模一样的类型,一个 key 对应一个 value

String 类型是二进制安全的。意思是redis String 可以包含任何数据。比如jpg图片或者序列化的对象。

String 类型是 Redis 最基本的数据类型,String 类型的值最大能存储 512MB

 设置键值对:SET
 获取键值对:GET

2.2 Hash(哈希


Redis Hash 是一个键值(key=>value)集合

Redis Hash 是一个 String 类型的field value 的映射表,Hash 特别适合用于存储对象。每个Hash 可以存储 2^32 -1 键值对(40多亿)。

DEL runoob 用于删除前面测试用过的 key,不然会报错:(error) WRONGTYPE Operation against a key holding the wrong kind of value

 设置键值对:HMSET
 获取键值对:HGET

2.3 List(列表)


Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

列表最多可存储 2^32 - 1 元素 (4294967295, 每个列表可存储40多亿) 

 设置键值对:LPUSH
 获取键值对:LRANGE

2.4 Set(集合)

Redis Set String 类型的无序集合。

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

设置键值对:SADD
添加一个String元素到key对应的Set集合中,添加成功则返回1,如果元素已经在集合中则返回0。
获取键值对:SMEMBERS

2.5 ZSet(有序集合)


Redis ZSet Set 一样也是String 类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。Redis正是通过分数(score)来为集合中的成员进行从小到大的排序。

ZSet的成员是唯一的,但分数(score)却可以重复。

设置键值对:ZADD
添加一个元素到集合,元素在集合中存在则更新对应的score。添加成功返回1,反之返回0。
  获取键值对:ZRANGEBYSCORE

 

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
打赏
0
0
0
0
85
分享
相关文章
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
Redis 列表(List)
10月更文挑战第16天
73 2
|
6月前
|
Redis 哈希(Hash)
10月更文挑战第16天
85 1
redis 的List类型 实现 排行榜
【10月更文挑战第8天】
81 2
【c++丨STL】基于红黑树模拟实现set和map(附源码)
本文基于红黑树的实现,模拟了STL中的`set`和`map`容器。通过封装同一棵红黑树并进行适配修改,实现了两种容器的功能。主要步骤包括:1) 修改红黑树节点结构以支持不同数据类型;2) 使用仿函数适配键值比较逻辑;3) 实现双向迭代器支持遍历操作;4) 封装`insert`、`find`等接口,并为`map`实现`operator[]`。最终,通过测试代码验证了功能的正确性。此实现减少了代码冗余,展示了模板与仿函数的强大灵活性。
34 2
哈希表模拟封装unordered_map和unordered_set
哈希表模拟封装unordered_map和unordered_set
|
4月前
|
你对Collection中Set、List、Map理解?
你对Collection中Set、List、Map理解?
92 18
你对Collection中Set、List、Map理解?
只会“有序无序”?面试官嫌弃的List、Set、Map回答!
小米,一位热衷于技术分享的程序员,通过与朋友小林的对话,详细解析了Java面试中常见的List、Set、Map三者之间的区别,不仅涵盖了它们的基本特性,还深入探讨了各自的实现原理及应用场景,帮助面试者更好地准备相关问题。
87 20
【C++】map、set基本用法
本文介绍了C++ STL中的`map`和`set`两种关联容器。`map`用于存储键值对,每个键唯一;而`set`存储唯一元素,不包含值。两者均基于红黑树实现,支持高效的查找、插入和删除操作。文中详细列举了它们的构造方法、迭代器、容量检查、元素修改等常用接口,并简要对比了`map`与`set`的主要差异。此外,还介绍了允许重复元素的`multiset`和`multimap`。
91 3
【C++】map、set基本用法