极致性能的数据库Redis之基础概念及通用命令讲解

目录

[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:1user:123:infouser:
? 匹配单个任意字符 user:? 匹配 user:1user:a,不匹配 user:12
[] 匹配括号内的单个字符 user:[123] 匹配 user:1user:2user:3
[a-b] 匹配指定范围的单个字符 user:[a-z] 匹配 user:auser:z,不匹配 user:1
[^] 匹配括号内除外的单个字符 user:[^12] 匹配 user:3user:a,不匹配 user:1user: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的类型。

相关推荐
言之。11 小时前
DDIA第四章 数据库存储引擎面试问题集
数据库·面试·职场和发展·ddia
wangbing112512 小时前
redis的存储问题
数据库·redis·缓存
剑来.12 小时前
一次完整的 MySQL 性能问题排查思路(线上实战总结)
数据库·mysql·oracle
2301_8002561112 小时前
【数据库】查找距离最近的电影院 pgSQL 存储过程片段
大数据·数据库·excel
杰克逊的日记12 小时前
规控算法(规划 + 控制算法)
大数据·算法·云计算·it
2501_9418072612 小时前
在迪拜智能机场场景中构建行李实时调度与高并发航班数据分析平台的工程设计实践经验分享
java·前端·数据库
Ydwlcloud12 小时前
2026年1月云服务器优惠活动全解析:聪明选云的新策略
大数据·服务器·人工智能·云计算
AI Echoes12 小时前
LangChain 语义文档分割器与其他文档分割器的使用
大数据·人工智能·python·langchain·agent
week_泽12 小时前
小程序云数据库查询操作_2
数据库·小程序
一 乐12 小时前
餐厅点餐|基于springboot + vue餐厅点餐系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端