目录
[1. 什么是Redis](#1. 什么是Redis)
[2. 登入Redis](#2. 登入Redis)
[3. get与set](#3. get与set)
[3.1 set](#3.1 set)
[3.2 get](#3.2 get)
[4. keys](#4. keys)
[5. exists](#5. exists)
[6. del](#6. del)
[7. expire](#7. expire)
[8. ttl](#8. ttl)
[9. type](#9. type)
1. 什么是Redis
Redis 是一个开源的内存数据存储系统,常被用作缓存、数据库或消息队列。它把数据放在内存里,读写速度非常快,支持字符串、列表、哈希、集合等多种数据结构,使用简单,性能出色。在很多需要快速响应和高并发处理的应用中,比如网站缓存、用户会话管理或实时排行榜,都能看到 Redis 的身影。
一般来说我们的数据库可以能会用多种数据库系统。比如说Redis加上MySQL,前者用来储存那些经常会被访问到的数据或者一些临时数据。MySQL则用来存储那些不经常被访问到的数据和其他大量的数据。这是由于他们自身的性质导致的。

2. 登入Redis
我们选择在Linux系统下登入Redis,这个一方面是因为Redis和Windows的兼容性不那么好,另一方面是为了更好的学习Redis。
语法:
sql
redis-cli
输入这行代码之后当我们看到下面这行提示框的时候,就代表我们登入Redis成功了。

3. get与set
3.1 set
首先我们需要明白这个Redis是KV结构的,也就是我们常说的hash结构,所以我们在创建的时候也是按照这个结构来处理的。
set的话就是在创建这个数据以及建立映射关系。
语法:
sql
set key value
这个value是我们实际存放的值,而这个key这是用来帮助我们找到这个value的。
3.2 get
这个get的话就是在通过key来读取我们的数据。
语法:
sql
get key value
我们通过这个get就可以得到我们所存放的value值。

4. keys
这个keys的话这是用来获取一定范围内的key值,不是用来获取value的。
语法:
sql
keys 需要查找的key
| 通配符 | 含义 | 示例 | 匹配结果说明 |
|---|---|---|---|
* |
匹配任意数量的任意字符(包括 0 个) | user:* |
匹配 user:1、user:123:info、user: 等 |
? |
匹配单个任意字符 | user:? |
匹配 user:1、user:a,不匹配 user:12 |
[] |
匹配括号内的单个字符 | user:[123] |
匹配 user:1、user:2、user:3 |
[a-b] |
匹配指定范围的单个字符 | user:[a-z] |
匹配 user:a、user:z,不匹配 user:1 |
[^] |
匹配括号内除外的单个字符 | user:[^12] |
匹配 user:3、user:a,不匹配 user:1、user:2 |
我们先set了三个key,分别是hello,hallo和hlo。接着我们看下面这张图,下面就是keys的使用。
时间复杂度:O(N),这个N是我们输入的key的数量
返回值:匹配 pattern 的所有 key。
5. exists
exists判断某个 key 或者一些key是否存在,然后返回搜索的key存在的数量。
语法:
sql
exists 要判断的key
它的时间复杂度为O(1),这个也很好理解,因为他是hash结构的。Redis的很多操作都是支持一次处理多个的,这是因为它每一次的数据请求都是在网络上进行的,然后我们也知道网络上进行这样的操作的话速度是比较慢的,然后Redis为了加快速度,于是就允许一次处理多个key值。

6. del
del就是用来删除指定的 key。(在数据库中删除操作永远都要小心)
语法:
sql
del 要删除的key
我们看下面这张图片,原本的hello这个key就这样被我们删除了。del的返回值是被删除了的key的数量。它的时间复杂度也是O(1)。

7. expire
expire就是为指定的 key 添加秒级的过期时间,当这个时间到了之后,这个可以我们就没有办法访问了。这个的使用场景很广泛比如说我们登入一些网站时的验证码什么的都是有有效时间的,他们都是采用了这一种方式。
语法:
sql
expire 要设置时间的key 设置的具体秒数
我们看下面这张图,我们给它设置了8秒的时间,然后当8秒之后这个key我们就没有办法访问了,因为他已经被Redis给删除了。
expire的返回值:1 表⽰设置成功 0 表⽰设置失败
时间复杂度:O(1)

8. ttl
ttl用来获取指定 key 的过期秒数。(是还没有过期的,已经过期的就无法查看了)
语法:
sql
ttl 要查看的key
我们看下面这张图片。当这个bb被删除之后再用ttl来进行查询就会返回-2,代表没有查询到。
时间复杂度:O(1)
返回值:剩余过期时间。-1 表⽰没有关联过期时间,-2 表⽰ key 不存在。

9. type
type用来返回 key 对应的数据类型,也就是value的类型。在Redis中有各种各样的数据类型,这个我们在后面的文章中或一一讲解。
语法:
sql
type 要查看类型的那个key值
我们看下面这张图,我们前面也说了,type查看的是value的类型,那么为什么我们在这里的bb和2的结构都是string呢?这是因为在Redis中我们看起来输入的是bb和2,但实际上是"bb"和"2",所以在这里就是string的类型。

