zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Redis基础

2023-09-11 14:16:34 时间

Redis的数据结构

 

 

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

 

五种基础数据结构

 

 

Redis的通用命令

 

Redis官网将Redis的命令按照功能划分为15个主题分组,其中,Kyes主题的命令对所有的数据结构都通用,因此,有必要在了解其他数据结构命令前好好学习一下。

 

keys


 

 

keys命令的作用是列出Redis所有的key,该命令的时间复杂度为O(N),N随着Redis中key的数量增加而增加,因此Redis有大量的key,keys命令会执行很长时间,而由于Redis是单线程,某个命令耗费过长时间,则会导致后面的的所有请求无法得到响应,因此,千万不要在生产服务器上使用keys命令。

 

# key命令,时间复杂度为O(n)
keys pattern #pattern可为一个包含匹配模式的字符串,可以包含*,+,?,[a-z]等模式。

 

示例

 

> mset hello_test1>> keys hello*
1"hello_test1"
2"hello_test2"
3"helloa"
4"hellob"
keys heelo?
1"helloa"
2"hellob"
keys hello[a-z]
1"helloa"
2"hellob"


 

exists

 

exists命令用于判断一个或多个key是否存在,判断多个key时,key之间用空格分隔,exists的返回值为整数,表示当前判断有多少个key是存在的。

 

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

 

示例

 

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


 

del

 

del命令用于删除一个或多个key,多个key之间用空格分隔,其返回值为整数,表示成功删除了多少个存在的key,因此,如果只删除一个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设置key在多少秒之后过期,pexpire设置key在多少毫秒之后过期,成功返回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的过期时间,其返回值为整型,代表的意义分为几种情况: