Redis基础掌握后端开发:数据结构和常用命令
Redis数据结构和常用命令
。
Redis数据结构
Redis
支持多种不同的数据结构,包括5种基本数据结构和几种较为复杂的数据。这些数据结构可以满足不同的应用场景。
五种基本数据结构
String
:字符串,是构建其他数据结构的基础Hash
:哈希列表列出它
:设置,实现在排序集
:有序集
复杂的数据结构
位图可以在位图的基础上制作,实现节省空间的数据结构。
Hyperloglog
:用于估计集合中元素数量概率的数据结构。Geo
:地理空间,地理空间索引半径查询。BloomFilter
:布隆过滤器。不同数据结构值之间的相似之处可以抽象为:Redis数据结构由组成,
的值是所有数据结构的合法结构。不同数据结构的区别在于
value
中存储的值不同。例如,最简单的字符串数据结构,其值为string,因此string可以表示为:
而哈希数据结构,其值为哈希列表,因此哈希可以表示为:
这是它:列出要声明的字符串和哈希。更多数据结构的内部结构和详细操作我们会在后面的文章中讲到。
Redis通用命令
Redis
官网将Redis
的命令按照功能分为15个主题组。其中,Kyes
主题的命令适用于所有数据结构,都是通用的,所以在了解其他数据结构命令之前有必要先研究一下它们。命令keys
keys
用于列出Redis♝的所有
keys
。该命令的时间复杂度为O(N ),N随着键❀❿❿的数量增加而增加,因此
Redis
有大量的按键,keys命令执行时间会很长,而且因为
Redis有些命令执行时间过长。 ,所有后续请求将不会得到答复。因此,不要在生产服务器上使用它 使用命令
keys
。 X 示例 iExistSexistS
命令用于判断一个或多个键是否存在,并分别评估多个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命令用于获取密钥的过期时间。返回值是一个整数,代表几种情况:
- 如果key不存在或超时,则返回-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
确定键是什么类型的数据结构。返回值为
string
、list
、set 、❀❓、❀❓ 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前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。