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...]

相关推荐
一屉大大大花卷15 分钟前
初识Neo4j之入门介绍(一)
数据库·neo4j
周胡杰1 小时前
鸿蒙arkts使用关系型数据库,使用DB Browser for SQLite连接和查看数据库数据?使用TaskPool进行频繁数据库操作
前端·数据库·华为·harmonyos·鸿蒙·鸿蒙系统
wkj0011 小时前
navicate如何设置数据库引擎
数据库·mysql
赵渝强老师1 小时前
【赵渝强老师】Oracle RMAN的目录数据库
数据库·oracle
暖暖木头1 小时前
Oracle注释详解
数据库·oracle
御控工业物联网1 小时前
御控网关如何实现MQTT、MODBUS、OPCUA、SQL、HTTP之间协议转换
数据库·sql·http
GJCTYU3 小时前
spring中@Transactional注解和事务的实战理解附代码
数据库·spring boot·后端·spring·oracle·mybatis
MicroTech20253 小时前
微算法科技(NASDAQ: MLGO)探索Grover量子搜索算法,利用量子叠加和干涉原理,实现在无序数据库中快速定位目标信息的效果。
数据库·科技·算法
Code季风3 小时前
SQL关键字快速入门:CASE 实现条件逻辑
javascript·数据库·sql
weixin_478689763 小时前
操作系统【2】【内存管理】【虚拟内存】【参考小林code】
数据库·nosql