Redis 五种基础数据类型及其相关命令介绍

Redis 介绍

Redis(Remote Dictionary Server)是一个开源的基于内存的key-value数据库,Redis本身的数据结构是哈希表,而Redisd支持多种不同的数据类型,这些数据类型对应于值的不同数据结构,常见的有五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合)

image-20231022214141236

image-20231022214154538

String

介绍

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

常用命令

基础命令

SET:添加或修改已经存在的一个String类型的键值对
SET key value [EX seconds] [PX milliseconds] [NX|XX]

参数:

  • key:要设置的键。
  • value:要设置的值。
  • EX seconds:可选参数,表示在多少秒后过期。例如,EX 3600表示在1小时后过期。
  • PX milliseconds:可选参数,表示在多少毫秒后过期。例如,PX 60000表示在1分钟后过期。
  • NX:可选参数,仅在键不存在时设置值。
  • XX:可选参数,仅在键已经存在时设置值。

示例:

在这里插入图片描述

第二次SET 会将name 改为 zs

GET:根据key获取String类型的value
GET key

示例:

在这里插入图片描述

MSET:批量添加多个String类型的键值对
MSET key1 value1 [key2 value2 ... keyN valueN]

参数

  • key1 value1:第一个键值对,其中 key1 是键名,value1 是对应的值。
  • key2 value2:第二个键值对,依此类推,可以设置多个键值对。

示例:

在这里插入图片描述

MGET:根据多个key获取多个String类型的value
MGET key1 [key2 ... keyN]

参数

  • key1key2、…、keyN:要获取值的键名,可以指定一个或多个键,以空格分隔。

示例:

在这里插入图片描述

计数器

字符串的内容为整数的时候可以使用,如果key不存在会将键的值初始化为0,然后再执行递增操作。

image-20231022222727696

INCR:让一个整型的value自增1
INCR key

参数

  • key:要递增的键名。

示例:

在这里插入图片描述

INCRBY:让一个整型的value自增并指定步长
INCRBY key increment

参数

  • key:要递增的键名。
  • increment:递增的整数值。

示例:

在这里插入图片描述

INCRBYFLOAT:让一个浮点型的value自增并指定步长
INCRBYFLOAT key increment

参数

  • key:要递增值的键名。
  • increment:浮点数值,表示要增加的值。

示例:
在这里插入图片描述

SETNX:不存在就插入

SETNX key value

参数

  • key:要设置值的键名。
  • value:要设置的值。

示例:

存在会返回0

image-20231022221341573

set 命令的 nx 参数 存在会返回空

在这里插入图片描述

List

介绍

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

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

特点:

  • 有序
  • 元素可重复
  • 插入和删除快
  • 查询速度一般

常用命令

LPUSH:向列表左侧插入一个或多个元素
LPUSH key value [value ...]

示例:

在这里插入图片描述

在这里插入图片描述

LPOP:移除并返回列表左边第一个元素,没有返回nil
LPOP key

示例:

在这里插入图片描述

在这里插入图片描述

RPUSH:向列表右侧插入一个或多个元素
RPUSH key value [value ...]

示例:

在这里插入图片描述

在这里插入图片描述

RPOP:移除并返回列表右边第一个元素,没有返回nil
RPOP key

示例:

在这里插入图片描述

LRANGE:返回列表key中指定区间内的元素
LRANGE key start end

示例:

在这里插入图片描述

在这里插入图片描述

结束索引可以是负数,表示从列表的末尾向前计数。例如,-1表示列表的最后一个元素,-2表示倒数第二个元素,依此类推。如果结束索引大于列表的长度,LRANGE将返回列表中所有可用的元素。

BLPOP 和 BRPOP
# 从key列表表头弹出一个元素,没有就阻塞timeout秒,如果timeout=0则一直阻塞
BLPOP key [key ...] timeout
# 从key列表表尾弹出一个元素,没有就阻塞timeout秒,如果timeout=0则一直阻塞
BRPOP key [key ...] timeout

Hash

介绍

Hash 是一个键值对(key - value)集合,其中 value 的形式如: value=[{field1,value1},...{fieldN,valueN}],类似Java中的HashMap。

Hash 特别适合用于存储对象。String 结构是将对象序列化为 JSON 字符串后存储,当需要修改对象某个字段时很不方便,而 Hash 结构可以将对象中的每个字段独立存储,这样就可以针对单个字段做 CRUD了。

常用命令

HSET:存储一个哈希表key的键值

HSET key field value 

示例:
在这里插入图片描述

image-20231022225553779

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

在这里插入图片描述

HMSET:在一个哈希表key中存储多个键值对
HMSET key field value [field value...] 

示例:

在这里插入图片描述

HMGET:批量获取哈希表key中多个field键值
HMGET key field [field ...] 

示例:

在这里插入图片描述

HLEN:返回哈希表key中field的数量
HLEN key 

示例:

在这里插入图片描述

HGETALL:返回哈希表key中所有的键值
HGETALL key

示例:

在这里插入图片描述

HINCRBY :为哈希表key中field键的值加上增量n
HINCRBY key field n 

示例:

在这里插入图片描述

Set

介绍

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

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

Redis 的 Set 结构与 Java 中的 HashSet 类似,可以看做是一个 value 为 null 的 HashMap。因为也是一个 hash 表,因此具备与 HashSet 类似的特征:

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集、并集、差集等功能

常用命令

基本命令

SADD:往集合key中存入元素,元素存在则忽略,若key不存在则新建
SADD key member [member ...]

示例:

在这里插入图片描述

插入无序

在这里插入图片描述

SREM:从集合key中删除元素
SREM key member [member ...] 

示例:

在这里插入图片描述

在这里插入图片描述

SMEMBERS:获取集合key中所有元素
SMEMBERS key

示例:

在这里插入图片描述

SCARD:获取集合key中的元素个数
SCARD key

示例:

在这里插入图片描述

SISMEMBER:判断member元素是否存在于集合key中
SISMEMBER key member

示例:

在这里插入图片描述

SRANDMEMBER:从集合key中随机选出count个元素,元素不从key中删除
SRANDMEMBER key [count]

示例:

在这里插入图片描述

SPOP:从集合key中随机选出count个元素,元素从key中删除
SPOP key [count]

示例:

在这里插入图片描述

运算命令

在这里插入图片描述

在这里插入图片描述

SINTER:交集运算
SINTER key [key ...]

示例:

在这里插入图片描述

SINTERSTORE:将交集结果存入新集合destination中
SINTERSTORE destination key [key ...]

示例:

在这里插入图片描述

SUNION:并集运算
SUNION key [key ...]

示例:

在这里插入图片描述

SUNIONSTORE:将并集结果存入新集合destination中
SUNIONSTORE destination key [key ...]

示例:

在这里插入图片描述

SDIFF:差集运算
SDIFF key [key ...]

示例:

在这里插入图片描述

SDIFFSTORE:将差集结果存入新集合destination中
SDIFFSTORE destination key [key ...]

示例:

在这里插入图片描述

Zset

介绍

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

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

在这里插入图片描述

常用命令

基础命令

ZADD:往有序集合key中加入带分值元素
ZADD key score member [[score member]...]   

示例:

在这里插入图片描述

在这里插入图片描述

ZREM:往有序集合key中删除元素
ZREM key member [member...]  

示例:

在这里插入图片描述

ZSCORE:返回有序集合key中元素member的分值
ZSCORE key member

示例:

在这里插入图片描述

ZRANK:获取指定有序集合key中元素member的排名
ZRANK key member

示例:

在这里插入图片描述

ZCARD:返回有序集合key中元素个数
ZCARD key 

示例:

在这里插入图片描述

ZCOUNT:统计score值在给定范围内的所有元素个数
ZCOUNT key min max

示例:

在这里插入图片描述

ZINCRBY:为有序集合key中元素member的分值加上increment
ZINCRBY key increment member

示例:

在这里插入图片描述

ZRANGE:正序获取有序集合key从start下标到stop下标的元素
ZRANGE key start stop [WITHSCORES]

示例:

在这里插入图片描述

ZREVRANGE:倒序获取有序集合key从start下标到stop下标的元素
ZREVRANGE key start stop [WITHSCORES]

示例:

在这里插入图片描述

ZRANGEBYSCORE:返回有序集合中指定分数区间内的成员,分数由低到高排序。
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

示例:

在这里插入图片描述

运算命令

ZDIFF:差集,ZINTER:交集,ZUNION:并集,与Set相同

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值