返回顶部
首页 > 资讯 > 数据库 >Redis教程(七):Key操作命令详解
  • 511
分享到

Redis教程(七):Key操作命令详解

详解命令操作 2022-06-04 17:06:49 511人浏览 安东尼
摘要

一、概述: 在该系列的前几篇博客中,主要讲述的是与Redis数据类型相关的命令,如String、List、Set、Hashes和Sorted-Set。这些命令都具有一个共同点,即所有的操作都是针

一、概述:

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

二、相关命令列表:

命令原型 时间复杂度 命令描述 返回值 KEYS pattern O(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 key O(1) 判断指定键是否存在。 1表示存在,0表示不存在。 MOVE key db O(1) 将当前数据库中指定的键Key移动到参数中指定的数据库中。如果该Key在目标数据库中已经存在,或者在当前数据库中并不存在,该命令将不做任何操作并返回0。 移动成功返回1,否则0。 RENAME key newkey O(1) 为指定指定的键重新命名,如果参数中的两个Keys的命令相同,或者是源Key不存在,该命令都会返回相关的错误信息。如果newKey已经存在,则直接覆盖。 RENAMENX key newkey O(1) 如果新值不存在,则将参数中的原值修改为新值。其它条件和RENAME一致。 1表示修改成功,否则0。 PERSIST key O(1) 如果Key存在过期时间,该命令会将其过期时间消除,使该Key不再有超时,而是可以持久化存储。 1表示Key的过期时间被移出,0表示该Key不存在或没有过期时间。 EXPIRE key seconds O(1) 该命令为参数中指定的Key设定超时的秒数,在超过该时间后,Key被自动的删除。如果该Key在超时之前被修改,与该键关联的超时将被移除。 1表示超时被设置,0则表示Key不存在,或不能被设置。 EXPIREAT key timestamp O(1) 该命令的逻辑功能和EXPIRE完全相同,唯一的差别是该命令指定的超时时间是绝对时间,而不是相对时间。该时间参数是Unix timestamp格式的,即从1970年1月1日开始所流经的秒数。 1表示超时被设置,0则表示Key不存在,或不能被设置。 TTL key O(1) 获取该键所剩的超时描述。 返回所剩描述,如果该键不存在或没有超时设置,则返回-1。 RANDOMKEY O(1) 从当前打开的数据库中随机的返回一个Key。 返回的随机键,如果该数据库是空的则返回nil。 TYPE key O(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)

您可能感兴趣的文档:

--结束END--

本文标题: Redis教程(七):Key操作命令详解

本文链接: https://lsjlt.com/news/11714.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Redis教程(七):Key操作命令详解
    一、概述: 在该系列的前几篇博客中,主要讲述的是与Redis数据类型相关的命令,如String、List、Set、Hashes和Sorted-Set。这些命令都具有一个共同点,即所有的操作都是针...
    99+
    2022-06-04
    详解 命令 操作
  • redis对于key的操作命令
    Redis对于key的操作命令 del key1 key2 ... Keyn 作用: 删除1个或多个键返回值: 不存在的key忽略掉,返回真正删除的key的数量 rename key newkey ...
    99+
    2024-04-02
  • Redis之通用的key操作命令
    场景 Centos中Redis的下载编译与安装(超详细): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334 Redis的启动和关闭(前台启动和...
    99+
    2018-10-30
    Redis之通用的key操作命令
  • Redis批量删除key的命令详解
    Redis中没有直接根据正则表达式删除key的命令,只有del key1 key2...命令 但是redis中有通过正则表达式获取key的命令:keys "正则表达式" 可以借助于xargs命令实现批...
    99+
    2023-03-23
    Redis批量删除key Redis批量删除
  • Redis操作命令总结
    一、key pattern 查询相应的key   (1)redis允许模糊查询key  有3个通配符 *、?、[]   (2)randomkey:返回随机key     (3)type key:返...
    99+
    2022-06-04
    命令 操作 Redis
  • redis常见操作命令
    连接相关:    redis-cli  -h <IP> -p <PORT> shutdown   #关闭    redis-cli  [-c如集群要加此参数] -h <IP&g...
    99+
    2024-04-02
  • redis 客户端操作命令
    1.对value操作的命令exists(key):确认一个key是否存在del(key):删除一个keytype(key):返回值的类型keys(pattern):返回满足给定pattern的所有key &...
    99+
    2024-04-02
  • Redis常用的操作命令
    本篇内容主要讲解“Redis常用的操作命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis常用的操作命令”吧!一、key pattern 查询相应的ke...
    99+
    2024-04-02
  • redis中删除操作命令
    目录Redis 删除操作命令redis 常用操作命令redis通用命令String类型的常用命令Hash类型List类型Set类型SortedSet类型总结redis 删除操作命令 redis中,我们想要删除一个数据,可...
    99+
    2023-02-22
    redis删除操作命令 redis删除命令 redis命令
  • SQLPlus命令操作用法详解
    SQLPlus是进行Oracle操作的主要前台工具,用户名和密码分别为用户名和密码,连接ORACLE数据库 可见,显示的比较混乱,可以通过以下命令优化 这个操作是对数据库直接操...
    99+
    2024-04-02
  • Redis SCAN命令详解
    目录1. 获取指定前缀的key需求描述:解决方案:2. SCAN命令Redis Scan 命令用于迭代数据库中的数据库键。 SCAN 命令是一个基于游标的迭代器,每次被调用之后, 都会向用户返回一个新的游标, 用户在下次...
    99+
    2022-07-27
    Redis SCAN命令 Redis SCAN
  • 详解redis-cli 命令
    命令使用: Redis-cli [OPTIONS] [cmd [arg [arg ...]]] 选项说明: -h <hostname> Server hostname (default: 127...
    99+
    2024-04-02
  • redis-trib.rb命令详解
    redis-trib.rb命令详解redis-trib.rb是官方提供的Redis Cluster的管理工具,无需额外下载,默认位于源码包的src目录下,但因该工具是用ruby开发的,所以需要准备相关的依赖...
    99+
    2024-04-02
  • redis debug命令详解
    redis debug命令提供了几个非常实用的debug功能,本文介绍下redis下的debug命令。 debug segment 让redis发生段错误,如果开启了cored...
    99+
    2024-04-02
  • Redis SCAN命令详解
    目录1. 获取指定前缀的key需求描述:解决方案:2. SCAN命令Redis Scan 命令用于迭代数据库中的数据库键。 SCAN 命令是一个基于游标的迭代器,每次被调用之后, 都...
    99+
    2024-04-02
  • 详解redis-cli 命令
    命令使用: redis-cli [OPTIONS] [cmd [arg [arg ...]]] 选项说明: -h <hostname> Server hos...
    99+
    2022-11-13
    redis-cli 命令 redis-cli 
  • Elastic Search 命令详解-索引操作
    关于Elastic Search安装可以参考《Elastic Search 8.6.2集群安装部署》及Kibana安装可以参考《Elastic Search 8.6.2简单操作》。相关命令将在Kibana工具的Console平台上执行。 ...
    99+
    2023-08-31
    搜索引擎 java 服务器
  • Java中使用Jedis连接Redis对Key进行操作的常用命令
    场景 Java中使用Jedis连接池连接Redis数据库流程: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/104914320 在上面使用Jedis连接池的方...
    99+
    2022-02-22
    Java中使用Jedis连接Redis对Key进行操作的常用命令
  • redis执行redis命令的方法教程
    Redis 命令 Redis 命令用于在 redis 服务上执行操作。所以我们必须要启动Redis服务程序,也就是redis安装目录下的redis-server.exe,你可以双击执行,也可以打开cmd窗口...
    99+
    2022-06-04
    命令 方法 教程
  • 详解sed -i 命令入门教程
    目录一、简介1、sed介绍2、sed工作原理3、正则表达式概念4、正则表达式的匹配过程二、基本正则表达式1. 符号"."2. 符号"*"3. 符号"[]"4. ...
    99+
    2022-06-22
    sed -i 命令入门 sed -i 命令
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作