极致性能的数据库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: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的类型。

相关推荐
Random Glow1 分钟前
聚簇索引:为什么主键顺序决定插入性能
数据库·mysql·性能优化·innodb·索引
软件技术NINI3 分钟前
基于PHP和MySQL的快递代收点管理系统的设计与实现
开发语言·javascript·数据库·mysql·毕业设计·php·毕设
阿俊-全栈开发9 分钟前
LikeShop 多商户高级版商城满减满赠活动的自定义规则二开实现
大数据·人工智能·likeshop开源商城·likeshop单商户标准版·多商户源码
云上工程笔记12 分钟前
2026年大模型Token成本测算推荐清单:输入输出、缓存、并发与峰值用量
人工智能·spring boot·缓存·token
SelectDB技术团队13 分钟前
ClickHouse SQL 好学吗?从 MySQL 迁移 Doris 的完整兼容验证
人工智能·sql·mysql·clickhouse·开源·apache doris·增量计算
吹什么轩27 分钟前
MySQL 增删改查(CRUD)完全指南:从 INSERT 到 GROUP BY
数据库·mysql
为思念酝酿的痛42 分钟前
MySQL表的约束
数据库·mysql
magic_kid_20101 小时前
HDFS 故障复盘:千万级 block 导致 FBR 超过 128 MiB,DataNode 被判定为 dead
大数据·hadoop·hdfs·hadoop 故障
Agent世界1 小时前
百度OCR 2开源:KV缓存从47GB压到1.77GB
百度·缓存·开源·大模型·ocr
时间售卖铺1 小时前
MySQL存储过程流程控制全解析
运维·数据库·mysql·云原生