Skip to content

快速上手Redis

环境信息:Redis 7.x、Docker Desktop、RedisInsight

Redis简介与安装#

mysql 是通过硬盘来存储信息的,并且还要解析并执行 sql 语句,服务端其实最耗时的操作,就是连接数据等待数据库的查询结果,特别是一些非常耗时的查询,这些就成为了性能瓶颈。

解决这个问题的手段就是缓存,直接把结果缓存在内存中,下次查询直接查询缓存就行了。

所以做后端服务的时候,为了提升查询效率,我们不会只用 mysql,一般会结合内存数据库来做缓存,最常用的是 Redis

Redis是一个开源的内存数据结构存储系统,采用键-值(Key-Value)对的形式存储数据。支持多种数据结构,比如:字符串(string)、列表(list)、集合(set)、有序集合(sorted set)、哈希表(hash)、地理信息(geospatial)、位图(bitmap)和JSON等等。Redis将数据存储在内存中,以实现快速查询,因此被广泛用于服务端开发中的中间件。在提升应用性能和处理高并发场景方面,起着至关重要的作用。

Redis 是分为服务端和客户端的,它提供了一个 redis-cli 的命令行客户端,当然也有可视化界面。

我们还是通过Docker Desktop直接下载Redis的Image

image-20250205115653374

可以直接点击run,下载并开启一个容器

image-20250205120051490

redis 服务跑起来之后,我们可以先用docker容器中的redis-cli 操作一下。

image-20250205120855300

Redis常用命令#

上面简单写了一下字符串操作。Redis提供了一系列操作数据的命令

1、字符串操作#

image-20250205151409422

2、列表操作#

在Redis中,列表通常应用于消息队列、任务队列、时间线等场景,操作其实类似于JS中的数组操作。

列表操作的常用命令如下:

image-20250205153406950

image-20250205153538508

3、集合操作#

在Redis中,集合由一组无序但唯一的成员组成。使用集合可以对数据执行交集、并集、差集等操作。

集合常用于标签系统,比如进行文章标签或者商品标签的管理,从而轻松的实现标签的组合和筛选

集合常用命令如下:

image-20250205154804224

RedisInsight#

如果觉得命令行不够清晰,也能下载Redis给我提供了GUI,官网下载即可,不过下载之前需要稍微填写一下信息

image-20250205160506786

安装成功之后,就会自动搜索到当前已经启动的Redis服务,点击这个数据库,就可以展示我们前面创建的各种类型的key和value

image-20250205160714647

现在可以通过工作,简单的进行操作即可

image-20250205161340213

当然你要写cli命令也可以

image-20250205161658662

4、有序集合操作#

与集合不同,Sorted Set(有序集合,也被称为ZSet)是由一组按照分数排序并且唯一的数据组成的,如果要用于比如排行榜的处理,就可以使用这种数据结构

有序集合常用的操作命令如下:

image-20250205162005347

image-20250205162043135

通过命令操作一下

image-20250205162324433

image-20250205162354691

5、哈希操作#

哈希结构适用于存储复杂对象结构的数据,例如用户信息,订单信息等等,每个Key代表不同的对象,field value代表对象的属性和值。比如要存储user信息,执行如下的命令设置字段:

HSET user id 1
HSET user name jack
HSET user age 22

image-20250205162714414

image-20250205162819948

6、地理空间操作#

常用命令如下:

Redis可以用于存储地理空间的坐标,并支持在给定半径和范围边界内进行搜索。地图相关的场景都会用到这种数据操作,比如共享单车、充电宝等等场景

可以执行以下命令添加几个坐标位置,坐标位置可以用用百度的坐标拾取器

GEOADD share_bikes 116.437326 39.951837 bike1
GEOADD share_bikes 116.433877 39.94874 bike2 116.436177 39.950952 bike3

image-20250205164515099

image-20250205164808454

比如获取bike1和bike2的坐标信息

image-20250205164932784

还能增加一些条件,给定一个经纬度,查询这个坐标5KM范围内的自行车,结果会自动按照从近到远的顺序输出

GEOSEARCH share_bikes FROMLONLAT 116.436464 39.94791 BYRADIUS 5 km asc

image-20250205165359124

7、位图操作#

位图常用操作命令如下:

在应用中,如果我们希望记录用户的活跃状态、在线状态、访问频率等等,就可以使用位图。

比如,我们统计用户1001在30天内的访问频率,假设他在第10、20、30天都有访问记录:

SETBIT user:1001:visit 10 1
SETBIT user:1001:visit 20 1
SETBIT user:1001:visit 30 1

image-20250205171521094

image-20250205171607303

我们通过条件来看一下,比如判断该用户在第15天有没有访问记录:

GETBIT user:1001:visit 15

image-20250205171840760

或者统计用户总共有多少次访问记录

image-20250205171953853

上面基本上就是一些常用的redis结构和命令,当然还有一些cli并没有一一介绍,大家可以自行去查阅,过一遍基本也就会了。