Redis-----通用命令(keys, exists, del, expire, ttl, type)

一. 前言.

1.1 通用命令

  • 定义: Redis的通用命令是指那些不特定于某种数据类型,而是可以在多种数据类型上使用的命令

1.2 Redis常用的数据类型

1.2.1 String(字符串)

  • String是最基本的数据类型于存储二进制安全的字符串,可以包含任何类型的数据,如文本、数字、图片等。
  • 内部实现主要采用简单动态字符串(SDS)或整数(int)来存储。

1.2.2 List(列表)

  • List是一个简单的字符串列表,按照插入顺序排序。它可以作为一个队列(先进先出)或者栈(后进先出)来使用。
  • 内部实现主要是双向链表(LinkedList)或压缩列表(ZipList),在Redis 3.2之后引入了快速列表(QuickList)作为List的底层实现。

1.2.3 Set(集合)

  • Set是一个无序的字符串集合,不允许有重复元素
  • 内部实现主要是哈希表(Hashtable)。

1.2.4 Hash(哈希)

  • Hash是一个键值对集合,其中的键和值都是字符串。
  • 内部实现根据存储的元素数量和大小,可能会使用压缩列表(ZipList)或哈希表(Hashtable)。

1.2.5 Zset(有序集合)

  • Zset是Redis的一个特殊类型,可以存储一个字符串成员(member)与之关联的浮点数分数(score),通过分数来为集合中的成员进行从小到大的排序。
  • 内部实现主要使用跳跃表(SkipList)和哈希表(Hashtable)。

二. 通用命令

2.1 keys

  • 在Redis中,KEYS命令用于查找所有符合给定模式(pattern)的键(key)。这个命令非常强大,但因为它会扫描数据库中所有的键,所以在使用时需要特别小心,特别是在包含大量键的数据库中,因为它可能会导致性能问题。
  • 基本格式:

KEYS pattern

  • 所支持的基本查询格式:
    在这里插入图片描述
  • 命令使用演示:
    在这里插入图片描述

2.2 exists

  • 在 Redis 中,EXISTS 是一个用于检查键是否存在的命令。如果指定的键存在,则返回 1;否则返回 0。

  • 基本格式:

EXISTS key [key …]

  • 命令使用演示:
    在这里插入图片描述

2.3 del

  • 在Redis中,DEL 命令用于删除一个或多个指定的键(key)。如果键不存在,则忽略该操作。如果键存在,则删除该键以及与之相关联的值。DEL 命令是一个通用的删除命令,可以用于删除任何类型的键,包括字符串(strings)、列表(lists)、集合(sets)、有序集合(sorted sets)和哈希表(hashes)等。
  • 基本格式:

DEL key [key …]

  • 命令使用演示:
    在这里插入图片描述

2.4 expire(pexpire)

  • 在Redis中,EXPIRE 命令用于为存储在Redis数据库中的键(key)设置过期时间。一旦键的过期时间到达,该键及其关联的值将自动被Redis删除(但请注意,删除操作可能是惰性的或定期的,具体取决于Redis的过期策略)。
  • 基本格式:

EXPIRE key seconds [NX | XX | GT | LT]
NX、XX、GT、LT 这些选项在 EXPIRE key seconds 命令中并不直接适用。它们通常与Redis的其他命令或功能相关联,用于提供额外的条件控制。在设置键的过期时间时,你可以使用 EXPIRE 命令直接为键设置过期时间(以秒为单位),而不附加这些条件选项。

  • 命令使用演示:
    在这里插入图片描述

2.4.1 key的过期策略是什么?(经典面试题)

  1. 定期删除:Redis会在后台线程中设置一个定期任务,用于扫描和删除过期键。这个任务会在特定的时间间隔内执行,默认每100毫秒运行一次。在每次定期任务执行时,Redis会从已设置过期时间的键中随机抽取一部分键进行检查,而不是一次性检查所有键。~~ 保证这个抽取检查的过程,足够快!! 因为redis是单线程的程序, 主要的任务(处理每个命令的任务, 刚才扫描过期key…). 如果扫描过期key消耗的时间太多,就可能导致正常处理请求命令就被阻塞了
  2. 惰性删除: 在取出键时才对键进行过期检查,如果发现键已经过期,则删除该键。用到的时候才删
  3. 内存淘汰策略.当Redis服务器占用的内存数超过了maxmemory选项所设置的上限值时,会触发内存淘汰策略。

2.5 ttl

  • 在Redis中,TTL(Time To Live)命令用于获取存储在Redis数据库中的某个键(key)的剩余生存时间(TTL, time to live),这个时间是以秒为单位的。简单来说,TTL命令会告诉你一个键在多少秒后会被自动删除(如果它设置了过期时间的话)。
  • 基本格式:

TTL key

  • 命令使用演示:
    在这里插入图片描述

2.6 type

  • TYPE命令接受一个键(key)作为参数,并返回该键存储的值的数据类型。Redis支持多种数据类型,包括字符串(string)、列表(list)、集合(set)、有序集合(zset,也称为sorted set)、哈希(hash)以及流(stream,在Redis 5.0及更高版本中引入)。如果指定的键不存在,TYPE命令将返回none。
  • 基本格式:

TTL key

  • 命令使用演示:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值