Redis 命令—— 超详细操作演示!!!

news2024/12/27 12:47:23

内存数据库 Redis7

    • 三、Redis 命令
      • 3.1 Redis 基本命令
      • 3.2 Key 操作命令
      • 3.3 String 型 Value 操作命令
      • 3.4 Hash 型 Value 操作命令
      • 3.5 List 型 Value 操作命令
      • 3.6 Set 型 Value 操作命令
      • 3.7 有序Set 型 Value 操作命令
      • 3.8 benchmark 测试工具
      • 3.9 简单动态字符串SDS
      • 3.10 集合的底层实现原理
      • 3.11 BitMap 操作命令
      • 3.12 HyperLogLog 操作命令
      • 3.13 Geospatial 操作命令
      • 3.14 发布/订阅命令
      • 3.15 Redis 事务
    • 四、Redis 持久化
    • 五、Redis 主从集群
    • 六、Redis 分布式系统
    • 七、Redis 缓存
    • 八、Lua脚本详解
    • 九、分布式锁

数据库系列文章:

关系型数据库:

  • MySQL —— 基础语法大全
  • MySQL —— 进阶


非关系型数据库:

  • Redis 的安装与配置

三、Redis 命令

Redis 根据命令所操作对象的不同,可以分为三大类:对 Redis 进行基础性操作的命令,对 Key 的操作命令,对 Value 的操作命令。

3.1 Redis 基本命令

⭐️ 3.1.1、 心跳命令 ping

  • 键入 ping 命令,会看到 PONG 响应,则说明该客户端与 Redis 的连接是正常的。该命令亦称为 心跳命令

在这里插入图片描述

⭐️ 3.1.2、读写键值命令

  • set key value 会将指定 key value 写入到 DB 。 get key 则会读取指定 keyvalue 值。关于更多 setget 命令格式,后面会详细学习。

在这里插入图片描述

⭐️ 3.1.3、 DB切换 select

  • Redis 默认有 16 个数据库。这个在 Redis Desktop Manager (RDM)图形客户端中可以直观地看到。

在这里插入图片描述

  • 默认使用的是 0 号 DB ,可以通过 select db 索引来切换 DB 。
    • 例如,如下命令会 select 3 切换到 DB3 ,并会将 age-23 写入到 DB3 中。

在这里插入图片描述

  • 并且 这个结果在 RDM 中是可以直观地看到的。

在这里插入图片描述

⭐️ 3.1.4、 查看 key 数量 dbsize

  • dbsize 命令可以查看 当前数据库key数量

在这里插入图片描述

  • 从以上查看情况看, DB0 中有 2 个 key; DB1 中没有 key; DB3 中有 1 个 key

⭐️ 3.1.5、 删除当前库中数据 flushdb

  • flushdb 命令仅仅 删除的是当前数据库中的数据,不影响其它库。

在这里插入图片描述

⭐️ 3.1.6、 删除所有库中数据命令 flushall

  • flushall 命令可以删除所有库中的所有数据。所以该命令的使用一定要慎重。

在这里插入图片描述

⭐️ 3.1.7、 退出客户端命令

  • 使用 exitquit 命令均可退出 Redis 命令行客户端。

在这里插入图片描述

3.2 Key 操作命令

Redis 中 存储的数据整体 是一个 Map ,其 keyString 类型,而 value 则可以是 StringHash 表ListSet 等类型。

⭐️ 3.2.1、keys

  • 格式KEYS pattern
  • 功能查找所有符合给定模式 patternkeypattern正则表达式
  • 说明KEYS 的速度非常快,但在一个大的数据库中使用它可能会 阻塞 当前服务器的服务 。 所以生产环境中一般不使用该命令,而使用 scan 命令代替

⭐️ 3.2.2、exists

  • 格式EXISTS key
  • 功能检查给定 key 是否存在
  • 说明:若 key 存在,返回 1 ,否则返回 0

⭐️ 3.2.3、del

  • 格式DEL key [key ...]
  • 功能删除给定的一个或多个 key 。不存在的 key 会被忽略。
  • 说明: 返回 被删除 key 的数量。

⭐️ 3.2.4、rename

  • 格式RENAME key newkey
  • 功能:将 key 改名为 newkey
  • 说明:当 keynewkey 相同,或者 key 不存在时,返回一个错误。当 newkey 已经存在时, RENAME 命令将覆盖旧值。改名成功时提示 OK ,失败时候返回一个错误。

⭐️ 3.2.5、move

  • 格式MOVE key db
  • 功能:将当前数据库key 移动给定的数据库 db 当中。
  • 说明: 如果 当前数据库(源数据库) 和 给定数据库(目标数据库) 有相同名字的给定 key,或者 key不存在于 当前数据库,那么 MOVE 没有任何效果。 移动成功返回 1 ,失败则返回 0

⭐️ 3.2.6、type

  • 格式TYPE key
  • 功能:返回 key 所储存的 值的类型
  • 说明: 返回值有以下六种
    • none (key 不存在)
    • string 字符串
    • list 列表
    • set 集合
    • zset 有序集
    • hash 哈希表

⭐️ 3.2.7、expire 与 pexpire

  • 格式EXPIRE key seconds
  • 功能:为给定 key 设置生存时间 。 当 key 过期时 (生存时间为 0),它会被自动删除
    • expire 的时间单位为 pexpire 的时间单位为 毫秒
    • 在 Redis 中,带有生存时间的 key 被称为 "易失的” ( volatile )。
  • 说明: 生存时间 设置成功返回 1 。 若 key 不存在 时 返回 0 。 rename 操作不会改变 key 的生存时间。

⭐️ 3.2.8、ttl 与 pttl

  • 格式TTL key
  • 功能TTL, time to live ,返回给定 key剩余生存时间
  • 说明:其返回值存在三种可能:
    • key 不存在时,返回 -2
    • key 存在但没有设置剩余生存时间时,返回 1
    • 否则,返回 key 的剩余生存时间。 ttl 命令返回的时间单位为 ,而 pttl 命令返回的时间单位为 毫秒

⭐️ 3.2.9、persist

  • 格式PERSIST key
  • 功能:去除给定 key 的生存时间,将这个 key 从 “易失的” 转换成 “持久的” 。
  • 说明: 当生存时间移除成功时,返回 1 ;若 key 不存在或 key 没有设置生存时间, 则返回 0 。

⭐️ 3.2.10、randomkey

  • 格式RANDOMKEY
  • 功能:从当前数据库中随机返回 不删除 一个 key
  • 说明: 当数据库不为空时,返回一个 key 。当数据库为空时,返回 nil

⭐️ 3.2.11、scan

  • 格式SCAN cursor [MATCH pattern] [COUNT count] [TYPE
  • 功能:用于迭代数据库中的 数据库键。 其各个选项的意义为:
    • cursor :本次迭代开始的 游标
    • pattern :本次迭代要 匹配的 key 的模式
    • count :本次迭代要从数据集里返回多少元素,默认值为 10
    • type 本次迭代要返回的 value 的类型,默认为所有类型

SCAN 命令是一个基于游标 cursor迭代器

  • SCAN 命令每次被调用之后,都会向用户返回一个 包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标,而第二个元素则是一个数组, 这个数组中包含了所有被迭代的元素。 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数,以此来延续之前的迭代程。
  • SCAN 命令的游标参数被设置为 0 时,服务器将开始一次新的迭代。 如果新游标返回 0 表示迭代已结束。
  • 说明: 使用间断的负数超出范围 或者 其他非正常 的游标来执行 增量式迭代 b不会造成服务器崩溃。

当数据量很大时,count 的数量的指定可能会不起作用, Redis 会自动调整每次的遍历数目。 由于 scan 命令 每次执行都只会返回少量元素,所以该命令可以用于生产环境,而不会出现像 KEYS 命令带来的服务器阻塞问题。

增量式迭代命令所使用的算法只保证在数据集的大小有界的情况下迭代才会停止,换句话说,如果被迭代数据集的大小不断地增长的话,增量式迭代命令可能永远也无法完成一次完整迭代。 即 当一个数据集不断地变大时,想要访问这个数据集中 的所有元素就需要做越来越多的工作, 能否结束一个迭代取决于用户执行迭代的速度是否比数据集增长的速度更快。

相关命令:另外还有 3 个 scan 命令用于对三种类型的 value 进行遍历。

  • hscan :属于 HashValue 操作命令集合,用于遍历当前 db 中指定 Hash 表 的所有 field-value 对。
  • sscan :属于 SetValue 操作命令集合,用于 遍历当前 db 中指定 set 集合 的所有元素
  • zscan :属于 ZSetValue 操作命令集合,用于 遍历当前 db 中指定 有序集合 的所有元素(数值元素值

3.3 String 型 Value 操作命令

Redis 存储数据的 Value 可以是 一个 String 类型数据。 String 类型的 Value 是 Redis 中最基本,最常见的类型。 String 类型的 Value 中可以存放任意数据, 包括 数值型,甚至是二进制图片音频视频序列化对象等。一个 String 类型的 Value 最大是 512M 大小。

⭐️ 3.3.1、set

  • 格式SET key value [EX seconds | PX milliseconds] [NX|
  • 功能SET 除了可以直接将 key 的值设为 value 外,还可以指定一些参数
    • EX seconds :为当前 key 设置过期时间,单位 。等价于 SETEX 命令。
    • PX milliseconds :为当前 key 设置过期时间,单位 毫秒。等价于 PSETEX 命令。
    • NX :指定的 key 不存在才会设置成功,用于添加指定key 。等价于 SETNX 命令。
    • XX :指定的 key 必须存在才会设置成功,用于更新指定 keyvalue
  • 说明:如果 value 字符串中带有空格,则该字符串需要使用双引号或单引号引起来,否
    则会认为 set 命令的参数数量不正确,报错。

⭐️ 3.3.2、setex 与 psetex

  • 格式SETEX /PSETEX key seconds value
  • 功能set expire ,其不仅为 key 指定了 value ,还为其设置了生存时间setex 的单位为psetex 的单位为毫秒
  • 说明:如果 key 已经存在, 则覆写旧值。该命令类似于以下两个命令,不同之处是,SETEX 是一个原子性操作关联值设置生存时间两个动作会在同一时间内完成,该命
    令在 Redis 用作缓存时,非常实用。
    • SET key value
    • EXPIRE key seconds #设置生存时间

⭐️ 3.3.3、setnx

  • 格式SETNX key value
  • 功能SET if Not eXists ,将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key已经存在,则 SETNX 不做任何动作。 成功,返回 1 ,否则 ,返回 0 。
  • 说明:该命令等价于 set key value nx

⭐️ 3.3.4、getset

  • 格式GETSET key value
  • 功能:将给定 key 的值设为 value ,并返回 key旧值
  • 说明:当 key 存在但不是字符串类型时,返回一个错误; 当 key 不存在时,返回 nil

⭐️ 3.3.5、mset 与 msetnx

  • 格式MSET /MSETNX key value [key value ...]
  • 功能:同时设置一个或多个 key-value 对。
  • 说明:如果某个给定 key 已经存在,那么 MSET 会用 新值覆盖原来的旧值,如果这不是你所希望的效果,请考虑使用 MSETNX 命令:它只会在所有给定 key 都不存在的情况下进行设置操作。 MSET/MSETNX是一个原子性 (atomic) 操作,所有给定 key 都会在同一时间内被设置,某些给定 key 被更新而另一些给定 key 没有改变的情况不可能发生。该命令永不失败。

⭐️ 3.3.6、mget

  • 格式MGET key [key ...]
  • 功能:返回所有 (一个或多个) 给定 key 的值。
  • 说明:说明:如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。因此,该命令永不失败。

⭐️ 3.3.7、append

  • 格式APPEND key value
  • 功能:如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。
  • 说明:追加 value 之后, key 中字符串的长度。

⭐️ 3.3.8、incr 与 decr

  • 格式INCR keyDECR key
  • 功能increment自动递增。 将 key 中存储的数字值增一decrement自动递减。将 key 中存储的数字值减一
  • 说明:如果 key 不存在,那么 key 的值会先被初始化0 ,然后再执行 增一/减一 操作。如果值不能表示为数字,那么返回一个错误提示。如果执行正确,则返回增一/减一 后的值。

⭐️ 3.3.9、incrby 与 decrby

  • 格式INCRBY key incrementDECRBY key decrement
  • 功能:将 key 中存储的数字值 增加/减少 指定的数值,这个数值只能是整数,可以是负数,但不能是小数。
  • 说明:如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 增/减 操作。如果值不能表示为数字,那么返回一个错误提示。如果执行正确,则返回 增/减 后的

⭐️ 3.3.10、incrbyfloat

  • 格式INCRBYFLOAT key increment
  • 功能:为 key 中所储存的值加上 浮点数增量 increment
  • 说明:与之前的说明相同。没有 decrbyfloat 命令,但 increment负数可以实现减操作效果。

⭐️ 3.3.11、strlen

  • 格式STRLEN key
  • 功能:返回 key 所储存的字符串值的长度。
  • 说明:当 key 储存的不是字符串值时,返回一个错误,当 key 不存在时,返回 0

⭐️ 3.3.12、getrange

  • 格式GETRANGE key start end
  • 功能:返回 key 中字符串值的 子字符串,字符串的截取范围由 startend 两个偏移量决定 包括 startend 在内
  • 说明end 必须要比 start。支持 负数偏移量 表示从字符串最后开始计数, -1 表示最后一个字符, -2 表示倒数第二个,以此类推。

⭐️ 3.3.13、setrange

  • 格式SETRANGE key offset value
  • 功能:用 value 参数替换给定 key 所储存的字符串值 str ,从偏移量 offset 开始。
  • 说明:当 offset 值大于 str 长度时,中间使用零字节 \x00 填充,即 0000 0000 字节填充;对于 不存在的 key 当作空串处理。

⭐️ 3.3.14、位运算命令
⭐️ 3.3.15、典型应用场景

3.4 Hash 型 Value 操作命令

⭐️ 3.4.1、hset
⭐️ 3.4.2、hget
⭐️ 3.4.3、hmset
⭐️ 3.4.4、hmget
⭐️ 3.4.5、hgetall

⭐️ 3.4.6、hsetnx
⭐️ 3.4.7、hdel
⭐️ 3.4.8、hexits

⭐️ 3.4.9、hincrby 与 hincrbyfloat
⭐️ 3.4.10、hkeys 与 hvals
⭐️ 3.4.11、hlen
⭐️ 3.4.12、hstrlen
⭐️ 3.4.13、应用场景

3.5 List 型 Value 操作命令

⭐️ 3.5.1、lpush/rpush
⭐️ 3.5.2、llen
⭐️ 3.5.3、lindex
⭐️ 3.5.4、lset
⭐️ 3.5.5、lrange
⭐️ 3.5.6、lpushx 与 rpushx
⭐️ 3.5.7、linsert
⭐️ 3.5.8、lpop / rpop
⭐️ 3.5.9、blpop / brpop
⭐️ 3.5.10、rpoplpush
⭐️ 3.5.11、brpoplpush
⭐️ 3.5.12、lrem
⭐️ 3.5.13、itrim
⭐️ 3.5.14、应用场景

3.6 Set 型 Value 操作命令

⭐️ 3.5.、

3.7 有序Set 型 Value 操作命令

⭐️ 3.5.、

3.8 benchmark 测试工具

3.9 简单动态字符串SDS

3.10 集合的底层实现原理

3.11 BitMap 操作命令

3.12 HyperLogLog 操作命令

3.13 Geospatial 操作命令

3.14 发布/订阅命令

3.15 Redis 事务

🚀🚀🚀 Redis 命令 快速食用:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------->


四、Redis 持久化

🚀🚀🚀 Redis 持久化 快速食用:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------->


五、Redis 主从集群

六、Redis 分布式系统

七、Redis 缓存

八、Lua脚本详解

九、分布式锁

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

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

相关文章

Whisper 整体架构图

Attention 注意力机制模块,兼容自注意力和交叉注意力。 AttentionBlock Transformer 模块,包含一个自注意力,一个交叉注意力(可选)和一个 MLP 模块。 AudioEncoderTextDecoder 音频编码器和文本解码器。编码器的 Tr…

【Unity地编】地形系统搭建入门详解

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:UI_…

【Bug】8086汇编学习

文章目录 随笔Bug1、masm编译报错:Illegal use of register2、debug中使用段前缀3、[idata]在编译器中的处理4、push立即数报错5、报错:improper operand type6、程序莫名跳转到未知位置 (doing)7、DOSBox失去响应8、程序运行显示乱码9、程序运行导致DOS…

Vue中的mixins是什么?

在Vue中,Mixins(混入)是一种可重用的代码块,用于在多个组件之间共享逻辑和功能。通过使用Mixins,可以将一组属性、方法和生命周期钩子等混合到多个组件中,从而实现代码的复用和组件之间的共享功能。 使用Mixins有以下几个步骤: 1:创建Mixins: 创建一个包含共享代码的…

c#中使用Task.WhenAll

🚀简介 Task.WhenAll用于等待所有提供的Task对象完成执行。这个方法返回一个新的Task,这个Task将在所有提供的Task完成后完成。如果任何一个Task失败,Task.WhenAll返回的Task也将以异常状态完成。这个方法非常适合在你需要并行执行多个操作&…

(二)docker:建立oracle数据库mount startup

这章其实我想试一下startup部分做mount,因为前一章在建完数据库容器后,需要手动创建用户,授权,建表等,好像正好这部分可以放到startup里,在创建容器时直接做好;因为setup部分我实在没想出来能做…

ES6 Promise 详解

目录 一、Promise基本介绍 二、Promise实现多次请求 1.传统Ajax方式实现多次请求 : 1.1 json数据准备 1.2 JQuery操作Ajax 2.使用ES6新特性Promise方式 : 三、Promise代码重排优化 1.问题分析 : 2.代码优化 : 2.1 数据准备 2.2 代码重排 一、Promise基本介绍 (1) Ajax方…

四川农业大学就业指南←缺失的就业指导课

推荐 125页就业指南, 包含就业去向、就业政策介绍, 也有毕业生常见问题, 就业协议与劳动合同的阐释, 帮助毕业生系统梳理庞杂的各类就业信息, 人文温度冲淡就业惨淡的灰冷阴霾。 有这样一群人,在2023&…

联邦学习的梯度重构

梯度泄露的攻击方法&#xff1a;深度泄露梯度&#xff08;DLG&#xff09;——>在高度压缩的场景下是失效的 原因&#xff1a;梯度压缩&#xff08;可减小通信开销&#xff09;——>存在信息损失<——从而DLG方法效果有限 但是这本身存在的信息损失怎么解决呢&#x…

前端刷题 | 网站

W3Cschoolhttps://www.w3cschool.cn/exam 计算机方面的知识涵盖较全 牛客网 应届生招聘题库&#xff0c;校招实习笔试面试真题 力扣 前端方面的题目较为基础&#xff0c;基本不考复杂算法题 稀土掘金https://juejin.cn/search?query%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95&a…

基因表达分析聚类分析

基因表达分析聚类&分析 1. Introduction to gene expression analysis Technology: microarrays vs. RNAseq. Resulting data matricesSupervised (Clustering) vs. unsupervised (classification) learning 微阵列技术&#xff1a; 制备DNA探针阵列并进行互补性杂交。 …

(2)Nmap

笔记目录 渗透测试工具(1)wireshark 渗透测试工具(2)Nmap渗透测试工具(3)Burpsuite 1.工具简介 (1)定义 ①功能 网络扫描和嗅探工具包&#xff0c;三个主要基本功能&#xff1a; 探测一组主机是否在线 扫描主机端口、嗅探所提供的网络服务 推断出主机所用的操作系统 ②namp …

配置Linux

首先安装VMware&#xff1a; 安装说明&#xff1a;&#xff08;含许可证的key&#xff09; https://mp.weixin.qq.com/s/XE-BmeKHlhfiRA1bkNHTtg 给大家提供了VMware Workstation Pro16&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1q8VE3TkPzDnM3u9bkTdA_g 提取码&…

【【萌新的FPGA学习之快速回顾 水 水 】】

萌新的FPGA学习之快速回顾 水 水 上一条FPGA的更新在9 25 并且2个礼拜没写 verilog 了 正好 刷新一下记忆 FPGA CPU DSP 的对比 在数字电路发展多年以来&#xff0c;出现了 CPU、DSP 和 FPGA 三种经典器件&#xff0c;每个都是具有划时代意义的器件。CPU、DSP 和 FPGA 都有各…

[SQL开发笔记]在windows系统安装Postgres

一、软件简介 PostgreSQL是一种自由软件的对象-关系型数据库管理系统&#xff08;ORDBMS&#xff09;&#xff0c;它以加州大学计算机系开发的POSTGRES&#xff0c;4.2版本为基础。PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性&#xff0c;如复杂查询、外键、触发…

5G来临,迎客莱带你探索运营商大数据的应用

随着5G时代的来临&#xff0c;不仅在算力的基础上得到了加强和保障&#xff0c;同时也丰富了计算的方式和模式&#xff0c;如边缘计算、霾计算等。计算方式和模式的改变&#xff0c;对于运营商来说&#xff0c;意味着更丰富的数据维度&#xff0c;更鲜活的数据和更强大的数据处…

1021 个位数统计

#include<bits/stdc.h> using namespace std; map<int,int>mp; int main(){string str;cin>>str;for(auto t:str){int kt-0;mp[k];}for(auto t:mp){cout<<t.first<<":"<<t.second<<endl;} }

find_element_by_id()方法的使用上。这个方法已经被弃用,建议使用find_element()方法替代。

from selenium import webdriver path chromedriver.exe browser webdriver.Chrome(path) url https://www.baidu.com browser.get(url) button browser.find_element_by_id(su) print(button) 修改后代码 from selenium import webdriver path chromedriver.exe browse…

国密https访问

前言 现在的SSL的加密算法实际上主要是国际算法&#xff0c;包括JDK&#xff0c;Go等语言也仅支持国际算法加密&#xff08;毕竟是国外开源项目&#xff09;&#xff0c;hash。随着国密算法的普及&#xff0c;比如openssl就支持国密了&#xff0c;还要新版本的Linux内核也开始…

识别准确率竟如此高,实时语音识别服务

前言 本文将介绍一个准确率非常高的语音识别框架&#xff0c;那就是FunASR&#xff0c;这个框架的模型训练数据超过几万个小时&#xff0c;经过测试&#xff0c;准确率非常高。本文将介绍如何启动WebSocket服务和Android调用这个服务来实时识别&#xff0c;一边说话一边出结果…