目录
一、Redis客户端概述
二、Redis常用命令
2.1 set命令
2.2 get命令
2.3 keys命令
2.4 exists命令
2.5 del命令
2.6 expire命令
2.7 ttl命令
2.8 type命令
三、小结
一、Redis客户端概述
redis是一种客户端-服务器结构的程序,其核心设计围绕着一个独立的服务器进程与多个客户端之间的通信展开。开发人员通过在redis客户端上使用命令操作数据与redis服务器进行通信,以此来进行数据存储与访问的操作。
常见redis客户端有三种形式:
- 自带命令行的客户端(通常是使用redis-cli命令进入redis客户端)
例如在linux操作系统进入redis客户端:
- 图形化界面的客户端(桌面程序/web程序)
- 基于redis的api自行开发的客户端
由于这种情况要根据具体的业务开发客户端,此处就不举例说明了。
在日常的开发中,使用命令行和自行开发的情况较多,相反,使用图形化界面的情况就较少。那么有的小伙伴就会问了,图形化界面不应该更加方便,更有利于开发人员使用嘛?
此处的回答是,使用起来方便是方便,但图形化界面的客户端依赖Windows操作系统,那么在开发的过程中连接redis服务器就会有诸多限制,例如此过程要经过一系列跳板机、堡垒机,并且还存在权限的验证,这样反而降低了开发效率。
二、Redis常用命令
进入到自带命令行的redis客户端后,如何来操作数据,以下8种是开发过程中常用的通用命令:
2.1 set命令
▶️语法结构:SETkeyvalue
前面的文章中提到,redis中的数据是以键值对的形式存储的,key为键,value为值。当执行成功会返回OK,失败则返回(nil),此处的nil与java语法中的null意义相同,都表示空值或不存在。
📌实操过程如下:
从图中的命令和语法结构的大小写可以观察到,redis命令是不区分大小写的,和mysql等数据库相似。那么存储成功的数据到哪里查看是否真的存好了呢,就需要使用到接下来的get或keys命令了。
2.2 get命令
▶️语法结构:GETkey
想要访问某个键值对的value值,在get命令后加上键值就可以。若key值存在则返回key对应的value值,若不存在,则返回nil。
时间复杂度:O(1) ,因为redis存储数据和hash表相似,都是通过一系列计算得到相应的下标,故时间复杂度为O(1)。
📌实操过程如下:
1.key存在时
2.key不存在时
2.3 keys命令
▶️语法结构:KEYSpattern
keys命令的作用是查找包含指定字符串的key,而pattern是用来描述指定字符串的子句,例如要查询以h开头,后面任意个任意字符的,llo结尾的key值,此时的pattern就可以写作h*llo。如果找得到,则返回所有符合条件的key值;如果找不到,则返回(empty array)
📌实操过程如下:
匹配成功时:
匹配失败时:
关于pattern中的特殊字符的说明,常用特殊字符有?、*、[ ]、[^ ]
- ?:指匹配任意一个字符
- *:指匹配任意大于等于0个任意字符
- []:指可以匹配[ ]内的任意一个字符,例如[ae]表示可以匹配该位置为a或者e的key。
- [^]:指排除[^]内的所有字符,例如[^e]表示该位置排除为e的key。
💡需要注意的是,在实际开发过程中,应当避免使用keys命令,因为如果redis中存储了上数万条甚至更多数据,一下查出满足要求的key值需要的遍历时间无法预估,并且redis是单线程模型,就可能造成redis阻塞,甚至崩溃。
2.4 exists命令
▶️语法结构:EXISTSkey [key1...]
exists命令用来表示key是否存在,若存在则返回1;若不存在,则返回0;
时间复杂度:O(N),此处的N表示key的个数。
📌实操过程如下:
💡此时产生了一个问题,使用两次exists分别查找key1,key2和一次exists 同时查找key1,key2,有区别嘛?
答案是,当然有区别。我们知道,redis客户端与服务器之间的通信依赖网络通信,发送的命令越多,网络开销也就越大,如图:
2.5 del命令
▶️语法结构:DELkey [key1...]
del命令用来删除1个或多个键值对,返回删除成功的键值对的个数。
时间复杂度:O(N),此处的N表示key的个数。
📌实操过程如下:
2.6 expire命令
▶️语法结构:EXPIREkeyseconds
expire 命令用来给键值对设置过期时间,单位为s(秒),当到达设定的时间后,redis会自动将该键值对删除。key存在则返回1,不存在则返回0;
📌实操过程如下:
图中给heeello键设置过期时间为30s,后面的ttl用来查看heeello的剩余存活时间,当剩余存活时间为-2时,表示已经删除该键值对了。
2.7 ttl命令
▶️语法结构:TTLkey
TTL命令用来查看key的剩余存活时间。返回的是key剩余存活的秒数,当key已经不存在了之后,则返回-2;
📌实操过程如下:
2.8 type命令
▶️语法结构:TYPEkey
上一篇文章给大家介绍过key是string类型的数据,但key所对应的value值的数据类型可以有很多种,type命令的作用是查看该key所对应的value值的数据类型。
当然我们目前介绍到的存储数据的set方法存储的都是string类型的value值,后续的文章会介绍各种value的数据类型。简单看一下运行的示例:
📌实操过程如下:
三、小结
本篇文章给大家介绍了有关redis客户端形式,8中常用命令的使用方法以及示例。下期和大家讨论关于redis的过期策略相关的内容,感兴趣的小伙伴不妨给个关注再走叭~