Redis的五种数据类型(string、hash 、list、set、zset)

Redis 提供了丰富的数据类型,常见的有五种:String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合)

String

String 是最基本的 key-value 结构,key 是唯一标识,value 是具体的值,value其实不仅是字符串, 也可以是数字(整数或浮点数),value 最多可以容纳的数据长度是 512M。

常用指令

普通字符串的基本操作:

设置 key-value 类型的值

> SET name hanbing

OK

根据 key 获得对应的 value

> GET name

"hanbing"

判断某个 key 是否存在

> EXISTS name

(integer) 1

返回 key 所储存的字符串值的长度

> STRLEN name

(integer) 3

删除某个 key 对应的值

> DEL name

(integer) 1

批量设置 :

批量设置 key-value 类型的值

> MSET key1 value1 key2 value2

OK

批量获取多个 key 对应的 value

> MGET key1 key2

  1. "value1"

  2. "value2"

Hash

Hash 是一个键值对(key - value)集合,其中 value 的形式如: value=[{field1,value1},...{fieldN,valueN}]。Hash 特别适合用于存储对象。

常用指令

存储一个哈希表key的键值

HSET key field value

获取哈希表key对应的field键值

HGET key field

在一个哈希表key中存储多个键值对

HMSET key field value [field value...]

批量获取哈希表key中多个field键值

HMGET key field [field ...]

删除哈希表key中的field键值

HDEL key field [field ...]

List

List 列表是简单的字符串列表,按照插入顺序排序,可以从头部或尾部向 List 列表添加元素。

列表的最大长度为 2^32 - 1,也即每个列表支持超过 40 亿个元素。

List 类型的底层数据结构是由双向链表或压缩列表实现的:

常用命令

将一个或多个值value插入到key列表的表头(最左边),最后的值在最前面

LPUSH key value [value ...]

返回列表key中指定区间内的元素,区间以偏移量start和stop指定,从0开始,如果到-1结束,则为返回全部元素

LRANGE key start stop

将一个或多个值value插入到key列表的表尾(最右边)

RPUSH key value [value ...]

移除并返回key列表的头元素

LPOP key

Set

Set 类型是一个无序并唯一的键值集合,它的存储顺序不会按照插入的先后顺序进行存储。

一个集合最多可以存储 2^32-1 个元素。概念和数学中个的集合基本类似,可以交集,并集,差集等等,所以 Set 类型除了支持集合内的增删改查,同时还支持多个集合取交集、并集、差集。

常用命令

往集合key中存入元素,元素存在则忽略,若key不存在则新建

SADD key member [member ...]

获取集合key中所有元素

SMEMBERS key

从集合key中删除元素

SREM key member [member ...]

Set 类型和 List 类型的区别如下:

  • List 可以存储重复元素,Set 只能存储非重复元素;
  • List 是按照元素的先后顺序存储元素的,而 Set 则是无序方式存储元素的。

Zset

Zset 类型(有序集合类型)相比于 Set 类型多了一个排序属性 score(分值),对于有序集合 ZSet 来说,每个存储元素相当于有两个值组成的,一个是有序结合的元素值,一个是排序值。

有序集合保留了集合不能有重复成员的特性(分值可以重复),但不同的是,有序集合中的元素可以排序。

常用命令

往有序集合key中加入带分值元素

ZADD key score member [[score member]...]

正序获取有序集合key从start下标到stop下标的元素

ZRANGE key start stop [WITHSCORES]

往有序集合key中删除元素

ZREM key member [member...]

相关推荐
serendipity_hky6 分钟前
互联网大厂Java面试故事:核心技术栈与场景化业务问题实战解析
java·spring boot·redis·elasticsearch·微服务·消息队列·内容社区
黎相思8 分钟前
MySQL索引特性
数据库·mysql
rit843249942 分钟前
压缩感知信号恢复算法:OMP与CoSaMP对比分析
数据库·人工智能·算法
Forget_85501 小时前
RHCE复习作业4
数据库
f***28141 小时前
【零基础学Mysql】常用函数讲解,提升数据操作效率的利器
数据库·mysql
+VX:Fegn08951 小时前
计算机毕业设计|基于springboot+vue的学校课程管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
Elastic 中国社区官方博客1 小时前
ES|QL 在 9.2:智能查找连接和时间序列支持
大数据·数据库·人工智能·sql·elasticsearch·搜索引擎·全文检索
q***01651 小时前
PostgreSQL 17 发布了!非常稳定的版本
数据库·postgresql
菜鸟冲锋号2 小时前
问题:增量关联(实时同步新数据) 这个场景中,如果hudi_pay 变更了一条数据,hudi_order_pay_join 结果的数据会跟着变化吗
服务器·前端·数据库
Wilson Chen2 小时前
深入解剖 Redis Cluster:从 16384 分片原理到故障自动转移的硬核实战
数据库·redis·缓存