Redis通用命令详解

news2024/11/28 8:31:40

文章目录

  • 一、Redis概述
    • 1.1 KEYS:查看符合模板的所有 key
    • 1.2 DEL:删除一个指定的 key
    • 1.3 EXISTS:判断 key 是否存在
    • 1.4 EXPIRE:给一个 key 设置有效期,有效期到期时该 key 会被自动删除
    • 1.5 TTL:查看一个 key 的剩余有效期
    • 1.6 COPY:复制 Redis 数据库中的数据到另一个数据库中
    • 1.7 MOVE:将 Redis 中的指定键移动到另一个数据库中
    • 1.8 TOUCH:修改指定键的最后访问时间
    • 1.9 RENAME: 修改一个键的名称
    • 1.10 RENAMENX:新名称的键不存在时执行修改
    • 1.11 TYPE:返回键所存储的值的类型
    • 1.12 PERSIST:移除 Redis 键的过期时间


一、Redis概述

Redis概述

在这里插入图片描述

1.1 KEYS:查看符合模板的所有 key

在这里插入图片描述

KEYS 命令在处理大量数据时可能会影响 Redis 服务器的性能,因为它会遍历所有 key 来寻找匹配的项。

在这里插入图片描述

在生产环境中,应该谨慎使用 KEYS 命令,尤其是在数据量巨大的情况下。

redis> MSET firstname Jack lastname Stuntman age 35
"OK"
redis> KEYS *name*
1) "lastname"
2) "firstname"
redis> KEYS a??
1) "age"
redis> KEYS *
1) "lastname"
2) "age"
3) "firstname"
redis> 

首先使用 MSET 命令设置了多个 key-value 对,分别为 firstnamelastnameage。然后使用 KEYS 命令查找符合指定模式的 key。

  • 第一个 KEYS 命令使用模式 *name*,返回所有包含 “name” 的 key,即 lastnamefirstname
  • 第二个 KEYS 命令使用模式 a??,返回所有以字母 “a” 开头并且后面有两个字符的 key,即 age
  • 最后一个 KEYS 命令使用模式 *,返回所有存在的 key,即 lastnameagefirstname

1.2 DEL:删除一个指定的 key

在这里插入图片描述

在 Redis 中,DEL 命令用于删除指定的 key,并返回成功删除的 key 的数量。

在这里插入图片描述

redis> SET key1 "Hello"
"OK"
redis> SET key2 "World"
"OK"
redis> DEL key1 key2 key3
(integer) 2
redis> 

使用 DEL 命令删除了两个 key,即 key1key2。因为这两个 key 存在且被成功删除,所以返回的结果是 (integer) 2

如果执行 DEL 命令删除了不存在的 key,那么返回的结果将是 (integer) 0,表示没有成功删除任何 key。


1.3 EXISTS:判断 key 是否存在

在这里插入图片描述

EXISTS 命令用于判断给定的 key 是否存在于 Redis 中。它可以同时接受多个 key,并返回存在的 key 的数量。如果 key 存在,则返回 1;如果 key 不存在,则返回 0。
在这里插入图片描述

redis> SET key1 "Hello"
"OK"
redis> EXISTS key1
(integer) 1
redis> EXISTS nosuchkey
(integer) 0
redis> SET key2 "World"
"OK"
redis> EXISTS key1 key2 nosuchkey
(integer) 2
redis> 

使用 SET 命令分别设置了 key1key2 的值。然后使用 EXISTS 命令来检查指定的 key 是否存在。

  • 第一个 EXISTS 命令执行 EXISTS key1,返回结果为 (integer) 1,表示 key1 存在。
  • 第二个 EXISTS 命令执行 EXISTS nosuchkey,返回结果为 (integer) 0,表示 nosuchkey 不存在。
  • 接下来执行 EXISTS key1 key2 nosuchkey,返回结果为 (integer) 2,表示其中两个 key 存在,即 key1key2,而 nosuchkey 不存在。

Tips:
在这里插入图片描述
如果在参数中多次提到相同的现有键,它将被计算多次。如果somekey存在,exists somekey somekey将返回2。


1.4 EXPIRE:给一个 key 设置有效期,有效期到期时该 key 会被自动删除

 命令用于设置键的过期时间,让键在一定时间后自动删除。这里是命令的详细解释:

EXPIRE key seconds [NX | XX | GT | LT]
  • key:要设置过期时间的键名。

  • seconds:过期时间,单位为秒。键在指定秒数后将会被自动删除。

  • NX:(可选)仅在键不存在时设置过期时间。

  • XX:(可选)仅在键已存在时设置过期时间。

  • GT:(可选)仅在键的当前过期时间大于给定过期时间时设置过期时间。

  • LT:(可选)仅在键的当前过期时间小于给定过期时间时设置过期时间。

  • NXXX 选项都未指定时,默认行为是设置键的过期时间,如果键不存在则创建键并设置过期时间。

  • NXXX 选项可以与 GTLT 选项结合使用,从而提供更精确的过期时间控制。

  1. 设置键 mykey 在 60 秒后过期:

    EXPIRE mykey 60
    
  2. 仅当键 mykey 存在时,设置它在 120 秒后过期:

    EXPIRE mykey 120 XX
    
  3. 仅当键 mykey 不存在时,设置它在 300 秒后过期:

    EXPIRE mykey 300 NX
    
  4. 仅当键 mykey 的当前过期时间大于 180 秒时,设置它在 180 秒后过期:

    EXPIRE mykey 180 GT
    
  5. 仅当键 mykey 的当前过期时间小于 240 秒时,设置它在 240 秒后过期:

    EXPIRE mykey 240 LT
    

在这里插入图片描述

redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10
redis> SET mykey "Hello World"
"OK"
redis> TTL mykey
(integer) -1
redis> EXPIRE mykey 10 XX
(integer) 0
redis> TTL mykey
(integer) -1
redis> EXPIRE mykey 10 NX
(integer) 1
redis> TTL mykey
(integer) 10
redis> 

1.5 TTL:查看一个 key 的剩余有效期

在这里插入图片描述

TTL 命令用于获取 Redis 键的剩余生存时间(Time To Live,TTL)。

TTL key
  • key:要查询剩余生存时间的键名。

返回值

redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10
redis> 

  • 返回键的剩余生存时间(TTL):

    • 如果键不存在或者键没有设置过期时间,返回 -1
    • 如果键存在且设置了过期时间,返回剩余生存时间的秒数。
  • 返回 -1 表示键不存在或者键没有设置过期时间。

  • 返回 0 表示键存在并且没有剩余生存时间,即键已经过期。

  • TTL 返回的时间单位是秒。


1.6 COPY:复制 Redis 数据库中的数据到另一个数据库中

在这里插入图片描述
COPY 命令用于复制 Redis 数据库中的数据到另一个数据库中。

COPY source destination [DB destination-db] [REPLACE]
  • source:要复制数据的源键名。

  • destination:目标键名,复制后的数据将存储在这个键中。

  • DB destination-db:(可选)目标数据库的索引号。默认为 0(即默认数据库)。

  • REPLACE:(可选)如果目标键 destination 已存在且有数据,使用 REPLACE 选项将会覆盖现有数据。如果未指定 REPLACE,并且目标键已存在,则 COPY 命令将会失败。

  • sourcedestination 参数必须是有效的键名。

  • 可以指定一个不同的目标数据库索引号,使数据被复制到该索引号对应的数据库中。

  • 使用 REPLACE 选项可以在目标键已存在时覆盖现有数据,否则命令会失败。

示例

  1. 将键 mykey 中的数据复制到键 mykey_copy 中:

    COPY mykey mykey_copy
    
  2. 将键 mylist 中的数据复制到键 mylist_backup 中,并指定目标数据库索引号为 1:

    COPY mylist mylist_backup DB 1
    
  3. 将键 myset 中的数据复制到键 myset_new 中,如果 myset_new 已存在则覆盖现有数据:

    COPY myset myset_new REPLACE
    

1.7 MOVE:将 Redis 中的指定键移动到另一个数据库中

在这里插入图片描述

MOVE 命令用于将 Redis 中的指定键移动到另一个数据库中。

MOVE key db
  • key:要移动的键名。

  • db:目标数据库的索引号,用于指定移动到哪个数据库中。

  • key 参数是要移动的键名,必须存在于当前数据库中。

  • db 参数是目标数据库的索引号,用于指定移动到哪个数据库中。索引号从 0 开始,Redis 默认支持 16 个数据库,可以通过配置进行扩展。

  1. 将键 mykey 移动到数据库索引号为 1 的数据库中:

    MOVE mykey 1
    
  • 如果目标数据库 db 不存在(例如超过了默认的 0 到 15 的范围),那么 MOVE 命令会返回错误。

  • 如果键 key 已经存在于目标数据库 db 中,那么 MOVE 命令将无效,不会导致任何数据移动。

  • 当键成功移动到目标数据库时,返回 1

  • 如果键已经存在于目标数据库中,或者数据库索引号超出范围,返回 0


1.8 TOUCH:修改指定键的最后访问时间

在这里插入图片描述

在 Redis 中,TOUCH 命令用于修改指定键的最后访问时间(last access time),从而更新键的过期时间。

TOUCH key [key ...]
  • key:一个或多个要更新最后访问时间的键名。

  • key 参数是一个或多个键名,用空格分隔。

  • TOUCH 命令主要用于更新 Redis 键的最后访问时间:

    1. 持久化存储:如果键设置了过期时间,通过 TOUCH 命令可以防止 Redis 自动清除这些键。
    2. 活跃用户追踪:可以用于跟踪哪些键最近被访问,用作活跃用户的标记或统计。
    3. LRU(最近最少使用)策略:Redis 在使用 LRU 策略管理内存时,可以通过 TOUCH 命令更新键的访问时间,从而影响键的淘汰顺序。
  1. 更新键 mykey 的最后访问时间:

    TOUCH mykey
    
  2. 更新多个键的最后访问时间:

    TOUCH key1 key2 key3
    
  • TOUCH 命令仅更新键的最后访问时间,不改变键的值或其他属性。
  • 如果指定的键不存在,TOUCH 命令会忽略该键,不会报错。
  • TOUCH 命令可以用于确保键不会在达到过期时间后被 Redis 主动清理,适用于需要持久化存储的场景。

返回值

redis> SET key1 "Hello"
"OK"
redis> SET key2 "World"
"OK"
redis> TOUCH key1 key2
(integer) 2
redis> 

  • 返回更新的键数目,即成功更新了多少个键的最后访问时间。

1.9 RENAME: 修改一个键的名称

在这里插入图片描述
在 Redis 中,RENAME 命令用于修改一个键的名称。

RENAME key newkey
  • key:要修改名称的键名。

  • newkey:键的新名称。

  • RENAME 命令用于将一个键的名称修改为新的名称。如果新的键名已经存在,则会覆盖原有键的值。

  1. 将键 mykey 的名称修改为 newkey

    RENAME mykey newkey
    
  • 如果键 key 不存在,则 RENAME 命令会返回错误。
  • 如果键 newkey 已经存在,它的值将被覆盖。

返回值

redis> SET mykey "Hello"
"OK"
redis> RENAME mykey myotherkey
"OK"
redis> GET myotherkey
"Hello"
redis> 

  • 当命令成功执行时,返回 OK。

1.10 RENAMENX:新名称的键不存在时执行修改

在这里插入图片描述

在 Redis 中,RENAMENX 命令用于将一个键的名称修改为新的名称,但只在新名称的键不存在时执行修改。

RENAMENX key newkey
  • key:要修改名称的键名。

  • newkey:键的新名称。

  • RENAMENX 命令会检查新名称 newkey 是否已经存在。

  • 如果 newkey 已经存在,则不执行任何操作,返回 0

  • 如果 newkey 不存在,则将 key 的名称修改为 newkey

  • 如果 key 不存在,则 RENAMENX 命令会返回错误。

  • RENAMENX 命令是原子操作,即在执行过程中不会出现部分成功的情况。

redis> SET mykey "Hello"
"OK"
redis> SET myotherkey "World"
"OK"
redis> RENAMENX mykey myotherkey
(integer) 0
redis> GET myotherkey
"World"
redis> 

  • 当成功将 key 的名称修改为 newkey 时,返回 1
  • 如果 newkey 已经存在,没有执行修改操作,则返回 0

1.11 TYPE:返回键所存储的值的类型

在这里插入图片描述
TYPE 命令用于返回键所存储的值的类型。

TYPE key
  • key:要查询类型的键名。
redis> SET key1 "value"
"OK"
redis> LPUSH key2 "value"
(integer) 1
redis> SADD key3 "value"
(integer) 1
redis> TYPE key1
"string"
redis> TYPE key2
"list"
redis> TYPE key3
"set"
redis> 

返回值

  • 返回键存储值的类型,可能的返回值有:
    • "none":键不存在。
    • "string":字符串类型。
    • "list":列表类型。
    • "set":集合类型。
    • "zset":有序集合类型。
    • "hash":哈希类型。
    • "stream":流类型。

注意事项

  • 如果键不存在,命令会返回 "none"
  • 如果键存储的值类型不在预期范围内,可能是由于该键已被其他操作修改。
  • 在 Redis 中,同一个键可以在不同时间存储不同类型的值。

1.12 PERSIST:移除 Redis 键的过期时间

在这里插入图片描述

PERSIST 命令用于移除 Redis 键的过期时间,使得键成为永久有效的,不再自动过期。

PERSIST key
  • key:要移除过期时间的键名。

返回值

redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10
redis> PERSIST mykey
(integer) 1
redis> TTL mykey
(integer) -1
redis> 

  • 如果成功移除过期时间,返回 1
  • 如果键不存在过期时间,或者键不存在,返回 0

注意事项

  • 只有带有过期时间的键才能使用 PERSIST 命令来移除过期时间。
  • 如果键之前已经被设置为永不过期(即没有设置过期时间),PERSIST 命令会返回 0
  • 移除过期时间后,键将永久存在于 Redis 中,直到显式删除。

更多的通用命令可以去官网https://redis.io/docs/latest/commands/?group=generic查看哦~
在这里插入图片描述

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

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

相关文章

基于FPGA的Cordic向量模式原理及设计

目录 一、向量模式 1、向量模式原理 1.1 1.2 2、向量模式的MATLAB仿真 3、向量模式的FPGA实现 3.1 预处理 3.2 迭代 3.3 结果计算 一、向量模式 1、向量模式原理 已知直角坐标下一点(x,y),如何求该点在极坐标系的坐标&a…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] API集群访问频次统计(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 &#x1f…

多路h265监控录放开发-(4)完成摄像机管理的数据的增删改模型层代码(单例模式)

xcamera_config.h #pragma once #include <vector> #include <mutex> struct XCameraData {char name[1024] { 0 };char url[4096] { 0 }; //摄像机主码流char sub_url[4096] { 0 }; //摄像机辅码流char save_path[4096] { 0 }; //视频录制存放目…

RX8025/INS5T8025实时时钟-国产兼容RS4TC8025

该模块是一个符合I2C总线接口的实时时钟&#xff0c;包括一个32.768 kHz的DTCXO。 除了提供日历&#xff08;年、月、日、日、时、分、秒&#xff09;功能和时钟计数器功能外&#xff0c;该模块还提供了大量其他功能&#xff0c;包括报警功能、唤醒定时器功能、时间更新中断功能…

基于EKF算法估计电动汽车蓄电池的SOC

电动汽车&#xff08;EV&#xff09;作为未来汽车的一大发展方向&#xff0c;其动力源——动力锂电池组的荷电状态&#xff08;SOC&#xff09;估计显得尤为重要。SOC直接反应了电池组剩余容量的多少&#xff0c;是预测EV行驶里程、使用和维护电池组的重要依据。 然而&#xf…

读AI新生:破解人机共存密码笔记07概念和理论

1. 全球层面的智能 1.1. 仅仅为了阅读完当前世界上所有的出版物&#xff08;更不用说过去所有的书面材料&#xff09;就需要20万名全职人员&#xff0c;收听当前的广播则还需要6万名全职人员 1.1.1. 监听世界上所有的电话也是可能的&#xff08;这项工作需要大约2000万人&…

深度学习之计算机视觉

神经网络简介 全连接层和卷积层的根本区别在于权重在中间层中彼此连接的方式。图5.1描述了全连接层或线性层是如何工作的。 在计算机视觉中使用线性层或全连接层的最大挑战之一是它们丢失了所有空间信息&#xff0c;并且就全连接层使用的权重数量而言复杂度太高。例如&#xf…

电商爬虫API的定制开发:满足个性化需求的解决方案

一、引言 随着电子商务的蓬勃发展&#xff0c;电商数据成为了企业决策的重要依据。然而&#xff0c;电商数据的获取并非易事&#xff0c;特别是对于拥有个性化需求的企业来说&#xff0c;更是面临诸多挑战。为了满足这些个性化需求&#xff0c;电商爬虫API的定制开发成为了解决…

Spring Boot集成tensorflow实现图片检测服务

1.什么是tensorflow&#xff1f; TensorFlow名字的由来就是张量(Tensor)在计算图(Computational Graph)里的流动(Flow)&#xff0c;如图。它的基础就是前面介绍的基于计算图的自动微分&#xff0c;除了自动帮你求梯度之外&#xff0c;它也提供了各种常见的操作(op&#xff0c;…

使用 jQuery 选择器获取页面元素,然后利用 jQuery 对象的 css() 方法设置其 display 样式属性,从而实现显示和隐藏效果。

在页面中显示电影排行榜 当单击“&#xff08;收起&#xff09;”链接时&#xff0c;排行榜中后三项的电影名称隐藏而且链接的文本更改为“&#xff08;展开&#xff09; ” 当单击“&#xff08;展开&#xff09;”的链接时&#xff0c;后三项的电影名称重新显示且链接的文本…

基于微信共享充电桩小程序毕业设计作品成品(3)开发技术文档_充电桩小程序前端技术栈

后台管理系统文件 所在路径&#xff1a;后台源码ht目录是后台 绿色显示的是系统框架&#xff0c;不要动 位置程序名说明源码根目录login.php后台登录页面源码根目录check_u_login.php后台登录处理程序ht 后台根目录index.php后台首页left.php后台左侧菜单u_logout.php退出登…

2024广东省职业技能大赛云计算赛项实战——OpenStack搭建

OpenStack搭建 前言 搭建采用双节点安装&#xff0c;即controller控制节点和compute计算节点。 CentOS7 系统选择 2009 版本&#xff1a;CentOS-7-x86_64-DVD-2009.iso 可从阿里镜像站下载&#xff1a;https://mirrors.aliyun.com/centos/7/isos/x86_64/ OpenStack使用竞赛培…

【NCBI】SRA toolkit安装及使用-WindowsLinux版本

文章目录 Windows版本下载安装- 设置环境变量使用下载SRA Linux版本下载安装使用 由于市面上的文章介绍SRA toolkit基本上都是基于Linux&#xff0c;而在windows下运行SRA toolkit基本上可以达到相同的效果且更为方便&#xff0c;故本文将分别阐明在Windows和Linux环境下SRA to…

【DAO】DAOS在后傲腾时代的发展策略

视频&#xff1a;DAOS在后傲腾时代的发展策略_哔哩哔哩_bilibili 代替方案 WAL &#xff08;write ahead log&#xff09; 在架构上用DRAM 代替PMEM&#xff0c;如图 变化是&#xff1a; 傲腾方案&#xff1a; PMEM 数据写到内存就完成"落盘"&#xff0c;是一个原…

10年265倍!动态展示全球第一股英伟达10年股价走势

英伟达在过去十年的股价走势展示了其在市场上的强劲表现和显著增长。自1999年上市以来&#xff0c;英伟达的股价经历了多次显著的涨幅&#xff0c;并在2024年达到了历史新高。 从2023年6月的数据来看&#xff0c;英伟达的股价为386.54美元/股&#xff0c;市值为9548亿美元。然…

探寻Scala的魅力:大数据开发语言的入门指南

大数据开发语言Scala入门 一、引言1.1 概念介绍1.2 Scala作为大数据开发语言的优势和应用场景1.2.1 强大的函数式编程支持1.2.2 可与Java无缝集成1.2.3 高性能和可扩展性1.2.4 大数据生态系统的支持 二、Scala基础知识2.1. Scala简介&#xff1a;2.1.1 Scala的起源和背景2.1.2 …

django学习入门系列之第三点《CSS基础样式介绍1》

文章目录 高度和宽度块级标签|行内标签的转换字体和颜色往期回顾 高度和宽度 如果在块级标签内&#xff0c;单独定义高度的话&#xff0c;宽度会默认拉满 使用百分比的时候 如果是块级标签&#xff0c;宽度可以用百分比&#xff0c;高度用不了&#xff08;使用起来没效果&…

前后端分离的后台管理系统源码,快速开发OA、CMS网站后台管理、毕业设计项目

那有没有一款软件解-决这种现状呢?答案是肯定的。引入我们的软件——eladmin。 介绍 ELADMIN,一个简单且易上手的 Spring boot 后台管理框架,已发布 Mybatis-Plus 版本,为开发者提供了一个全-面、高-效的解-决方案。 特点 高-效率:前后端完全分离,项目简单可配,内置代码…

MySQL:表的增删查改

文章目录 1.Create(创建)2.Retrieve(读取、查询)2.1 SELECT 列2.2 WHERE 子句2.3 结果排序(order by)2.4 筛选分页结果(limit、offset)2.5 Update更新2.6 Delete删除2.7 去重 3.聚合函数3.1 聚合函数的基本使用3.2group by子句的使用(分组查询) 增删查改&#xff1a;: Create(创…

自动驾驶学习-车载摄像头ISP(2)

背景 智能驾驶ISP&#xff08;Image Signal Processor&#xff0c;图像信号处理器&#xff09;在自动驾驶和辅助驾驶系统中扮演着至关重要的角色。 典型的ISP通常会对摄像头输出的RAW数据先做黑电平矫正&#xff08;BLC&#xff09;、坏点矫正&#xff08;DPC&#xff09;、数…