Code前端首页关于Code前端联系我们

Redis基础掌握后端开发:数据结构和常用命令

terry 2年前 (2023-09-25) 阅读数 47 #后端开发

Redis数据结构和常用命令

Redis数据结构

Redis支持多种不同的数据结构,包括5种基本数据结构和几种较为复杂的数据。这些数据结构可以满足不同的应用场景。

五种基本数据结构

  1. String:字符串,是构建其他数据结构的基础
  2. Hash:哈希列表

    列出它 :设置,实现在

  3. 排序集:有序集

复杂的数据结构

  1. 位图可以在位图的基础上制作,实现节省空间的数据结构。
  2. Hyperloglog:用于估计集合中元素数量概率的数据结构。
  3. Geo:地理空间,地理空间索引半径查询。
  4. BloomFilter:布隆过滤器。不同数据结构值之间的相似之处可以抽象为:后端开发应该掌握的Redis基础:数据结构和通用命令

    Redis数据结构由组成,的值是所有数据结构的合法结构。不同数据结构的区别在于value中存储的值不同。

    例如,最简单的字符串数据结构,其值为string,因此string可以表示为: 后端开发应该掌握的Redis基础:数据结构和通用命令

    而哈希数据结构,其值为哈希列表,因此哈希可以表示为: 后端开发应该掌握的Redis基础:数据结构和通用命令

    这是它:列出要声明的字符串和哈希。更多数据结构的内部结构和详细操作我们会在后面的文章中讲到。

    Redis通用命令

    Redis官网将Redis的命令按照功能分为15个主题组。其中,Kyes主题的命令适用于所有数据结构,都是通用的,所以在了解其他数据结构命令之前有必要先研究一下它们。命令

    keys

    keys用于列出Redis♝的所有keys。该命令的时间复杂度为O(N )N随着键❀❿❿的数量增加而增加,因此Redis有大量的按键,keys命令执行时间会很长,而且因为Redis有些命令执行时间过长。 ,所有后续请求将不会得到答复。因此,不要在生产服务器上使用它 使用命令 keys。 X 示例 iExistS

    existS 命令用于判断一个或多个键是否存在,并分别评估多个 Key,❀ 的返回值是一个瞬间, 许多Keys 目前评估为存在。

    # exists命令,时间复杂度O(1)
    exists key [key ...]
    复制代码

    示例

    > set test1 t1
    > exists test1 test2 
    (integer) 1 #只有一个key存在
    > exists test3 test3
    (integer) 0 #key都不存在
    复制代码

    del

    del命令用于删除一个或多个。多个以空格分隔。返回值为整数,表示成功删除了多少个现有的keys。因此,如果只删除一个key,可以从返回值判断是否成功。如果移除更多的key,则只能得到成功病变的数量。 。

    # del命令,时间复杂度O(n)
    del key [key ...]
    复制代码

    示例

    > set test t
    > del test
    (integer) 1
    > mset test1 2 test2 1
    > del test1 test2 test3
    (integer) 2 # 返回2,表示成功删除两个
    #再次删除,返回0,因为删除成功个数为0
    > del test1 test2 test3
    (integer) 0
    复制代码

    expire,pexpire

    expire 设置密钥过期的秒数,Pexpire 设置密钥过期的毫秒数。如果成功则返回 1,如果失败则返回 0。

    # expire命令,时间复杂度为O(1)
    expire key seconds
    
    # pexpire命令,时间复杂度为O(1)
    pexpire key milliseconds
    复制代码

    示例

    > mset test test_value test1 test1_value
    > expire test 10 #设置10秒后过期
    (integer) 1
    > pexpire test1_value 10000 #设置10000毫秒(10s)后过期
    (integer) 1
    > expire ttt 100
    (integer) 0 # 不存在的key,设置失败,返回0 
    复制代码

    ttl,pttl

    ttl和pttl命令用于获取密钥的过期时间。返回值是一个整数,代表几种情况:

    1. 如果key不存在或超时,则返回-2。
    2. 如果密钥存在且永久有效,则返回-1。 ?时间戳已过期。 expreat参数timestamp以秒表示,而pepireat以毫秒表示。它具有与expire和pexpire类似的功能。返回 1 表示成功,0 表示失败。
      #expireat命令,时间复杂度为O(1)
      expireat key timestamp
      
      #pexpireat命令,时间复杂度为O(1)
      pexpireat key milliseconds-timestamp
      复制代码

      示例

      > set test test
      > expireat test 1560873600 # 2019-06-19 00:00:00
      (integer) 1
      > set test1 test1
      > pexpireat test1 156087360000 # 2019-06-19 00:00:00的毫秒表示
      (integer) 1
      复制代码

      persist

      删除密钥的过期时间,并将密钥设置为永久有效。如果设置了key的过期时间,则使用persist命令将其删除并返回1。如果key不存在或永久有效,则返回0。

      # persist命令,时间复杂度O(1)
      persist key
      复制代码

      示例

      > set test test
      > ttl test
      (integer) -1 # 表示永久有效
      > persist test
      (integer) 0 # 对永久有效或不存在的key使用persist命令,返回
      > expire test 10
      (integer) 1
      > persist test
      (integer) 1
      复制代码

      type

      确定键是什么类型的数据结构。返回值为 stringlistset 、❀❓、❀❓ zset ,分别是五种基本数据结构我们之前介绍过的Redis

      geo、hyperlog、bitmap 等复杂数据结构都是在这五种基本数据结构之上实现的。例如,geo 是 zset 类型,hyperloglog 和 bitmaps 都是字符串。

      # type命令,时间复杂度O(1)
      type key
      复制代码

      示例

      > set test test
      > type test
      string
      > hset htest test test
      > type htest
      hash
      复制代码

      总结

      上面介绍了Redis中最常用的通用命令。虽然简单,但是掌握它的使用以及使用中需要注意的问题还是非常有必要的。其实对于普通开发者来说,很多时候就只是用这些基本常用的命令来操作Redis

      作者:张俊红
      链接:https://juejin.im/post/5d078cd6f265da1b8466e62c
      来源:掘金归作者所有。如需商业转载,请联系求作者授权。非商业转载请来源。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门