Redis:二、Redis常见命令

news2024/10/8 22:10:54

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/135988.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JAVA进阶】常用API

📃个人主页:个人主页 🔥系列专栏:JAVASE基础 目录 1.API概述 2.Object类 3.Objects 4.StringBuilder 5.日期与时间 Date 类 SimpleDateFormat Calendar 6.JDK8新增日期类 1.API概述 什么是API? API(Application Program…

Kettle(二)数据同步、迁移(基础版)

目录 1.配置源数据库A 1.1 文件-->数据库连接 1.2 配置数据库,选择自己的数据库并配置。 1.3 数据库配置可能会报错,原因是缺少数据库驱动 2.配置目标数据库(与源数据库一致) 3.数据迁移(举例) 3.…

IntelliJ IDEA的代码搁置功能

使用场景 当遇到需要临时修改的 bug,但当前正在开发的内容不能删掉,这个时候就需要把当前已经开发的代码另外保存下来(即保存现场),当把 bug 改完后再恢复,来回归之前的开发工作,IntelliJ IDEA…

数据可视化系列-02各类图表的综合使用介绍及实践

文章目录3.各类图表的综合使用介绍及实践3.1了解数据功能图1、可视化中的数据2、基于数据的研究3、数据的可视化组件4、可视化图表的作用、制作流程和类型3.2北极星指标展示1、指标类知识回顾:指标类简介、指标类主要场景2、指标类图表:指标看板、指标趋…

Win11的两个实用技巧系列之更新进度条不动的三种解决方法、重置失败未做更改五种解决方法

目录 Win11更新进度条不动怎么办?Win11更新进度条不动的三种解决方法 方法一: 方法二: 方法三: Win11重置失败未做更改怎么办?Win11重置失败未做更改五种解决方法 方法一、重新启用Windows RE 方法二、使用SFC修复系统文件 方法三、从恢复…

java忽略证书验证(兼容http,https)

概述 日常上传、下载文件时可能有不需要验证证书的场景,比如证书过期、不正确之类的也可以正常的上传下载文件。 Java中使用https协议时,是通过X.509证书进行校验的。 首先我们先了解下什么是X.509证书。 什么是X.509证书 X.509是公钥基础设施&#x…

k8s部署prometheus

k8s部署prometheus 1.下载prometheus文件 cd /soft/src git clone -b release-0.5 --single-branch https://github.com/coreos/kube-prometheus.git2.部署 这里部署之前最好改一下alertmanager-alertmanager.yaml这个文件,将replicas:改成2或者3,当为…

Spark 3.0 - 17 ML PCA 主成分分析理论与实战

目录 一.引言 二.PCA 理论 1.主成分分析定义 2.数学基础 A.数据归一化 B.协方差矩阵计算 C.计算协方差矩阵的特征向量和特征值,以识别主成分 D.构造特征向量矩阵 E.沿着主成分轴重新计算数据 三.PCA 实战 1.数据准备 2.PCA 初始化 3.数据降维 四.总结 …

举一反三-自建zabbix监控php

php-fpm监控需要通过nginx服务。因此需要开启相关配置。 php-fpm如果是yum安装的,那么在/etc/php-fpm.d/www.config中编辑如下选项: pm.status_path /php_status 保存并退出编辑。重启php-fpm服务。 接下来编辑nginx配置项。编辑如下: l…

Linux下cal命令C/C++实现(显示日历信息)

大多数用户自然会将计算机上的日历视为GUI应用程序,或直接从桌面显示的东西。但也可以在Linux中使用cal命令通过命令行终端查看日历。 如果您通常使用Linux上的桌面环境,或者您来自Windows或MacOS操作系统,可能会认为这是一种过于复杂的日历…

RFID技术在固定资产管理中的作用

固定资产因具有数量庞大、分布广、变动频繁等特点造成管理难度较大,一直成为企业管理的一大重点。固定资产管理包括资产的新增、调拨、闲置、报废、维修、盘点等操作,让投入使用到报废退出使用的全过程进行全面的信息化管控。以往固定资产的一直由于管理…

AlexNet详解

入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 ✨完整代码在我的github上,有需要的朋友可以康康✨ GitHub - tt-s-t/Deep-Learning: Store some of your own in-depth …

Python学习笔记——起步

Python 2 和 Python 3的区别 一、维护及版本更新不同 官方通知python2 2020开始已不再维护,python3的版本还在不断迭代更新 。 因为python2官方不再维护且python3的广泛使用,很多新的算法包、AI包等其他功能模块包都是基于python3开发的,p…

LaTeX使用方法

1.工具 1.生成表格:LaTeX Tables Editor 2.生成公式:Online LaTeX Equation Editor 、texmath demo、在线LaTeX公式编辑器-编辑器 2.技巧 1.插入图片: \begin{figure}[t] %t表示图片置顶,h表示指定位置,b表示置底…

条件分支if和else的使用详解

顺序结构没什么好讲的,就是从上到下的写代码,所以接下来,壹哥就直接带各位来学习分支结构里的条件分支。我们在前面说过,分支结构,或者叫做条件分支,其实有两种情况。一种是if...else...类型的条件分支&…

vue组件通信6种方式总结(常问知识点)

前言 在Vue组件库开发过程中,Vue组件之间的通信一直是一个重要的话题,虽然官方推出的 Vuex 状态管理方案可以很好的解决组件之间的通信问题,但是在组件库内部使用 Vuex 往往会比较重,本文将系统的罗列出几种不使用 Vuex&#xff…

X.509证书详解

概述 X.509是公钥基础设施(PKI)的标准格式。X.509证书就是基于国际电信联盟(ITU)制定的X.509标准的数字证书。X.509证书主要用于识别互联网通信和计算机网络中的身份,保护数据传输安全。X.509证书无处不在&#xff0c…

Spring之底层架构核心概念-过滤器

文章目录1.excludeFilters:排除过滤器2.includeFilters:包含过滤器3.问题:spring为什么能通过是否有Component注解来判断是否需要去注册bean呢?3.1 看源码3.2 原因4.总结1.excludeFilters:排除过滤器 用excludeFilters排除UserService 这个类后&#xf…

nature级别图表:单细胞转录组细胞比例统计可视化函数

单细胞转录组细胞比例: 关于单细胞比例的计算和作图我们之前出过3期,单细胞比例的展示是很多单细胞文章必不可少的内容:跟着Cell学单细胞转录组分析(六):细胞比例计算及可视化 相信跟着学习的小伙伴已经掌握了。最近学习一篇《nature medici…

JavaScript 数组-概念,创建数组,遍历数组,新增元素

JavaScript 数组-概念,创建数组,遍历数组,新增元素 目录JavaScript 数组-概念,创建数组,遍历数组,新增元素1. 数组的概念2. 创建数组2.1 数组的创建方式2.2 利用 new 创建数组2.3 利用数组字面量创建数组2.…