• 带你玩转 Redis 的 键(key)命令


    🎨 个人介绍

    👉大家好,我是:知识的搬运工旺仔
    👉认真分享技术,记录学习过程的点滴,如果我的分享能为你带来帮助,请支持我奥🍻

    👉你的支持,是我每天更新的动力。

    👉赞点:👍 留言:✍ 收藏:⭐

    👉个人格言:想法一步一步的落实,才是你我前进最佳选择。

    1. 什么是Reids 的 键命令

    Redis 的键命令。用与管理key 的 增删改查

    2. 查询键

    EXISTS key

    :::success EXISTS 命令:判断键是否存在

    1. key 存在,返回1
    2. key 不存在,返回0 :::

    KEYS pattern

    :::success KEYS 命令:查找键

    1. 用于按照指定的模式pattern 查找所有的key
    2. pattern 类似于正则表达式
    3. KEYS * :表示匹配查找数据库中的所有key
    4. kEYS r?dis :表示匹配 ?位置,任何一个字母,?仅代表任意一个字母,入:redis
    5. kEYS r*dis:表示匹配 位置,任何零个、一个或多个字母、 代表零个或多个,如:rdis、redis、reedis
    6. KEYS r[ae]dis :表示匹配radis 和 redis ,不会匹配别的,只会匹配这两种 :::

    OBJECT subcommand [arguments [arguments] ]

    :::success OBJECT 命令:查看键对象

    1. 用于从内部,查看给定key 的redis 对象,通常用于排错或者节省空间而对key 进行特殊处理

    2. 可以使用OBJECT 命令来决定是否清除key

    3. OBJECT 有如下命令:

      1. OBJECT REFCOUNT key :返回key引用所存储的值的次数,多用于排错
      2. OBJECT ENCODING key :返回 key 所存错的值使用的底层数据结构
      3. OBJECT IDLETIME key :返回key 自存储以来的空闲时间,以秒为单位
    4. Redis有多种编码格式

      1. 针对字符串,可以被编码为raw(一个字符串)或int(会被编码为64为有符号整数编码存储)
      2. 针对列表可以被编码为zipmap或linkedlist。ziplist 表示压缩表,表示占用空间较小的列表
      3. 针对集合可以被编码为intset 或 hashtable。intset只存储数字的小集合的特殊表示
      4. 针对哈希表可以编码为zipmap 或 hashtable。zipmap 是小哈希表的特殊表示
      5. 针对有序集合可以被编码为ziplist 或 skiplist。ziplist 主要用户表示小的有序集合,skiplist 可以表示任意大小的有序集合 :::

    RANDOMKEY

    :::success RANDOMKEY 命令:随机返回一个键

    1. 随机返回一个当前数据库中的一个key ,并且不会删除这个key :::

    3. 修改键

    RENAME key newkey

    :::success RENAME 命令:修改键的名称

    1. 将key 的名称修改为 newkey
    2. key 不存在,返回一个错误
    3. newkey 已经存在,newkey 则会被覆盖 :::

    RENAMWENX key newkey

    :::success RENAMENX 命令:修改键的名称

    1. 仅当newkey 不存在时,才能修改
    2. key 不存在,返回一个错误 :::

    4. 建的序列化

    DUMP key

    :::success DUMP 命令:序列化键

    1. 用户序列化给定的key,并返回被序列化的值

    2. DUMP序列化生成的值具有以下特点

      1. 有64位的校验和,用于检测错误。RESTORE 命令在进行反序列化前,会先检查校验和
      2. 这个值的编码格式和RDB文件编码格式保持一致
      3. RDB 版本会被编码在序列化值中。Redis版本不同,RDB存在不兼容,Redis就无法进行反序列化
      4. 这个序列化的值中没有生存时间值 :::

    RESTORE key ttl serialized-calue [REPLACE]

    :::success RESTORE 命令:对序列化值进行反序列化

    1. 将一个给定的序列化值反序列化,并为它关联给定key
    2. ttl 用与为key 设置生存时间,单位为毫秒
    3. ttl = 0,则不设置生存时间
    4. 在执行反序列化之前,会对序列化的RDB版本和数据校验并进行检查
    5. RDB版本不相同或者数据不完整,反序列化失败RESTORE 拒绝进行反序列化,返回一个错误
    6. key存在,并给定REPLACE 参数,反序列化得出的值会替代key 的旧值
    7. key存在,没有设置REPLACE 参数,则返回一个错误 :::

    5. 键的生存时间

    PTTL key

    :::success PTTL 命令:获取键的生存时间(毫秒)

    1. 以毫秒的形式返回key的剩余时间
    2. key不存在,返回-2
    3. key存在,但是没有设置生存时间,返回-1 :::

    TTL key

    :::success TTL 命令:获取键的生存时间(秒)

    1. 返回key 的生存时间,以秒为单位
    2. key不存在,返回-2
    3. key存在,但是没有设置生存时间,返回-1 :::

    EXPIRE key seconds

    :::success EXPIRE 命令:设置键的生存时间(秒)

    1. 设置key的生存时间,key 的生存时间为 0 时,这个key 将会被删除
    2. DEL 删除 key 的生存空间 和 key
    3. 修改有生存时间的key 的值,可以使用 SET 或 GETSET,这两个命令仅修改值,不影响生存时间
    4. PERSIST 删除key 的生存时间,实现key的持久化
    5. EXPIRE 修改key 的生存时间,旧的生存时间会被新值覆盖
    6. 设置生存时间存在,返回1
    7. key 不存在,或者不能为key设置生存时间(Redis版本过低),则返回 0 :::

    PEXPIRE key milliseconds - timestamp

    :::success PEXPIRE 命令:设置键的生存时间(毫秒)

    1. 以毫秒为单位设置key 的过期时间UNIX 时间戳
    2. 设置生存时间存在,返回1
    3. key 不存在,或者不能为key设置生存时间(Redis版本过低),则返回 0 :::

    6. 键值对操作

    MIGRATE host port key destination-db timeout [COPY] [REPLACE]

    :::success MIGRATE 命令:转移键值对到远程目标数据库

    1. 将key 原子性地从当前数据库转移(复制)到指定目标数据库中

    2. 转移成功,key会出现在目标数据库中,当前数据库中key 会被删除

    3. 因为原子操作,转移和被转移的数据库会被阻塞,直到成功、或失败或达到超时时间

    4. MIGRATE 的实现原理

      1. 源数据库,执行DUMP 命令,将它序列化后,再转移到目标数据库
      2. 目标数据库再使用RESTORE 命令,对数据进行反序列化,把反序列化后的数据保存到数据库中
      3. 源数据库,在遇见目标数据库执行完RESTORE, 返回ok,就会执行DEL 命令,删除key
    5. timeout:设置源数据库和目标数据库转移的最大时间,单位时毫秒

    6. MIGRATE 需要在timeout 时间内完成I/O操作,如果在执行I/O操作出现错误,或者超出timeout 时间范围,就会返回一个特殊的错误IOERR

    7. IOERR 错误的两种情况

      1. 源数据库和目标数据库中可能同时存在key
      2. key 也可能只在源数据库中存在
    8. COPY参数:表示转移之后,不会删除源数据库中的key

    9. REPLACE:表示转移过程会替代目标数据库中已经存在的key :::


    MOVE key db

    :::success MOVE 命令:转移键值对到本地目标数据库

    1. 将当前数据库中的key 转移到指定的数据库db中
    2. key不存在,MOVE 命令什么也不做
    3. 源数据库和目标数据路中存在相同的key ,MOVE没有任何效果 :::

    SORT key [By pattern] {LIMIT offset count] [GET pattern [GET patern…] ] [ASC | DESC] [ALPHA] [STOPE destination]

    :::success SORT 命令:对键值对进行排序

    1. 返回或保存给定列表、集合、有序集合 key 中经过排序的元素
    2. 排序默认时以数字为对象,值会被解释为double 类型的浮点数,然会进行比较 :::

    TYPE key

    :::success TYPE 命令:获取键值对的类型

    1. key 不存在:则返回none
    2. key 所对应的值是字符串类型的,则返回string
    3. key 所对应的值是列表类型的,则返回list
    4. key所对应的值是集合类型的,则返回set
    5. key 所对应的值是有序集合的类型,则返回zset
    6. key 所对应的值是哈希类型的,则返回hash :::

    7. 删除键

    DEL key [key…]

    :::success DEL:删除键

    1. 删除一个或者多个键
    2. key 不存在,会被忽略 :::

    PERSIST key

    :::success PERSIST 命令:删除键的生存时间

    1. 删除key的生存时间,将带有生存时间的 key 持久化 :::

    🎈看完了不妨给我点个赞吧,👉你的支持,是我每天更新的动力…

  • 相关阅读:
    2023高教社杯数学建模C题思路模型 - 蔬菜类商品的自动定价与补货决策
    Spring之Ioc简介说明
    Solidity - 合约结构 - 错误(error)- ^0.8.4版本新增
    java.lang.Float类下floatValue()方法具有什么功能呢?
    MySQL的安装教程(嗷嗷详细,包教包会~)
    python爬取某网站的猫咪销售情况(内置源码)
    LLM下半场之Agent基础能力概述:Profile、Memory、Plan、Action、Eval学习笔记
    SpringBoot-SpringBoot中文文档
    计算机毕业设计Java高校防疫物资管理系统(源码+系统+mysql数据库+lw文档)
    torch.distributed.launch 指定端口rdzv_endpoint
  • 原文地址:https://blog.csdn.net/weixin_46213083/article/details/126372951