Redis---key操作

Redis系列之Key操作 前言 之前我们在介绍Redis时就说过Redis是以K-V键值对形式存储的,那么对于Redis而言,这个Key无疑就显得十分的重要和关键,对于数据的检索获取都得以它为基础去操作,那么我们就来看看Redis中那些关于Key的操作。 语法 Redis key的语法格式如下:command keyname Redis keys 命令 讲key之前我想先对Redis数据存储做个说明,Redis中默认把内存空间分成16份独立的区域,可以理解为分为16个数据库,默认情况下使用的第0个数据库,例如:.. 阅读详情

一、概述:

在该系列的前几篇博客中,主要讲述的是与Redis数据类型相关的命令,如String、List、Set、Hashes和Sorted-Set。这些命令都具有一个共同点,即所有的操作都是针对与Key关联的Value的。而该篇博客将主要讲述与Key相关的Redis命令。学习这些命令对于学习Redis是非常重要的基础,也是能够充分挖掘Redis潜力的利器。
在这篇博客中,我们将一如既往的给出所有相关命令的明细列表和典型示例,以便于我们现在的学习和今后的查阅。

二、相关命令列表:

命令原型时间复杂度命令描述返回值
KEYS patternO(N)时间复杂度中的N表示数据库中Key的数量。获取所有匹配pattern参数的Keys。需要说明的是,在我们的正常操作中应该尽量避免对该命令的调用,因为对于大型数据库而言,该命令是非常耗时的,对Redis服务器的性能打击也是比较大的。pattern支持glob-style的通配符格式,如*表示任意一个或多个字符,?表示任意字符,[abc]表示方括号中任意一个字母。匹配模式的键列表。
DEL key [key …]O(N)时间复杂度中的N表示删除的Key数量。从数据库删除中参数中指定的keys,如果指定键不存在,则直接忽略。还需要另行指出的是,如果指定的Key关联的数据类型不是String类型,而是List、Set、Hashes和Sorted Set等容器类型,该命令删除每个键的时间复杂度为O(M),其中M表示容器中元素的数量。而对于String类型的Key,其时间复杂度为O(1)。实际被删除的Key数量。
EXISTS keyO(1)判断指定键是否存在。1表示存在,0表示不存在。
MOVE key dbO(1)将当前数据库中指定的键Key移动到参数中指定的数据库中。如果该Key在目标数据库中已经存在,或者在当前数据库中并不存在,该命令将不做任何操作并返回0。移动成功返回1,否则0。
RENAME key newkeyO(1)为指定指定的键重新命名,如果参数中的两个Keys的命令相同,或者是源Key不存在,该命令都会返回相关的错误信息。如果newKey已经存在,则直接覆盖。
RENAMENX key newkeyO(1)如果新值不存在,则将参数中的原值修改为新值。其它条件和RENAME一致。1表示修改成功,否则0。
PERSIST keyO(1)如果Key存在过期时间,该命令会将其过期时间消除,使该Key不再有超时,而是可以持久化存储。1表示Key的过期时间被移出,0表示该Key不存在或没有过期时间。
EXPIRE key secondsO(1)该命令为参数中指定的Key设定超时的秒数,在超过该时间后,Key被自动的删除。如果该Key在超时之前被修改,与该键关联的超时将被移除。1表示超时被设置,0则表示Key不存在,或不能被设置。
EXPIREAT key timestampO(1)该命令的逻辑功能和EXPIRE完全相同,唯一的差别是该命令指定的超时时间是绝对时间,而不是相对时间。该时间参数是Unix timestamp格式的,即从1970年1月1日开始所流经的秒数。1表示超时被设置,0则表示Key不存在,或不能被设置。
TTL keyO(1)获取该键所剩的超时描述。返回所剩描述,如果该键不存在或没有超时设置,则返回-1。
RANDOMKEYO(1)从当前打开的数据库中随机的返回一个Key。返回的随机键,如果该数据库是空的则返回nil。
TYPE keyO(1)获取与参数中指定键关联值的类型,该命令将以字符串的格式返回。返回的字符串为string、list、set、hash和zset,如果key不存在返回none。
SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern …]] [ASC|DESC] [ALPHA] [STORE destination]O(N+M*log(M))这个命令相对来说是比较复杂的,因此我们这里只是给出最基本的用法,有兴趣的网友可以去参考redis的官方文档。 返回排序后的原始列表。

三、命令示例:

  1. KEYS/RENAME/DEL/EXISTS/MOVE/RENAMENX:
    在Shell命令行下启动Redis客户端工具。
    /> redis-cli
    清空当前选择的数据库,以便于对后面示例的理解。
    redis 127.0.0.1:6379> flushdb
    OK
    添加String类型的模拟数据。
    redis 127.0.0.1:6379> set mykey 2
    OK
    redis 127.0.0.1:6379> set mykey2 “hello”
    OK
    添加Set类型的模拟数据。
    redis 127.0.0.1:6379> sadd mysetkey 1 2 3
    (integer) 3
    添加Hash类型的模拟数据。
    redis 127.0.0.1:6379> hset mmtest username “stephen”
    (integer) 1
    根据参数中的模式,获取当前数据库中符合该模式的所有key,从输出可以看出,该命令在执行时并不区分与Key关联的Value类型。
    redis 127.0.0.1:6379> keys my*
    1) “mysetkey”
    2) “mykey”
    3) “mykey2”
    删除了两个Keys。
    redis 127.0.0.1:6379> del mykey mykey2
    (integer) 2
    查看一下刚刚删除的Key是否还存在,从返回结果看,mykey确实已经删除了。
    redis 127.0.0.1:6379> exists mykey
    (integer) 0
    查看一下没有删除的Key,以和上面的命令结果进行比较。
    redis 127.0.0.1:6379> exists mysetkey
    (integer) 1
    将当前数据库中的mysetkey键移入到ID为1的数据库中,从结果可以看出已经移动成功。
    redis 127.0.0.1:6379> move mysetkey 1
    (integer) 1
    打开ID为1的数据库。
    redis 127.0.0.1:6379> select 1
    OK
    查看一下刚刚移动过来的Key是否存在,从返回结果看已经存在了。
    redis 127.0.0.1:6379[1]> exists mysetkey
    (integer) 1
    在重新打开ID为0的缺省数据库。
    redis 127.0.0.1:6379[1]> select 0
    OK
    查看一下刚刚移走的Key是否已经不存在,从返回结果看已经移走。
    redis 127.0.0.1:6379> exists mysetkey
    (integer) 0
    准备新的测试数据。
    redis 127.0.0.1:6379> set mykey “hello”
    OK
    将mykey改名为mykey1
    redis 127.0.0.1:6379> rename mykey mykey1
    OK
    由于mykey已经被重新命名,再次获取将返回nil。
    redis 127.0.0.1:6379> get mykey
    (nil)
    通过新的键名获取。
    redis 127.0.0.1:6379> get mykey1
    “hello”
    由于mykey已经不存在了,所以返回错误信息。
    redis 127.0.0.1:6379> rename mykey mykey1
    (error) ERR no such key
    为renamenx准备测试key
    redis 127.0.0.1:6379> set oldkey “hello”
    OK
    redis 127.0.0.1:6379> set newkey “world”
    OK
    由于newkey已经存在,因此该命令未能成功执行。
    redis 127.0.0.1:6379> renamenx oldkey newkey
    (integer) 0
    查看newkey的值,发现它也没有被renamenx覆盖。
    redis 127.0.0.1:6379> get newkey
    “world”

  2. PERSIST/EXPIRE/EXPIREAT/TTL:
    为后面的示例准备的测试数据。
    redis 127.0.0.1:6379> set mykey “hello”
    OK
    将该键的超时设置为100秒。
    redis 127.0.0.1:6379> expire mykey 100
    (integer) 1
    通过ttl命令查看一下还剩下多少秒。
    redis 127.0.0.1:6379> ttl mykey
    (integer) 97
    立刻执行persist命令,该存在超时的键变成持久化的键,即将该Key的超时去掉。
    redis 127.0.0.1:6379> persist mykey
    (integer) 1
    ttl的返回值告诉我们,该键已经没有超时了。
    redis 127.0.0.1:6379> ttl mykey
    (integer) -1
    为后面的expire命令准备数据。
    redis 127.0.0.1:6379> del mykey
    (integer) 1
    redis 127.0.0.1:6379> set mykey “hello”
    OK
    设置该键的超时被100秒。
    redis 127.0.0.1:6379> expire mykey 100
    (integer) 1
    用ttl命令看一下当前还剩下多少秒,从结果中可以看出还剩下96秒。
    redis 127.0.0.1:6379> ttl mykey
    (integer) 96
    重新更新该键的超时时间为20秒,从返回值可以看出该命令执行成功。
    redis 127.0.0.1:6379> expire mykey 20
    (integer) 1
    再用ttl确认一下,从结果中可以看出果然被更新了。
    redis 127.0.0.1:6379> ttl mykey
    (integer) 17
    立刻更新该键的值,以使其超时无效。
    redis 127.0.0.1:6379> set mykey “world”
    OK
    从ttl的结果可以看出,在上一条修改该键的命令执行后,该键的超时也无效了。
    redis 127.0.0.1:6379> ttl mykey
    (integer) -1

  3. TYPE/RANDOMKEY/SORT:
    由于mm键在数据库中不存在,因此该命令返回none。
    redis 127.0.0.1:6379> type mm
    none
    mykey的值是字符串类型,因此返回string。
    redis 127.0.0.1:6379> type mykey
    string
    准备一个值是set类型的键。
    redis 127.0.0.1:6379> sadd mysetkey 1 2
    (integer) 2
    mysetkey的键是set,因此返回字符串set。
    redis 127.0.0.1:6379> type mysetkey
    set
    返回数据库中的任意键。
    redis 127.0.0.1:6379> randomkey
    “oldkey”
    清空当前打开的数据库。
    redis 127.0.0.1:6379> flushdb
    OK
    由于没有数据了,因此返回nil。
    redis 127.0.0.1:6379> randomkey
    (nil)

ESP32Servo库驱动SG90舵机:从入门到精准控制 本文详细介绍了如何使用ESP32Servo库驱动SG90舵机,从硬件连接到软件环境搭建,再到编写示例程序实现精准控制。内容涵盖库安装、基础驱动代码解析、舵机校准方法以及平滑运动控制,帮助开发者快速掌握ESP32控制舵机的核心技能,并提供了电源管理、信号抗干扰等实用避坑指南。 阅读详情

相关推荐

Proteus仿真实战:用AT89C51+L298N搭建直流电机PID调速系统(附完整工程文件)

本文详细介绍了使用Proteus仿真平台结合AT89C51单片机和L298N驱动模块搭建直流电机PID闭环调速系统的全过程。从硬件选型、电路连接到PID算法实现与参数整定,提供了完整的开发指南和工程文件,帮助读者快速掌握闭环调速系统的设计与调试技巧。

weixin_28724661的博客 448

Redis学习手册(Key操作命令)

一、概述:       在该系列的前几篇博客中,主要讲述的是与Redis数据类型相关的命令,如String、List、Set、Hashes和Sorted-Set。这些命令都具有一个共同点,即所有的操作都是针对与Key关联的Value的。而该篇博客将主要讲述与Key相关的Redis命令。学习这些命令对于学习Redis是非常重要的基础,也是能够充分挖掘Redis潜力的利器。       在该篇

hujiao_jingling的专栏 1万+

AutoLISP 学习 (一)

AutoLISP基本语法结构、语法 以括号组成表达式,左右括号一定要成对,单、双引号也要成对,例如: (defun c:hello() (princ "\nHello world!") (prin1) ) 表达式格式:(函数名 操作数 操作数 …),例如: (setq p1 (list 0 0)) (setq p2 (list 10 10)) (setq p3 (list 20 20)) ;;; CAD中画直线,经过p1 p2 p3 (command "LINE" p1 p2 p3 ""

m0_54575622的博客 2122

Redis KEY操作实战手册:从设计到维护的全面指南

"Redis KEY操作实战手册"是一部从设计思路到日常维护的全面指南。本书深入解析Redis KEY的各类操作技巧,包括高效创建、查询、删除与更新策略,帮助读者构建优化的数据键空间。无论是初学者还是资深开发者,都能从中获得实战经验和最佳实践,以提升Redis数据库的性能与可靠性。

制定明确可量化的目标,坚持默默的做事。 2849

傻瓜教程:使用GeoServer发布离线地图服务

一、离线地图下载 离线地图分为两种:一种叫“金字塔瓦片”数据,一种叫“矢量地图数据”。我们看的在线地图比如,百度,谷歌,高德等等网页上的地图,都是金字塔瓦片;另外一种是手机上用来导航的,比如高德地图APP,也可以下载离线地图数据,这个就是矢量的。 卫星影像地图都是金字塔瓦片,无矢量数据。 因此,我们所说的离线地图下载通常都是指离线地图金字塔瓦片数据下载。 离线地图金字塔瓦片搭建的离线地图服务分很多种:一般有WEB方式,TMS、WMTS/WMS等等,不同的应用有不同...

米兰的小码农的博客 1万+

【用unity实现100个游戏之16】Unity程序化生成随机2D地牢游戏1(附项目源码)

关于使用TileMap生成随机2D地图,其实之前已经有做过类似的,感兴趣可以看看 但是随着学习深入,发现之前做的比较粗糙和不够全面,最近又在外网看到

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2213

【redis】Redis操作String类型key的发生了什么?

添加:通过SET命令创建或更新键值对,支持过期时间设置。删除:通过DEL或UNLINK命令删除键。修改:通过SET或SETRANGE命令更新键的值。查询:通过GET命令获取键的值。Redis通过高效的哈希表和动态字符串结构,实现了快速的键值操作。同时,通过RDB和AOF机制,Redis确保了数据的持久化。对于大Key和内存不足等问题,Redis提供了多种优化和故障处理机制,保证系统的稳定性和性能。

玖拾说架构 746

【微服务】SpringBoot 整合Kafka 项目实战操作详解

SpringBoot 整合Kafka 实战操作详解

congge 5569

Redis key操作

redis 的key操作是涉及范围最广的操作 。 1、Redis 列出key keys *user* keys * 有3个通配符 *, ? ,[] *: 通配任意多个字符 ?: 通配单个字符 []: 通配括号内的某1个字符 注:生产已经禁止。更安全的做法是采用scan,原理和操作如下:针对Keys的改进,支持分页查询Key。在迭代过程中,Keys有增删时不会要锁定写操作,数据...

zuihongyan518的博客 455

9篇1章1节:中国居民健康与营养调查(CHNS)数据库的官网解析和数据下载(2026年版)

在探讨中国社会经济转型与人口健康变迁的学术领域中,中国健康与营养调查(CHNS) 是一个无法绕过的权威数据库。本文将带你深入了解CHNS的项目背景、庞大的数据体系,以及如何通过这两个核心网站获取关键的家庭、个人及社区层面的研究数据。

MD Code 1692

【漏洞复现】Palo Alto Networks PAN-OS GlobalProtect 命令注入漏洞 CVE-2024-3400

在特定PAN-OS版本和不同功能配置下,未经身份验证的攻击者可能利用此漏洞在防火墙上以root权限执行任意代码。技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。本文所提供的工具仅用于学习,禁止用于其他!poc如下,注入点在Cookie中,将其中的DNSlog地址替换为你的dnslog地址,借助DNSLOG来复现,可以使用http://dnslog.pw/

失心少年 1225

四、Redis Key操作命令

本文介绍了Redis中Key操作常用的命令及其用法

ice_cn的博客 725

[特殊字符] 2026终极实战:Python爬取得物App球鞋实时交易价格 —— 从签名破解到数据可视化全栈指南

价格敏感度:热门鞋款(如Air Jordan 1、Yeezy 350、Dunk SB)价格每分钟都在波动,短线套利空间巨大。稀缺性:限量发售、联名款、地区限定,导致供需关系实时变化。数据壁垒:得物App使用自研WMS签名算法设备指纹绑定动态请求头加密,是爬虫工程师的“练兵场”。本博客将手把手带你从零搭建一套生产级得物球鞋价格爬虫系统,涵盖:抓包与逆向分析(mitmproxy + Frida)签名算法逆向(Python复刻)设备模拟与心跳保活(ADB + uiautomator2)

2201_76125261的博客 1124

【redis】redis操作set类型的key发生了什么?

以下是关于Redis操作(添加、删除、修改、查询)Set类型key的完整过程,包括引用源码的数据、时序图、磁盘IO读写、数据长度限制、线程安全控制和故障处理机制。

玖拾说架构 1226

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Redis的key的操作命令

1. Redis的key的操作命令 1.1 keys 语法:keys pattern 作用:查找所有符合模式pattern的key。pattern可以使用通配符 通配符: *:表示 0-多个字符,例如: keys * 查询所有的 key。 ?:表示单个字符,例如 wo?d , 匹配 word , wood 例1:显示所有的 key 例2:使用 *表示 0或多个字符 例3:使用?表示单个字符 1.2 exists 语法:exists key [key…] 作用:判断key

java学习 318

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【Redis缓存机制】3.key的命令操作

我们之前使用Redis简单存储了三个参数: 在语句set name jack中,其中name就是一个key。我们Java中的变量名是有一定规则的, 比如组成内容可以是“数字”,“字母”以及“下划线”。 同理,key也有自己的命名规则: 在Redis中,除了"\n"和空格不能作为名字的组成内容外,其它内容都可以作为key的名字部分, 名字长度不做要求。 例如,我们将很多符号设置为key,然后...

有趣的人生 一半是山川湖海 一半是初心情怀 338

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

redis命令之key操作

redis常用的key操作命令: 1.set key value (默认就是string类型) :给key赋值为value 2.get key :获取key的值 3.exists key :判断key是否存在 4.del key1 key2 ... :删除 5.type key :得到key的类型 6.keys pattern :返回符合pattern的keys 比如 ...

xiaozhuangyumaotao的博客 815

Redis学习_Key的操作命令

Redis学习_Key的操作命令1. 显示当前数据库的相应key: keys2. 判断当前库中key是否存在 :exists3. 设置key生存时间: expire4. 查看 key 剩余生存时间: ttl5. 查看key对应value所存储的数据类型:type6. 删除指定键值对 : del 1. 显示当前数据库的相应key: keys 语法: keys 通配符 作用: 显示显示当前数据库的...

田磊的博客 482

Redis之Key通用操作

Key 的特征 key是一个字符串,通过key获取redis中保存的数据 对于key自身状态相关操作,例如删除、判定是否存在、获取类型等 对于key有效性控制相关操作,例如有限期设定,判定是否有效,有效状态切换等 对于key快速查询操作,例如按照策列查询key2 key key基本操作 删除指定key del key 判断key是否存在 exists k...

u014265398的博客 230

redis对于key的操作命令

Redis对于key的操作命令 del key1 key2 ... Keyn 作用: 删除1个或多个键返回值: 不存在的key忽略掉,返回真正删除的key的数量 rename key newkey 作用: 给key赋一个新的key名注:如果newkey已存在,则newkey的原值被覆盖 renamenx key newkey 作用: 把key改名为newkey返回: 发生修改返回1...

weixin_34197488的博客 101

jedis操作redis中的key(封装)

一、由来 之前的redis pool的文章,讲解了如何封装一个redis pool以及操作redis中的字符串,博客地址如下: https://blog.youkuaiyun.com/qq_36898043/article/details/82155202 还有一篇文章封装了一些 操作redis中的list 。。。。 https://blog.youkuaiyun.com/qq_36898043/article/...

LZJWXJ树袋熊 1383

redis的key操作

1.del key [key key …] 删除给定的一个或者多个key,不存在的key会被忽略 返回值:被删除key的数量 2.exists key 检查给定的key是否存在 返回值:如果key存在,返回1.否则返回0 3.expire key seconds 给指定的key设置或者更新生存时间,当key过期时(生存时间为0),他会被自动删除 返回值:设置成功返回1,当key不存在或者不能为key设置生存时间时,返回0 persist 命令可以在不删除 key 的情况下,移除 key 的生存时间

weixin_46991903的博客 858

【Redis】7、Redis学习笔记系列(Key操作命令)

在该系列的前几篇博客中,主要讲述的是与Redis数据类型相关的命令,如String、List、Set、Hashes和Sorted-Set。这些命令都具有一个共同点,即所有的操作都是针对与Key关联的Value的。而该篇博客将主要讲述与——学习这些命令是掌握Redis的重要基础,也是充分挖掘Redis性能与功能潜力的核心利器。本文将完整呈现Key操作相关命令的明细列表与典型实操示例,既方便当下学习理解,也可作为后续工作中的查阅手册。

记录生活 331

Redis - key的通用操作

1. key 基本操作 //删除指定key del key //获取key是否存在 exists key //获取key的类型 type key 2. key的扩展操作(时效性控制) 为指定key设置有效期 expire key seconds pexpire key milliseconds expireat key timestamp pexpireat key mill...

Javaer`s blog 185

Redis入门第九讲——有关key的通用操作

你有没有发现,虽然Redis一共支持五种数据类型,但是每一种数据类型在操作数据的时候使用的命令都是不一样的。接下来,本文所讲述的有关key的通用操作,无论哪一种数据类型都能使用。所以,你也应该熟练掌握这些有关key的通用操作命令。 key pattern 获取所有与pattern匹配的key,返回所有与该key匹配的keys。其中,*表示任意一个或多个字符,?表示任意一个字符。 del key1 key2 ··· 删除指定的key,并且可以删除多个可以。例如, exists key 判断该key是否存在

李阿昀的博客 743

Key的操作命令——Redis

Key的操作命令 查找 exists move ttl expiretype rename del

mankeywang的博客 1578
上一篇: Redis---Sorted-Sets数据类型操作
下一篇: Redis---事务
杜鲁门
博客等级 码龄11年 219粉丝 316原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值