命令原型

时间复杂度

命令描述

返回值

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已经存在,则直接覆盖。

成功返回OK

RENAMENX key newkey

O(1)

当且仅当newkey不存在时,将key改名为newkey

当key不存在时,返回一个错误

修改成功1,其他报错

newkey存在返回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)

获取该键所剩的超时描述。

返回剩余时间

如果键不存在返回-2

没有设过期键返回-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 [GETpattern ...]] [ASC|DESC] [ALPHA] [STORE destination]

O(N+M*log(M))

这个命令相对来说是比较复杂的,因此我们这里只是给出最基本的用法,有兴趣的网友可以去参考redis的官方文档。

返回排序后的原始列表

SCAN cursor [MATCH pattern] [COUNT count]

SCAN命令每次被调用之后,都会向用户返回一个新的游标,用户在下次迭代时需要使用这个新游标作为SCAN命令的游标参数,以此来延续之前的迭代过程

返回一个长度为2的数组,游标和key

实例:

1. KEYS/ RENAME/ DEL/ EXISTS/ MOVE/ RENAMENX:
KEYS
KEYS *匹配数据库中所有key。
KEYS h?llo匹配hello,hallo和hxllo等。
KEYS h*llo匹配hllo和heeeeello等。
KEYS h[ae]llo匹配hello和hallo,但不匹配hillo
特殊符号用 \ 转义
redis> MSET one 1 two 2 three 3 four 4      # 一次设置4 个key
OK
redis> KEYS *o*
1) "four"
2) "two"
3) "one"
redis> KEYS t??
1) "two"
redis> KEYS t[w]*
1) "two"
redis> KEYS *           # 匹配数据库内所有key
1) "four"
2) "three"
3) "two"
4) "one"

-----------------------------------------------------
RENAME / RENAMENX
# key 存在且newkey 不存在
redis> SET message "hello world"
OK
redis> RENAME message greeting
OK
redis> EXISTS message   # message 不复存在
(integer) 0
redis> EXISTS greeting   # greeting 取而代之
(integer) 1
# 当key 不存在时,返回错误
redis> RENAME fake_key never_exists
(error) ERR no such key
# newkey 已存在时,RENAME 会覆盖旧newkey
redis> SET pc "lenovo"
OK

redis> SET personal_computer "dell"
OK
redis> RENAME pc personal_computer
OK
redis> GET pc
(nil)
redis:1> GET personal_computer   # 原来的值dell 被覆盖了
"lenovo"

# RENAMENX  newkey 存在时,失败
redis> SET animal "bear"
OK
redis> SET favorite_animal "butte
OK
redis> RENAMENX animal favorite_a
(integer) 0
redis> get animal
"bear"
redis> get favorite_animal
"butterfly"

2. PERSIST /EXPIRE/EXPIREAT/TTL/ PEXPIRE/PEXPRITEAT/PTTL
127.0.0.1:6379> set key "hello"
OK
127.0.0.1:6379> EXPIRE key 15
(integer) 1
127.0.0.1:6379> TTL key
(integer) 13
127.0.0.1:6379> EXISTS key
(integer) 1
127.0.0.1:6379> TTL key        # 过期
(integer) -2
127.0.0.1:6379> EXISTS key
(integer) 0
127.0.0.1:6379> set key "hello"
OK
127.0.0.1:6379> EXPIRE key 15
(integer) 1
127.0.0.1:6379> TTL key
(integer) 12
127.0.0.1:6379> PERSIST key   # 永久
(integer) 1
127.0.0.1:6379> TTL key
(integer) -1
127.0.0.1:6379> get key
"hello"

127.0.0.1:6379> set key2 'unix time'
OK
127.0.0.1:6379> EXPIREAT key2 1655292000
(integer) 1
127.0.0.1:6379> TTL key2
(integer) 239778314

127.0.0.1:6379> set key1 'world'
OK
127.0.0.1:6379> PEXPIRE key1 36000    #毫秒
(integer) 1
127.0.0.1:6379> PTTL key1                     #毫秒
(integer) 34127
127.0.0.1:6379> ttl key1                          #秒
(integer) 31
127.0.0.1:6379> PTTL key1
(integer) 12313
127.0.0.1:6379> ttl key1
(integer) 10
127.0.0.1:6379> ttl key1
(integer) -2
127.0.0.1:6379> EXISTS key1
(integer) 0

3. TYPE / DUMP / RESTORE
TYPE
返回值:
none(key不存在)  string(字符串)  list(列表)  set(集合)  zset(有序集)   hash(哈希表

redis> SET weather "sunny"   # 字符串
OK
redis> TYPE weather
string
redis> LPUSH book_list "programming in scala"   # 列表
(integer) 1
redis> TYPE book_list
list
redis> SADD pat "dog"        # 集合
(integer) 1

redis> TYPE pat
set

---------------------------------------------------------------------------------
DUMP / RESTORE
序列化给定key,并返回被序列化的值,使用RESTORE命令可以将这个值反序列化为Redis键。
序列化生成的值有以下几个特点:
• 它带有64位的校验和,用于检测错误,RESTORE在进行反序列化之前会先检查校验和。
• 值的编码格式和RDB文件保持一致。
• RDB版本会被编码在序列化值当中,如果因为Redis的版本不同造成RDB格式不兼容,那么Redis会拒绝对这个值进行反序列化操作。

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/51runsky/p/11644ab014117bc08189ab6d9857f1d7.html

1. Redis--KEY(键)相关推荐

  1. Redis key键命令

    redis是基于key -- value 存储的 NoSQL 数据库,那么下面来看看关于key的键命令. 键命令 查找键,参数⽀持正则表达式 keys pattern 例1:查看所有键 keys * ...

  2. Redis命令——键(key)

    Redis 键(key) Redis 键命令用于管理 redis 的键. 语法 Redis 键命令的基本语法如下: redis 127.0.0.1:6379> COMMAND KEY_NAME ...

  3. Python操作Redis:键(Key)

    Python操作Redis:键(Key) Python的redis模块管理键(Key)方法主要实现的Redis命令包括KEYS.GET.DEL(delete).EXISTS.RANDOMKEY,TYP ...

  4. redis+set+redom_Redis+命令参考(中文版)——Key(键)_IT168文库

    Redis 命令参考(中文版)-- Key (键) 目录 Key( 键 ) . ............................................................ ...

  5. Spring Boot 监听 Redis Key 失效事件实现定时任务

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:彭超 https://antoniopeng.com 业务场 ...

  6. 深入理解Redis主键失效原理及实现机制

    2019独角兽企业重金招聘Python工程师标准>>> 作为一种定期清理无效数据的重要机制,主键失效存在于大多数缓存系统中,Reids也不例外.在Redis提供的诸多命令中, EXP ...

  7. php redis key,redis 在 php 中的应用(key篇)

    KEY(键) Redis DEL 命令用于删除已存在的键.不存在的 key 会被忽略. $redis = new redis(); $redis->connect('127.0.0.1',637 ...

  8. redis设置键的生存时间或过期时间

    设置键的生存时间或过期时间 通过EXPIRE 命令或者PEXPIRE 命令,客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间( Time To Live , TTL) ,在经过指定的秒数或者毫 ...

  9. redis 能不能监听特定的key失效_php监听redis key失效触发回调事件

    订单超时.活动过期解决方案:php监听redis key失效触发回调事件 Redis 的 2.8.0 版本之后可用,键空间消息(Redis Keyspace Notifications),配合 2.0 ...

  10. 17 redis -key设计原则

    书签系统 create table book ( bookid int, title char(20) )engine myisam charset utf8;insert into book val ...

最新文章

  1. byfen网java_Java企业级分布式架构师第10期2020年-开课吧全套
  2. 谷歌花35元就“骗”走刷脸数据:黑人为主,霸王条款无限使用,为强化新手机能力...
  3. RuntimeError: dimension specified as 0 but tensor has no dimensions
  4. 复数的物理意义是什么
  5. SAP云平台CloudFoundry环境试用帐号过期了怎么办
  6. 正确使用 Volatile 变量
  7. getLocationOnScreen不起作用原因
  8. 连接网络后浏览器却上不了网
  9. DPDK:不仅是加速
  10. jQuery LigerUI 使用教程入门篇
  11. IntelliJ IDEA :解决idea导入项目爆红
  12. Firefox 的about:config
  13. CSS从入门到精通(CSS背景和列表)
  14. 七天学完Vue之第二天学习笔记(自定指令,过滤器,生命周期函数,动画效果)
  15. CAD贱人工具箱插件免费下载
  16. 开源的微信公众号管理工具
  17. Visual Studio Code修改HTML Snippets插件中默认模板内容
  18. SAP中重复制造生产计划编制——人工工时
  19. 揭秘封包辅zhu外G:利用系统发包函数,定位功能Call(一)
  20. 【DX-BT24蓝牙模块-AT命令与手机透传教程】

热门文章

  1. XMPPFramework开发(四):电子名片
  2. VM虚拟机中鼠标左键点击失效解决方案
  3. PTA L1-059 敲笨钟
  4. c# 调用zebra打印指令 打印到USB端口
  5. 30题前端工程开发师面试题
  6. 有些朋友没看清楚,我在这里再特意强调一下
  7. 【每天听见吴晓波-2016-07-04】上海房价未来五年还会翻番
  8. 共享软件走向海外之路
  9. 基于java家庭理财记账系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  10. 安居客无锡二手房数据获取