Redis keys命令的具体使用

keys命令:

DEL KEY:该命令用于在key存在时删除key

DUMP KEY:序列化给定key,并返回被序列化的值

序列化:把对象转化为可传输的字节的序列过程称为序列化

反序列化:把字节序列还原为对象的过程称为反序列化

为什么需要序列化?

序列化的最终目的是为了对象可以跨平台传输,和进行网络传输。而我们进行跨平台存储和网络传输的方式就是IO,而IO支持的数据格式就是字节数组。

因为我们单方面的只把对象转成字节数组还不行,因为没有规则的字节数组我们是没办法把对象的本来面目还原回来的,所以我们必须在把对象转成字节数组的时候就制定一种规则,即序列化,那么我们从IO流里面读出数据的时候再以这种规则把对象还原回来,即反序列化。

如果我们·要把一栋房子从一个地方运输到另一个地方去,序列化就是把房子拆成一个个砖块放在车子里,然后保留一张房子原来结构的图纸,反序列化就是我们把房子运输到目的地以后,根据图纸把一个个砖块还原成完整房子的过程。

什么时候使用序列化?

凡是需要进行跨平台存储的网络传输的数据,都需要进行序列化。

本质上存储和网络传输都需要经过把一个对象状态保存成一种跨平台识别的字节格式,然后其它的平台才可以通过字节信息解析还原对象信息

EXISTS KEY:检查给定key是否存在

EXPIRE KEY SECONDS:检查key设置过期时间,以秒计

EXPIREAT KEY TIMESTAMP:EXPIREAT的作用和EXPIRE类似,都用于为key设置过期时间。不同在于EXPIREAT命令接收的时间参数是UNIX时间戳

PERPIRE KEY MILLISECONDS:设置key的过期时间以毫秒计

PERXPIPEAT KEY MILLISECOND-TIMESTAMP:设置KEY过期时间的时间戳-以毫秒计

KEYS PATTERN:查找所有符合给定模式的key

MOVE KEY DB:将当前数据库的key移动到给定的数据库db中

PERSIST KEY:移除key的过期时间,key将持久保持

TTL KEY:以秒为单位,返回给定KEY的剩余生存时间

RANDOMKEY:从当前数据库中随机返回一个key

RENAME KEY NEWKEY:修改key的名称

RENAMENX KEY NEWKEY:仅当newkey不存在时,将key改名为newkey

SCAN CURSOR [MATCH pattern][COUNT count]:迭代数据库中的数据库键

Redis Scan 命令用于迭代数据库中的数据库键。

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

SCAN 返回一个包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标, 而第二个元素则是一个数组, 这个数组中包含了所有被迭代的元素。如果新游标返回 0 表示迭代已结束。

相关命令:

SSCAN命令用于迭代集合键中的元素。HSCAN命令用于迭代哈希键中的键值对。ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。

TYPE KEY:返回key所存储类型的值的类型

到此这篇关于Redis keys命令的具体使用的文章就介绍到这了,更多相关Redis keys命令内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Redis命令使用技巧之Keys的相关操作

    前言 介绍完Redis连接相关命令后,再来介绍一下与Key相关的命令,Redis作为一个key-value数据库,对Key进行操作是无法避免的. KEYS 的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特定的 key ,你最好还是用 Redis 的集合结构(set)来代替. DEL 最早可用版本1.0.0 删除指定的键值对,如果指定的key不存在,则忽略.DEL命令的时间复杂度是O(N),对于除字符串外的其他数据类型,命令的时间复杂度为O(M),M是值

  • redis keys与scan命令的区别说明

    redis keys和scan的区别 redis的keys命令,通常在用来删除相关key时使用,但这个命令有一个弊端,在redis拥有数百万及以上的keys时,执行速度会比较慢,更致命的是,这个命令会阻塞redis多路复用的io主线程,如果这个线程阻塞,在此期间,其他发向redis服务端的命令,都会被阻塞,从而引发一系列级联反应,导致瞬间相应卡顿,从而引发超时等问题,所以应该在生产环境禁止用使用keys和类似的命令smembers,这种时间复杂度为O(N),且会阻塞主线程的命令,是非常危险的.

  • 浅谈Redis的keys命令到底有多慢

    keys命令的用法: keys pattern 查找符合正则匹配的key的列表.扫描对象是Redis服务中所有的key,想想都很慢对不对? 同时执行keys命令的同时,Redis进程将被阻塞,无法执行其他命令,假如超过了哨兵的down-after-milliseconds配置,还会进行主从切换,切换过程中,如果主节点恢复正常,还可能出现脑裂等一系列问题. 所以,生产环境中,建议直接禁用keys命令. Keys命令的替代方案 1.scan扫描,避免阻塞 2.将需要统计的数据放入一个set中 (但是

  • Redis的KEYS 命令千万不能乱用

    KESY 命令 时间复杂度: O(N) , 假设Redis中的键名和给定的模式的长度有限的情况下,N为数据库中key的个数. Redis Keys 命令用于查找所有符合给定模式 pattern 的 key 尽管这个操作的时间复杂度是 O(N), 但是常量时间相当低.例如,在一个普通笔记本上跑Redis,扫描100万个key只要40毫秒. 命令格式 KEYS pattern Warning: 生产环境使用 KEYS 命令需要非常小心.在大的数据库上执行命令会影响性能.这个命令适合用来调试和特殊操作

  • Redis遍历所有key的两个命令(KEYS 和 SCAN)

    当我们需要遍历Redis所有key或者指定模式的key时,首先想到的是KEYS命令: KEYS pattern 官网对于KEYS命令有一个提示:  KEYS 的速度非常快,例如,Redis在一个有1百万个key的数据库里面执行一次查询需要的时间是40毫秒 .但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特定的  KEYS , 你最好还是用 Redis 的集合结构  SETS  来代替. KEYS命令使用很简单. redis> MSET one 1 two 2 thr

  • Redis keys命令的具体使用

    keys命令: DEL KEY:该命令用于在key存在时删除key DUMP KEY:序列化给定key,并返回被序列化的值 序列化:把对象转化为可传输的字节的序列过程称为序列化 反序列化:把字节序列还原为对象的过程称为反序列化 为什么需要序列化? 序列化的最终目的是为了对象可以跨平台传输,和进行网络传输.而我们进行跨平台存储和网络传输的方式就是IO,而IO支持的数据格式就是字节数组. 因为我们单方面的只把对象转成字节数组还不行,因为没有规则的字节数组我们是没办法把对象的本来面目还原回来的,所以我

  • Redis 不使用 keys 命令获取键值信息的方法

    1. 问题来源 这个问题可能看起来很奇怪,但很多 redis 集群会有一个统一的入口,入口会作兼容 redis 命令的代理,一般出于新能考虑是禁止使用 keys 命令来获取键值信息的,但是可以通过 scan 命令来代替 keys 2. 使用 keys 的方法 127.0.0.1:6379> KEYS * 1) "_kombu.binding.test_queue" 2) "a8e620b9-e52e-3498-8a1c-448f35783058" 3) &qu

  • Redis禁用命令、危险命令及规避方法

    FLUSHALL FLUSHDB 命令会清空数据,而且从不失败,对于线上集群非常危险. KEYS * 命令,当数据规模较大时使用,会严重影响Redis性能,也非常危险. 如果从根本上规避这些风险呢? Redis提供了非常简单且有效的方法,直接在配置文件中设置禁用这些命令.设置非常简单,如下 复制代码 代码如下: rename-command FLUSHALL "" rename-command FLUSHDB "" rename-command KEYS "

  • 详解Redis SCAN命令实现有限保证的原理

    SCAN命令可以为用户保证:从完整遍历开始直到完整遍历结束期间,一直存在于数据集内的所有元素都会被完整遍历返回,但是同一个元素可能会被返回多次.如果一个元素是在迭代过程中被添加到数据集的,又或者是在迭代过程中从数据集中被删除的,那么这个元素可能会被返回,也可能不会返回. 这是如何实现的呢,先从Redis中的字典dict开始.Redis的数据库是使用dict作为底层实现的. 字典数据类型 Redis中的字典由dict.h/dict结构表示: typedef struct dict { dictTy

  • redis常用命令整理

    一.key 相关: (1)redis允许模糊查询 key(keys *) 有3个通配符 *.?.[] (2)randomkey:返回随机key (3)type key:返回key存储的类型 (4)exists key:判断某个key是否存在 (5)del key:删除key FLUSHALL: 删除所有key(慎用) 二.数据操作: Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及 zset(sorted set:有序集合). 1.stri

  • Redis Scan命令的基本使用方法

    1. 概述 SCAN 命令以及比较相近的 SSCAN.HSCAN 和 ZSCAN 命令都用于增量迭代数据集元素: SCAN 命令用于迭代当前数据库中的数据库键. SSCAN 命令用于迭代集合(Set)中的元素. HSCAN 命令用于迭代哈希(Hash)中的字段以及对应的值. ZSCAN 命令用于迭代有序集合(Sorted Set)中的元素以及对应的得分. 由于这些命令都可以增量迭代,每次调用都只会返回少量元素,所以这些命令可以用于生产环境中,不用担心像使用 KEYS.SMEMBERS 命令带来的

  • PHP操作Redis常用命令的实例详解

    redis常用命令有: 1.连接操作命令: 2.持久化命令: 3.远程服务控制命令: 4.对value操作命令:5.string命令: 6.list命令: 7.set命令: 8.hash命令等等. Redis 常用命令 登录 redis-cli -p 5566 -a password 检查key是否存在 EXISTS key 搜索某关键字 KSYS *4 返回一个Key所影响的vsl的类型 TYPE key 下面通过代码看下PHP操作Redis命令,代码如下所示: //连接本地的 Redis 服

随机推荐