【从零开始学习Redis】初识Redis

发布于:2025-08-04 ⋅ 阅读:(10) ⋅ 点赞:(0)

初识Redis

一句话理解Redis:

Redis是一个基于内存的、支持多种数据结构的高性能键值数据库,常被用于缓存、分布式锁和消息队列。

和 MySQL 的区别:

特点 Redis MySQL
类型 非关系型(NoSQL) 关系型(SQL)
存储结构 键值对(Key-Value) 表结构(行、列)
存储位置 主要存储在内存中,可选择持久化到磁盘 存储在磁盘中
访问速度 极快(纳秒级) 相对较慢(毫秒级)
使用场景 缓存、排行榜、会话存储、限流、队列等 持久化数据、复杂查询、事务处理等

认识NoSQL

MySQL是类似下图的结构:

而NoSQL没有这种强约束,不仅仅是键值对,同时也可以以json形式存储,常见的还有Graph,但使用的相对较少,一般用于社交app

总结一下区别如下:

SQL NoSQL
数据结构 结构化(Structured) 非结构化
数据关联 关联的(Relational) 无关联的
查询方式 SQL查询 非SQL
事务特性 ACID BASE
存储方式 磁盘 内存
扩展性 垂直 水平
使用场景 1)数据结构固定
2)相关业务对数据安全性、一致性要求较高
1)数据结构不固定
2)对一致性、安全性要求不高
3)对性能要求

认识Redis

特征:

  • 键值(key-value)型, value支持多种不同数据结构, 功能丰富
  • 单线程, 每个命令具备原子性
  • 低延迟, 速度快 (基于内存、IO多路复用、良好的编码)。
  • 支持数据持久化
  • 支持主从集群、分片集群
  • 支持多语言客户端

在这里我有个疑问,为什么读写内存就比读写磁盘快呢?


🚀 1. 硬件本质不同
项目 内存(RAM) 磁盘(HDD/SSD)
介质 电子 磁性 or 闪存
访问方式 直接随机访问(Random Access) 顺序访问为主(特别是机械硬盘)
速度 纳秒级(10⁻⁹ 秒) 毫秒级(10⁻³ 秒,HDD)或微秒级(10⁻⁶ 秒,SSD)
  • 内存是电路层级的操作,访问一个数据大概只需几十纳秒;
  • 机械硬盘(HDD)要转磁盘、移动磁头来定位数据,耗时几个毫秒;
  • 固态硬盘(SSD)虽然比 HDD 快很多,但依旧是微秒级,远不如内存快。
2.操作系统层面

让我想起了之前操作系统老师说过的关于内存,单片机是没有操作系统的,所以每次写完代码需要借助工具把代码烧录进去,程序才能跑。而且单片机的 CPU是直接操作内存的物理地址。

这种情况下,不可能在内存中运行两个程序,如果第一个程序在地址为1000的地方写入一个值,那么第二个程序就会覆盖掉当前位置的全部内容,所以程序会立刻崩溃。

操作系统提供了一种机制,将不同进程的虚拟地址和不同内存的物理地址映射起来。于是,程序所使用的内存地址叫虚拟内存地址,实际在硬件里面的空间地址叫物理内存地址。

使得CPU直接访问物理内存的数据,无需系统调用,全靠硬件完成,所以速度会很快。而磁盘读写则会涉及用户态与内核态的切换、函数调用、磁头移动、磁盘旋转等,时间不是一个量级的。

知识是网状的,互相关联、相互贯通,很多看似复杂的问题其实都是基础知识的串联,多思考多发问是非常必要的。

安装Redis并熟悉启动方式

安装redis

我是使用的Ubuntu 22.04,注意当前指令仅适用于Ubuntu,通过apt安装稳定版本,

sudo apt update
sudo apt install -y redis

可以通过以下指令检查是否安装成功

# 启动 Redis(如果还未启动)
sudo systemctl start redis

# 设置开机自启(可选)
sudo systemctl enable redis

# 检查运行状态
sudo systemctl status redis

# 测试连接
redis-cli ping
# 返回 PONG 表示 Redis 正常运行


如果要关闭redis

ps -ef | grep redis #查出redis进程PID

#关闭redis进程
sudo kill 4254 #4254是举例,要替换为自己获取的PID

#检查是否关闭成功
ps -ef | grep redis

#如果发现redis换了一个PID仍在运行,可能是被某服务器托管自动重启
#如果使用systemd管理redis服务,用以下指令关闭redis
sudo systemctl stop redis
设置后台启动
  • 修改监听的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
#一般情况下,redis.conf位置在/etc/redis/redis.conf
#使用root权限打开配置文件,可以用vim或者nano文本编辑器打开,看个人习惯
#不使用sudo,权限不够,无法修改文件内容
sudo nano /etc/redis/redis.conf
或者sudo vim /etc/redis/redis.conf

如图
bind 0.0.0.0

  • 守护线程,修改为yes后即可后台运行
daemonize yes

  • 为保证安全性,设置访问redis必须输入密码
requirepass 123321 #可以设置为自己想设置的密码

  • 可以打开一下日志功能,便于报错查找问题

像我的是自动打开的,而且日志文件位置如图。

一般来说,使用Ubuntu,通过apt一键部署,在这里只需要修改监听IP和设置密码。

修改完成后,使用指定配置文件启动redis,并检查是否成功设置后台启动。

  • 打开开机自启

设置 Redis 开机自启(推荐做法)

在这之前先kill掉redis进程

sudo killall redis-server
  1. 启用 Redis 服务
sudo systemctl enable redis-server
  1. 立即启动 Redis 服务
sudo systemctl start redis-server
  1. 查看 Redis 服务状态
sudo systemctl status redis-server

如果你看到 active (running) 状态,说明 Redis 正常运行且设置为开机自启了。

常用命令总结:

操作 命令
启动 Redis sudo systemctl start redis-server
停止 Redis sudo systemctl stop redis-server
重启 Redis sudo systemctl restart redis-server
查看状态 sudo systemctl status redis-server
设置开机启动 sudo systemctl enable redis-server
禁用开机启动 sudo systemctl disable redis-server

现在对于redis的基本配置就结束了,后面即将开始redis命令行的学习

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力,希望我们共同进步


网站公告

今日签到

点亮在社区的每一天
去签到