Redis键(Keys)

打印 上一主题 下一主题

主题 1712|帖子 1712|积分 5136

媒介

在 Redis 中,键(Keys)是非常紧张的概念,它们代表了存储在数据库中的数据的标识符。对键的有用管理和操作是使用 Redis 数据库的关键一环,它直接影响到数据的存取效率、系统的稳固性和开发的便利性。
本文将深入探究 Redis 中键的管理和操作,包罗键的命名规范、常用的键操作下令以及一些最佳实践。我们将详细先容怎样公道命名键、怎样使用键的过期和持久化特性、怎样批量删除键等技巧,旨在资助读者更好地理解并机动运用 Redis 中的键,从而进步数据管理和操作的效率和可靠性。
Redis键是二进制安全的,这意味着你可以使用任何二进制序列作为键,从像”foo” 如许的字符串到一个 JPEG文件的内容。空字符串也是正当的键。

一、键的一些设计规则



  • 不要使用太长的键。比方,不要使用一个1024字节的键,不但是由于占用内存,而且在数据集中查找key时需要多次耗时的key比力。
  • 不要使用太短的key。比方,user:1001比u1001更具有现实意义,相对于key自己以及value对象来说,增长的空间微乎其微。当然,短的键会消耗少的内存,需要找到平衡点。
  • 规范一种模式 (schema)。用冒号大概下横线来连接多单词字段,比方:”user:1001”大概"user_1001"。

二、Key的常用API

1、KEYS 返回指定pattern的全部key

  1. 语法:keys pattern
复制代码

  1. MSET user:1001 user1 user:1002 user2 addr:1001 guangzhou addr:1002 zhuhai
复制代码
  这条下令将会把以下键值对设置到 Redis 中:
  

  • 键 "user:1001" 对应的值为 "user1"
  • 键 "user:1002" 对应的值为 "user2"
  • 键 "addr:1001" 对应的值为 "guangzhou"
  • 键 "addr:1002" 对应的值为 "zhuhai"
  通过如许的方式,你可以一次性地设置多个键值对,这在某些场景下可以进步效率。
    "KEYS" 下令用于搜索并返回与给定模式匹配的键名列表。在你的例子中,你使用了以下下令:
  

  • "KEYS user*":返回全部以 "user" 开头的键名列表。
  • "KEYS addr*":返回全部以 "addr" 开头的键名列表。
  • "KEYS *":返回全部键名的列表。
  需要注意的是,"KEYS" 下令在 Redis 中是一个相对较慢的操作,特别是当 Redis 有大量键时。它会遍历整个键空间来匹配模式,并返回匹配的键名列表。因此,在生产情况中使用 "KEYS" 下令要谨慎,以免对 Redis 性能造成影响。
  2、EXISTS 判断一个key是否存在。存在返回后1,否则返回0。

  1. 语法:exists key
复制代码

   "EXISTS user:1001" 下令用于检查键名为 "user:1001" 的键是否存在。
  执行该下令后,如果键 "user:1001" 存在,下令将返回 1;如果键不存在,下令将返回 0。
  这个下令通常用于检查某个键是否存在,以便进行相应的处理或判断条件。
   
  3、RENAME 重命名key

  1. 语法:rename key newkey
复制代码

   "RENAME user:1001 user_1001" 下令的作用是将键名为 "user:1001" 的键重命名为 "user_1001"。
  执行该下令后,原来的键名 "user:1001" 将被修改为 "user_1001",但是键的值不会发生变化。如许可以通过修改键名来更好地构造和管理键的聚集。
  需要注意的是,如果在执行重命名操作时,新的键名已经存在,则新的键名对应的值将被覆盖。以是请确保新的键名不会与其他键名冲突。
  4、TYPE  根据key返回value的范例。

  1. 语法:type key
复制代码

   "TYPE user:1002" 下令用于获取键名为 "user:1002" 的键存储的值的数据范例。
  该下令返回的效果可能是以下几种数据范例之一:
  

  • "string":表示存储的值是字符串范例。
  • "list":表示存储的值是列表范例。
  • "set":表示存储的值是聚集范例。
  • "zset":表示存储的值是有序聚集范例。
  • "hash":表示存储的值是哈希范例。
  • "none":表示键不存在。
  执行 "TYPE user:1002" 下令后,返回的效果将是上述数据范例之一,指示键存储值的范例。如果键不存在,则返回 "none"。
   
  5、EXPIRE

  1. 语法:expire key seconds
复制代码
设置key的生存时间。Redis的数据是缓存在内存中的,然后很多时间数据一样平常都会设置一个过期时间(即到期后销毁数据,从而释放更多的内存)。过期时间默认以秒为单元,默认值为-1,表示永不外期。

   "EXPIRE user:1002 3600" 下令的意思是将键名为 "user:1002" 的键设置为具有过期时间。该键将在 3600 秒(即 1 小时)后自动过期并被删除。
  这条下令用于设置键的过期时间,让键在肯定时间后自动失效。在上述例子中,执行下令后,键 "user:1002" 将在 1 小时后自动过期。
  当键过期时,它将从 Redis 中自动删除,这可以用于在缓存数据或临时数据中设置一个固定的有用期。
  也可以在设值的时间指定过期时间(秒)

   

  • SET user:1001 user1 EX 1000" 下令的意思是将键名为 "user:1001" 的键设置为值 "user1",并设置其过期时间为 1000 秒。这意味着在 1000 秒后,Redis 将自动删除这个键。
  • "TTL user:1001" 下令用于获取键名为 "user:1001" 的键的剩余过期时间(Time To Live,以秒为单元)。如果键存在且具有设置的过期时间,下令返回键的剩余过期时间;如果键不存在大概没有设置过期时间,下令返回 -1。如果键已颠末期,下令返回 -2。
  因此,执行完 "SET user:1001 user1 EX 1000" 后,可以通过 "TTL user:1001" 下令来查询键 "user:1001" 的剩余过期时间,以相识该键间隔过期尚有多长时间。
  这些下令通常用于对某些数据进行临时性存储或缓存,并检查该数据是否已颠末期。
  6、TTL 查看key剩余的过期时间。

  1. 语法:ttl key
复制代码

    "TTL user:1001" 下令用于获取键名为 "user:1001" 的键的剩余过期时间(Time To Live,以秒为单元)。
  如果键存在且具有设置的过期时间,下令返回键的剩余过期时间;如果键不存在大概没有设置过期时间,下令返回 -1。如果键已颠末期,下令返回 -2。
  这个下令通常用于检查某个键是否尚有剩余的过期时间,以及相识数据的实效性。
  7、PERSIST 扫除key的过期时间。

  1. 语法:persist key
复制代码

    "ERSIST user:1002" 这条下令的意思是将键名为 "user:1002" 的键的过期时间移除,使其永久生存在 Redis 中,不再具有过期时间。
  "TTL user:1002" 下令用于获取键名为 "user:1002" 的键的剩余过期时间(Time To Live,以秒为单元),与之前提到的功能相同。
  如果键存在且具有设置的过期时间,"TTL user:1002" 下令返回键的剩余过期时间;如果键不存在大概没有设置过期时间,下令返回 -1。如果键已颠末期,下令返回 -2。
  因此,当你执行 "ERSIST user:1002" 下令后,键 "user:1002" 将不再具有过期时间,成为永久生存的键,除非你手动删除它。
   8、PEXPIRE 以毫秒为单元设置key的过期时间。

  1. 语法:pexpire key
复制代码
设置键名为 "user:1002" 的键在 60 毫秒后过期。换句话说,60 毫秒后 Redis 将自动删除这个键。 

也可以在设值的时间指定过期的时间(毫秒)  

    "SET user:1001 user1 PX 10000" 这条下令的意思是将键名为 "user:1001" 的键设置为值 "user1",并设置其过期时间为 10000 毫秒(即 10 秒)。在 10 秒后,Redis 将自动删除这个键。
  "TTL user:1001" 下令用于获取键名为 "user:1001" 的键的剩余过期时间(Time To Live,以秒为单元)。如果键存在且具有设置的过期时间,下令返回键的剩余过期时间;如果键不存在大概没有设置过期时间,下令返回 -1。如果键已颠末期,下令返回 -2。
  
三、使用 redis keys有什么利益

 使用 Redis 的 KEYS 下令有以下几个利益:

  • 模式匹配:KEYS 下令可以根据指定的模式来搜索并返回与之匹配的键名列表。这对于需要按照特定模式进行键名查询或操作的情况非常有用。比方,你可以使用 KEYS user:* 来获取全部以 "user:" 开头的键。
  • 批量操作:通过获取符合特定模式的键名列表,你可以方便地对这些键进行批量操作。比方,你可以使用 DEL 下令删除匹配的键,大概使用 GET 下令获取匹配的键的值。
  • 快速检索:当你需要快速检索某个特定模式的键时,KEYS 下令可以提供一个简朴的方式。你可以使用通配符来匹配键名,以获取所需的键列表。
需要注意的是,KEYS 下令在处理大量键时可能会对 Redis 服务器的性能产生影响。因此,在生产情况中,如果只需要获取匹配的键名数量大概进行遍历操作,更好的选择是使用 SCAN 下令,它以游标方式渐渐迭代键空间,避免对服务器性能造成负担。
总体而言,KEYS 下令在特定的使用场景下是非常方便的,但需要谨慎使用以避免对 Redis 性能产生不利影响。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表