Redis:二、Redis常见命令

本文介绍了Redis的基本数据结构,包括String、哈希、List、Set和Sorted-Set,以及相应的操作命令,如赋值、取值、删除、增减等。还探讨了如何通过key的命名策略来区分不同类型的键值对。
摘要由CSDN通过智能技术生成

2. Redis常见命令

2.1 Redis数据结构介绍

Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样
在这里插入图片描述

Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网( http://www.redis.cn/commands.html )可以查看到不同的命令:
在这里插入图片描述

也可以使用help命令查询命令:
在这里插入图片描述

思考:

Redis没有类似MySQL中的Table的概念,我们该如何区分不同类型的key呢?
例如,需要存储用户、商品信息到redis,有一个用户id是1,有一个商品id恰好也是1

key的结构

Redis的key允许有多个单词形成层级结构,多个单词之间用’:'隔开,格式如下:

项目名:业务名:类型:id

这个格式并非固定,也可以根据自己的需求来删除或添加词条。
例如我们的项目名称叫 shop,有user和order两种不同类型的数据,我们可以这样定义key:

  • user相关的key:shop:user:1
  • order相关的key:shop:order:1

2.2 Redis的数据结构之字符串

​ String 是redis最基本的数据结构,你可以理解成与Memcached一模一样的类型,一个key对应一个value。String类型是二进制安全的,意思就是redis的String可以包含任何数据。比如jpg图片或者序列化的对象,String类型是Redis最基本的数据结构,String类型的值最大能存储512MB。

存储String常用命令:

1) 赋值

使用set key value 的语法

例如:

在这里插入图片描述

  • SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行

  • SETEX:添加一个String类型的键值对,并且指定有效期

2) 取值

使用get key方式获取值

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

3) 删除

使用del key方式删除

例如:

在这里插入图片描述

也可以一次性删除多个key

在这里插入图片描述

4) 数值增减

  • incr 自增 默认没有定义的key,对应的value默认为0 加1
    在这里插入图片描述

​ 如果key对应的value不是一个整数,使用incr会报错:
在这里插入图片描述

  • decr 自减 与自增很相似 减1
    在这里插入图片描述

5) 扩展命令

  • incrby 指定增量值

在这里插入图片描述

  • decrby 指定减量的值

在这里插入图片描述

  • append 追加字符串,如果没有定义,直接赋值

在这里插入图片描述

  • keys *查看redis的所有的key
    在这里插入图片描述

2.3 Redis的数据结构之哈希

存储的value是一个hash结构,而hash结构就是一个String key和String value组成的map容器。Hash特别适合用于存储对象, Redis中每个hash可以存储232-1键值对(4294967295)。

String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便:

在这里插入图片描述

Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD:

在这里插入图片描述

​ 存储Hash常用的命令:

  1. 赋值
  • 存储单个字段 hset key fieldname fieldValue

在这里插入图片描述

如上代码,表示往redis存储了一个user, user的name的属性对应的值为zhangsan

  • 存储多个字段hmset key fieldname1 fieldValue1 fieldname2 fieldValue2…
    在这里插入图片描述

HSETNX:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行

  1. 取值
  • 获取指定key的指定的属性的值 hget key fieldName
    在这里插入图片描述

  • 获取指定key的多个属性值 hmget key fieldName1 fieldName2…
    在这里插入图片描述

  • 获取指定key的所有属性名和属性值 hgetall key

在这里插入图片描述

  1. 删除
  • 删除指定key的一个属性或者多个属性 hdel key fieldName1 [fieldName2 …]
    在这里插入图片描述
  1. 增加数字
  • hincrby 给某个属性值为整数的属性增加 hincrby key fieldname 增量

在这里插入图片描述

  1. 判断key是否存在
  • 判断某个key对应的属性是否存在, 1表示存在,0表示不存在 hexists key fieldname
    在这里插入图片描述
  1. 获取hash属性的个数
  • 获取hash的属性的个数: hlen key
    在这里插入图片描述
  1. 获取hash所有属性
  • 获取所有属性的属性名 hkeys key

在这里插入图片描述

  • 获取所有的属性的值 hvals key
    在这里插入图片描述

2.4 Redis的数据结构之List

​ Redis列表是简单的字符串列表,插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边),一个列表最多可以包含2的32方 – 1个元素。

常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表等

在这里插入图片描述

存储List常用的命令

  1. 两端添加
  • 从左边开始添加 lpush key value1 value2 …

在这里插入图片描述

  • 获取指定范围的集合元素 lrange key 开始下标 结束下标 注意:-1表示最后下标

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YeeJQk38-1672556851945)(assets/wps25.jpg)]

  • 从右端开始添加元素(我们比较习惯这种方式) rpush key value1 value2…

在这里插入图片描述

  • 往list集合头部插入元素 lpushx key value
    在这里插入图片描述

  • 往list集合尾部插入元素 rpushx key value

在这里插入图片描述

  1. 两端弹出
  • 从list左侧(头部)弹出集合元素 lpop key 删除头部元素

在这里插入图片描述

  • 从list 右侧弹出集合元素 rpop key 删除尾部元素

在这里插入图片描述

  • 查看list集合的元素的个数 llen key

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MzMY4tj3-1672556851950)(assets/wps31.jpg)]

  • 从list集合的指定的方向删除指定个数的指定元素 lrem key count value

注意: count 表示删除多少个 如果为正数 表示从左边开始,负数表示从右边开始, 0表示删除所有

从左侧删除2个3:

在这里插入图片描述

从list右侧删除2个2

在这里插入图片描述

删除所有的1

在这里插入图片描述

  • 修改指定下标上的值 lset key index value

注意: index 表示下标,从0开始

把下标为2的元素修改为hello

在这里插入图片描述

  • 在指定位置插入指定的元素: linsert key before/after value1 value2

注意: before 表示在value1之前插入value2

after 表示在value1之后插入value2

在hello元素之前插入 me
在这里插入图片描述

在hello之后插入world

在这里插入图片描述

  • 把某个集合的尾部元素弹出并插入到另外一个集合的头部

rpoplpush key1 key2

​ 比如把l1集合的尾部元素弹出,并插入到l2集合的头部

在这里插入图片描述

2.5 Redis的数据结构之Set

Set与list类型不同的是,set集合中不允许出现重复的元素,set集合最大可以存储2的32方-1个元素. Set集合使用的场景, 就是在跟踪一些唯一数据.

Set集合常用的方法:

  • 添加set元素 sadd key value1 value2 ….

添加一个set1的集合,该集合包含a,b,c 3个元素

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7HRYowRw-1672556851958)(assets/wps39.jpg)]

  • 查看set集合的元素 smembers key

查看set1集合的元素
在这里插入图片描述

  • 删除set集合中的元素 srem key value1 value2 …

删除set1集合的a元素

在这里插入图片描述

  • 判断set集合中某个元素是否存在, 返回1表示存在, 返回0表示不存在 sismember key value

判断set1集合中是否包含b
在这里插入图片描述

  • 计算多个集合的差集 sdiff key1 key2 …

注意:上述命令表示,统计出元素在key1存在,但是不存在key2的元素

​ 统计在set2存在,但是不存在与set3的元素:
在这里插入图片描述

统计在set3存在,但是不存在与set2的元素:

在这里插入图片描述

注意: sdiff 集合的位置不一样,得到的结果也不一样.

  • 计算多个集合的交集, sinter key1 key2 …

统计set2,set3的交集(即存在与set2,又存在与set3的元素)
在这里插入图片描述

  • 计算多个集合的并集 sunion key1 key2 …

统计set2和set3集合的并集
在这里插入图片描述

  • 计算集合的元素的个数: scard key

统计set2集合的元素个数:
在这里插入图片描述

  • 把多个集合的差集存储到一个新的集合中 sdiffstore 新集合名 集合1 集合2…

把set2,set3的差集保存到n1集合:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OYOOKo6f-1672556851986)(assets/wps48.jpg)]

  • 把多个集合的交集结果存储到新集合 sinterstore 新集合名 集合1 集合2….

把set2,set3集合的交集保存到n2集合中:

在这里插入图片描述

  • 把多个集合的并集结果存储到新集合 sunionstore 新集合名 集合1 集合2 …

把set2和set3的并集的结果存储到n3集合中:

在这里插入图片描述

2.6 Redis的数据结构之sorted-set/ZSet

Sorted-Set与Set的区别在于:Sorted-Set中的成员在集合中的位置是有序的. Sorted-Set集合使用的场景是:大型在线游戏积分排行榜.

  • 添加元素,包括评分和值, zadd key score1 value1 score2 value2…

添加集合sort1,该集合的元素是a,b,c.对应的评分为 5,4,6

在这里插入图片描述

注意:

  1. sorted-set集合的默认排序是按照评分的升序排序

  2. 如果我们继续给集合添加元素,如果集合的元素已经存在,则覆盖,如果元素不存在,那这个元素就添加进去.

在这里插入图片描述

  • 查找元素: zrange 开始下标 结束下标

注意: -1表示最后一个 默认是评分的升序排序

查找sort1的所有元素:

在这里插入图片描述

如果想把元素的评分也打印出来, 则在后面添加withscores

在这里插入图片描述

  • 删除元素 zrem key value1 value2 ….

删除sort1集合中的b元素

在这里插入图片描述

  • 查看集合的元素个数 zcard key

查看sort1集合的元素个数:
在这里插入图片描述

  • 降序打印集合元素

zrevrange key 开始下标 结束位置 [widthscores]

把sort1集合的元素降序输出:

在这里插入图片描述

  • 根据具体评分范围来删除元素

​ zremrangebyscore key min max

**注意:** min 表示最小评分, max表示最大评分, 包括最小和最大评分

​ 删除sort1集合评分在8-12之间的所有元素:

在这里插入图片描述

  • 根据评分范围来查找元素

zrangebyscore key min max [withscores] [limit 开始 个数]

注意:

  1. withscores 表示输出评分

  2. limit 用于分页 序号从0开始

​ 查询sort1集合中评分在 4-10之间的元素:

在这里插入图片描述

​ 查询sort1集合中评分在 4-10之间的元素:并且输出评分:

​        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lGMKsW2O-1672556852028)(assets/wps60.jpg)]

​ 查询sort1集合中评分在4-10之间的元素,并且进行分页
在这里插入图片描述

  • 给指定的元素加分 zincrby key score value

给sort1集合的c元素加4分

在这里插入图片描述

  • 查找指定评分范围的元素个数: zcount key min max

查找sort1集合中评分在4-10之间的元素个数:
在这里插入图片描述

2.7 redis keys的通用操作

  • 显示所有的key keys *

在这里插入图片描述

  • 查找以指定字符开头 keys 指定字符串*

查找以s开头的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qo8YpVg4-1672556852046)(assets/wps65.jpg)]

  • 查找以指定字符串开头,后面紧跟任意一位字符 keys 指定字符串?

查找以n开头,后面紧跟一位任意字符:
在这里插入图片描述

  • 删除 指定的key del key1 key2…

删除n1 n2 n3

在这里插入图片描述

  • 判断key是否存在 1表示存在 0表示不存在 exists key1 key2…

判断n1是否存在,判断set1是否存在:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s1hSDfvC-1672556852057)(assets/wps68.jpg)]

  • 对key重命名: rename oldKey newKey

把set1的名字设置为set4

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ls4PtbMs-1672556852058)(assets/wps69.jpg)]

  • 设置key的有效时间 expire key time

注意: 以秒作为单位

设置set4 的有效时间为10s
在这里插入图片描述

  • 查看key的剩余有效时间 ttl key
    在这里插入图片描述

注意: -2表示该key不存在

  • 显示key的类型 type key

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aJrcc9jh-1672556852069)(assets/wps72.jpg)]

  • 删除redis中所有的key flushall

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oL84q1Nh-1672556852075)(assets/wps73.jpg)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值