Redis——常用指令汇总指南(一)

发布于:2025-07-03 ⋅ 阅读:(23) ⋅ 点赞:(0)

目录

1.set & get

①set指令

②get指令

2.keys

3.del

4.expire & setex & psetex

5.ttl

6.exists

7.setnx

8.flushall

 9.object encoding

10. type


1.set & get

        set & get指令中key和value都是字符串,但是不需要加单引号或双引号。

        需要补充的是我们输入的value对于redis服务器而言是字符串,但是在存储时服务器会按内容找合适的类型存储。比如说当value是hello时,redis直接按短字符串(embstr)存;而value是数字时,redis服务器会把字符串转化为对应整数类型(int)存储。

①set指令

        set用于设置key和value对应关系。使用时一个key只能对应一个value,其用法如下:

set  key  value  [ex t | px t]  [nx | xx] 

        举例如下(未加可选字段):

        可选字段中ex和px用于设置过期时间,类比expire指令;ex以秒为单位,px以毫秒为单位。 

 使用时操作如下:

        可选字段nx代表当前数据库中该key不存在时,可以设置该KV并返回1,若key已存在则不设置并返回0。xx与nx正相反,若数据库中key存在则设置value并返回1,若key不存在则不设置并返回0。

        简单说就是nx用于创建KV,xx用于更新KV。举例如下:

         当然,对同一个key进行多次set会更新对应value:

②get指令

        get是根据key来获取value。其用法如下:

get  key

        返回:当KV映射关系存在时,自然是返回对应的value;当redis中没有此映射时会返回nil,即空,可以类比C++中的NULL。需要注意的是,get要求value必须是string类型,否则报错。

        当存在对应KV映射时, 返回对应的value :

        当不存在对应KV映射时,返回nil:

        当value非string类型时,报错: 

2.keys

        keys指令用于查询key值,其使用方式如下:

keys  pattern

        所谓pattern就是描述我想查询的key是什么样。如果是某个具体的key,那直接传名字就好;如果是范围查询,那就通过通配符进行模糊匹配。

常见的通配符如下:

通配符 含义 使用方式 可匹配示例
? 匹配任意一个或零个字符 keys   ap?le apple  aple
* 匹配任意多个字符 keys   a*le apaale apable
[^ae] 排除字符a和e keys   ap[^p]le aple apple
[a-e] 匹配a到e范围内的任意一个字符 keys   ap[a-z]le apale apele
[acexz] 只能匹配acexz中任意一个字符 keys   ap[puqt]le apple  app

示例如下: 

        这里我们需要重点强调一下,keys * 操作可以查询当前Redis中所有的key,但是,在实际工作中,keys *极其危险。因为这是一个o(n)的操作,而Redis是一个单线程服务器,所以当Redis中有大量的key时,进行全局查询势必会消耗大量时间,影响其他客户端的操作请求,尤其是在生产环境中,这可能造成灾难性的后果。比如说,当进行keys *操作后,其他客户端随后访问Redis而发生超时,那么就会直接访问mysql,但mysql运载能力有限,若访问量太大很有可能直接就崩了。

3.del

        del指令用于删除指定的KV键值对。在使用时可以一次性删除多个key。

del  key1  key2  ...

       返回值是本次操作所删key的个数。

        对于del需要说明的是,相比于mysql数据库,对Redis中的数据发生del误操作的后果并没有那么重,因为Redis可以理解为是mysql中部分数据在内存中的拷贝,只要“根基”还在就能恢复。当然,对任何数据库中数据进行删除都应三思后行。

4.expire & setex & psetex

        ①expire指令用于设置特定key的过期时间。设置成功返回,失败返回0.

        ②setex指令是在设置KV时直接指定过期时间(秒为单位)。类比set的ex可选字段。

        ③psetex指令与setex相同,但过期时间以毫秒为单位。

expire  key  time

setex  key  time  vlaue   #一定要注意time 在前value在后

psetex  key  time  value

        使用示例如下: 

         相比而言,setex和psetex用于既需要更新过期时间又需要更新(或创建KV)value的场景,而expire用于更新过期时间但不需要更新value的场景。

5.ttl

        ttl指令用于查询特定key的过期时间。

        返回值有三种类型,返回0及以上正数代表剩余时间,返回-2代表已经过期,返回-1代表所查询的key没有设置过期时间。

ttl  key

        使用示例如下:

6.exists

        exists指令用于查询key在数据库中是否存在,查询的时间复杂度是o(1)。该指令支持批量查询,可一次性查询多个key。其返回值是所查询到存在的key的数量。

exists  key1  key2  ...

        使用示例如下: 

7.setnx

        setnx指令即set指令+可选字段nx,用于确保所设置的KV在指令之前不存在。

        当setnx执行成功时会返回1,失败则返回0。

setnx  key  value

使用示例如下:
 

8.flushall

flushall指令一键删除所有键值对。用前三思哦~

flushall 

 9.object encoding

该指令用于查询value的编码方式。(而非类型,类型用type查)

object encoding key

使用示例如下: 

10. type

用于查询value的类型。

type  key

使用示例如下: 


如有错误,敬请斧正