零、文章目录
Redis01-基础-入门
1、认识 NoSQL
- NoSQL 知识请参考:https://blog.csdn.net/liyou123456789/article/details/132612444
2、认识 Redis
(1)简介
- Redis(Remote Dictionary Server,远程字典服务)是一个开源的、基于内存的高性能键 - 值存储数据库。它由 Salvatore Sanfilippo 编写,使用 ANSI C 语言开发。
- 官网地址:https://redis.io/
(2)特征
- 键值(key-value)型,value支持多种不同数据结构,功能丰富。
- 单线程,每个命令具备原子性
- 低延迟,速度快(基于内存、IO多路复用、良好的编码)。
- 支持数据持久化
- 支持主从集群、哨兵、分片集群
(3)应用场景
- 缓存:可以缓存经常访问的数据,如网页内容、数据库查询结果等。例如,在一个电商网站中,商品的详情页面内容(如商品描述、图片等)可以缓存在 Redis 中。当用户访问该商品页面时,先从 Redis 中获取数据,如果命中缓存,就直接返回,大大提高了访问速度,减轻了后端数据库的压力。
- 消息队列:利用 Redis 的列表数据结构可以实现简单的消息队列。生产者将消息添加到列表中,消费者从列表中获取消息。例如,在一个日志收集系统中,各个服务器可以将日志消息发送到 Redis 的一个列表中,然后专门的日志处理服务器从该列表中获取日志消息进行处理。
- 排行榜系统:有序集合非常适合用于构建排行榜。例如,在一个游戏应用中,玩家的分数作为有序集合成员的分数,玩家的标识作为成员。可以方便地获取排名前 N 的玩家,或者某个玩家的排名等信息。
- 实时分析:可以存储实时数据,如网站的访问统计信息(每秒的访问量、用户来源等)。通过 Redis 的数据结构和操作,可以快速地对这些数据进行统计和分析。例如,使用 Redis 的计数器(字符串类型,通过 INCR 等命令)来统计每秒的访问量,然后可以实时地展示在监控界面上。
- 分布式会话:在分布式系统中,可以使用 Redis 来存储会话信息。例如,在一个微服务架构的 Web 应用中,各个微服务可以将用户的会话数据(如用户登录状态、购物车信息等)存储在 Redis 中,这样不同的微服务就可以共享会话数据,实现用户的单点登录和购物车等功能。
(4)优势和局限性
- 优势
- 速度极快 :如前面所述,基于内存存储和高效的算法实现,使其在处理大量数据和高并发请求时表现出色。
- 数据结构灵活 :丰富的数据结构可以满足多种不同的业务需求,方便地存储和操作复杂的数据。
- 高可用性 :通过主从复制、哨兵系统和集群模式可以实现 Redis 的高可用。主从复制可以实现数据的备份和读写分离,哨兵可以监控主节点状态并进行故障转移,集群模式可以提供横向扩展能力,提高系统的可用性和扩展性。
- 局限性
- 数据存储容量受限 :由于数据存储在内存中,所以存储成本相对较高,对于大规模数据存储可能会受到服务器内存大小的限制。
- 数据类型复杂度相对有限 :虽然 Redis 提供了多种数据类型,但对于一些非常复杂的数据结构和关系(如图数据库中的复杂关系),可能不是最佳选择。
- 事务的局限性 :如前面提到的,Redis 的事务不是严格的事务,在遇到错误时不会自动回滚,这在一些对事务要求非常严格的应用场景中可能会带来问题。
(5)主要版本说明
- Redis 2.6(2012年)
- 服务端支持 Lua 脚本,增强扩展能力;
- 键过期时间支持毫秒级精度;
- 新增位图命令 BITCOUNT 和 BITOP;
- 优化客户端连接数限制,支持更大规模并发;
- 重构核心代码,为后续集群功能做准备。
- Redis 2.8(2013年)
- 主从复制优化,减少网络问题引发的全量复制频率;
- 支持 IPv6 和绑定多 IP 地址;
- 新增 CONFIG REWRITE 命令,持久化配置修改;
- Redis Sentinel(哨兵)第二版,实现生产级高可用;
- 引入 SET 指令扩展参数,解决分布式锁原子性问题(如 SETNX + EXPIRE)。
- Redis 3.0(2015年)
- 正式推出 Redis Cluster(分布式集群),支持自动分片和故障转移;
- 优化内存管理(如嵌入式字符串编码、LRU 算法);
- 新增 MIGRATE 命令参数,加速键迁移;
- BITCOUNT 性能提升,支持高效位操作。
- Redis 3.2(2016年)
- 新增 GEO 模块,支持地理位置计算(如 GEOADD、GEODIST);
- 引入 QUICKLIST 编码,优化列表存储结构;
- 支持无盘复制(Diskless Replication),降低主节点 I/O 压力;
- 新增 HSTRLEN 命令,统计哈希字段值的长度。
- Redis 4.0(2017年)
- 支持 模块系统,允许第三方扩展功能(如布隆过滤器);
- 新增 PSYNC 2.0,优化主从切换时的数据同步效率;
- 提供 MEMORY 命令,增强内存监控;
- 支持 RDB-AOF 混合持久化,兼顾性能与数据安全;
- 非阻塞 DEL 和 FLUSH 命令,避免大键删除导致阻塞。
- Redis 5.0(2018年)
- 新增 Stream 数据类型,支持消息队列场景;
- 优化 Redis Cluster 的运维能力(如副本迁移);
- 改进 CLIENT PAUSE 命令,增强客户端管理。
- Redis 6.x 系列(2020年)
- 多线程 I/O:首次支持多线程处理网络 I/O(非命令执行),显著提升高并发场景性能。
- 客户端缓存(Client-Side Caching):允许客户端本地缓存部分数据,减少服务端请求压力,支持广播和键名跟踪模式。
- ACL 权限控制增强:细粒度权限管理,支持按命令、键前缀等维度限制用户访问。
- SSL/TLS 加密通信:提供原生加密支持,增强数据传输安全性。
- RESP3 协议:新版本通信协议,优化客户端与服务端交互效率,支持更多数据类型。
- Redis 7.x 系列(2022年)
- Function 特性:支持在服务端定义和执行自定义函数(类似存储过程),减少客户端与服务器交互次数。
- Multi-Part AOF:改进 AOF 持久化机制,支持分块写入,降低故障恢复时的数据丢失风险。
- Sharded Pub/Sub:集群模式下支持分片发布订阅功能,提升分布式消息传递效率。
- 命令性能优化:如
SORT
命令支持更多参数,内存管理进一步优化。 - 动态线程数调整:允许运行时动态调整 I/O 线程数量,适应不同负载场景。
- 版本命名规则补充
- 稳定版本:第二位为偶数(如 2.6、3.0、4.0)。
- 开发版本:第二位为奇数(如 2.7、3.1),用于新功能测试
3、Windows 安装 Redis
(1)下载
- windows 版本下载地址:https://github.com/MicrosoftArchive/redis/tags
- windows 版本没有官方支持,我们用 3.2.100 这个最新版本
- 百度网盘下载地址:https://pan.baidu.com/s/1c0eMDGiWOHQzryhNzNXtwg?pwd=1234
(2)安装
- 下载压缩包绿色版本,解压即安装完成
(3)启动
- 进入程序目录,打开 cmd 命令行窗口
redis-server.exe[36876] 13 Feb 13:46:42.770 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server.exe /path/to/redis.conf_.__.-``__ ''-.__.-`` `. `_. ''-._ Redis 3.2.100 (00000000/0) 64 bit.-`` .-```. ```\/ _.,_ ''-._( ' , .-` | `, ) Running in standalone mode|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379| `-._ `._ / _.-' | PID: 36876`-._ `-._ `-./ _.-' _.-'|`-._`-._ `-.__.-' _.-'_.-'|| `-._`-._ _.-'_.-' | http://redis.io`-._ `-._`-.__.-'_.-' _.-'|`-._`-._ `-.__.-' _.-'_.-'|| `-._`-._ _.-'_.-' |`-._ `-._`-.__.-'_.-' _.-'`-._ `-.__.-' _.-'`-._ _.-'`-.__.-'[36876] 13 Feb 13:46:42.773 # Server started, Redis version 3.2.100
[36876] 13 Feb 13:46:42.774 * The server is now ready to accept connections on port 6379
(4)连接操作
- 进入程序目录,打开 cmd 命令行窗口
redis-cli.exe
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> get name
"zhangsan"
4、Centos7.9 安装Redis7.4
(1)安装依赖环境
- Redis 是用 C 语言编写的,需要编译环境,因此需要安装
gcc
和tcl
:
sudo yum install -y gcc tcl
(2)下载源码包
- 进入指定目录并下载 Redis 7.4 的源码包
- 百度网盘下载地址:https://pan.baidu.com/s/1va1LCqhaR25UBuHZfyBI9w?pwd=1234
cd /usr/local
wget https://download.redis.io/releases/redis-7.4.0.tar.gz
(3)解压源码包
- 解压下载的 Redis 源码包:
tar -zxvf redis-7.4.0.tar.gz
(4)编译和安装
- 进入解压后的目录并进行编译和安装:
- 如果没有出错,应该就安装成功了,默认的安装路径是在
/usr/local/bin
目录下。 - 该目录以及默认配置到环境变量,因此可以在任意目录下运行这些命令。其中:
- redis-cli:是redis提供的命令行客户端
- redis-server:是redis的服务端启动脚本
- redis-sentinel:是redis的哨兵启动脚本
cd redis-7.4.0
make&&make install
(5)配置
- Redis 的配置文件
redis.conf
位于源码包中,可以将其复制到指定目录并进行修改:
## 创建配置文件目录
mkdir /etc/redis
## 复制配置文件
cp /usr/local/redis-7.4.0/redis.conf /etc/redis/
## 创建日志目录
mkdir /var/log/redis/
- 使用文本编辑器(如
vi
)打开配置文件:
vi /etc/redis/redis.confbind 0.0.0.0
daemonize yes
requirepass 123123456
logfile "/var/log/redis/redis.log"
- 根据需要修改以下配置项:
- 允许访问的地址:默认是 bind 127.0.0.1,只能本地访问。修改为bind 0.0.0.0则可以任意IP访问,生产环境不要这样设置。
- 后台运行:将
daemonize no
修改为daemonize yes
。 - 设置密码(可选):取消
requirepass
的注释,并设置密码,例如requirepass 123456
。 - 日志文件:设置日志文件路径,例如
logfile "/var/log/redis/redis.log"
。
(6)启动
- 为了给外部客户端访问,需要关闭系统防火墙
## 关闭防火墙
sudo systemctl stop firewalld
## 关闭防火墙开机启动
sudo systemctl disable firewalld
- 默认启动:安装完成后,在任意目录输入redis-server命令即可启动Redis,这种启动属于
前台启动
,会阻塞整个会话窗口,窗口关闭或者按下CTRL + C
则Redis停止。不推荐使用。
redis-server
- 配置文件启动:如果要让Redis以
后台
方式启动,则必须修改Redis配置文件,并以配置文件启动:
/usr/local/bin/redis-server /etc/redis/redis.conf
- 如果要停止 redis 服务,可以使用命令
# 连接到Redis服务器(无密码时)
redis-cli shutdown # 若配置了密码认证
redis-cli -a 你的密码 shutdown
(7)验证安装
- 可以通过以下命令验证 Redis 是否安装成功,如果返回
testvalue
,说明 Redis 安装成功。
[root@localhost ~]# redis-cli -a 123123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> get name
"zhangsan"
- Redis安装完成后就⾃带了命令⾏客户端:redis-cli,使⽤⽅式如下:
redis-cli [options] [commonds]
- 其中常⻅的options有:
- -h 127.0.0.1 :指定要连接的redis节点的IP地址,默认是127.0.0.1
- -p 6379 :指定要连接的redis节点的端⼝,默认是6379
- -a 123321 :指定redis的访问密码
- 其中的commonds就是Redis的操作命令,例如:
- ping :与redis服务端做⼼跳测试,服务端正常会返回 pong
- 不指定commond时,会进⼊ redis-cli 的交互控制台
(8)设置开机自启
- 为了使 Redis 在系统启动时自动运行,可以创建一个 systemd 服务文件:
vi /etc/systemd/system/redis.service
- 将以下内容复制到文件中(注意
ExecStart
的路径为你的 Redis 配置文件路径):
[Unit]
Description=redis-server
After=network.target[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
PrivateTmp=true[Install]
WantedBy=multi-user.target
- 配置说明
- Description:定义服务描述信息,用于标识该服务名称(显示在
systemctl status
中)。 - After=network.target:指定服务启动顺序:需在网络服务(
network.target
)初始化完成后启动,确保Redis能正常监听端口。 - Type=forking
- 适用于以守护进程(后台)模式运行的服务。Redis默认配置为
daemonize yes
(后台运行),需与此参数匹配。 - 若Redis未配置为守护进程(
daemonize no
),需改为Type=simple
,否则服务会启动失败。
- 适用于以守护进程(后台)模式运行的服务。Redis默认配置为
- ExecStart:服务启动命令,指定Redis服务端程序路径及配置文件路径。
- PrivateTmp=true:为服务分配独立的临时目录(
/tmp/systemd-private-*
),防止临时文件冲突或泄露,增强安全性。 - WantedBy=multi-user.target
- 定义服务所属的Systemd目标(target),表示在多用户模式下启用该服务。
- 执行
systemctl enable redis
后,服务会随系统启动自动加载。
- Description:定义服务描述信息,用于标识该服务名称(显示在
- 保存并退出后,重新加载 systemd 配置:
systemctl daemon-reload
- 可以用下面这组命令来操作redis:
# 启动
systemctl start redis
# 停止
systemctl stop redis
# 重启
systemctl restart redis
# 查看状态
systemctl status redis
# 开机自启
systemctl enable redis
5、Redis 图形客户端工具
(1)Another Redis Desktop Manager
- 特点:
- 跨平台支持(Windows、Mac、Linux)。
- 界面简洁,性能出众,支持加载海量键值。
- 支持哨兵、集群、SSH 通道、SSL 认证、Stream、订阅、树状视图、命令行,以及暗黑模式。
- 支持多种格式化方式,甚至可以自定义格式化脚本。
- 下载地址:https://github.com/qishibo/AnotherRedisDesktopManager
(2)RedisInsight
- 特点:
- 由 Redis 官方提供,功能强大,支持监控和分析 Redis 数据。
- 支持多种数据结构、命令、索引、查询和聚合等功能。
- 提供命令行交互功能,支持 Redis 5.0 的 Stream 数据类型。
- 免费社区版和付费企业版可选。
- 下载地址:https://redis.com/redis-enterprise/redis-insight/
(3)Redis Desktop Manager (RDM)
- 特点:
- 跨平台支持(Windows、Linux、macOS)。
- 提供直观的界面来查看和操作 Redis 数据,支持多种数据类型的展示。
- 支持 SSL/TLS 加密、SSH 隧道技术和云 Redis 实例(如 Amazon ElastiCache、Microsoft Azure Redis Cache 和 Redis Labs)。
- 旧版本免费,新版本需付费,但可以通过编译源码继续使用免费版本。
- 下载地址:https://rdm.dev/
(4)Medis
- 特点:
- 专为 Mac 设计,界面简洁美观。
- 支持数据的可视化展示和编辑,提供方便的搜索和过滤功能。
- 免费使用。
- 下载地址:http://getmedis.com/
(5)Redis Plus
- 特点:
- 开源免费的桌面客户端软件,支持跨平台。
- 提供基本的键值查看、编辑、删除操作。
- 支持监控功能。
- 下载地址:https://gitee.com/MaxBill/RedisPlus
(6)Tiny RDM
- 特点:
- 现代化、轻量级的跨平台 Redis 桌面客户端,支持 Windows、Mac 和 Linux。
- 界面精美,支持浅色/深色主题。
- 支持 SSH 隧道、SSL、哨兵模式、集群模式、HTTP 代理、SOCKS5 代理。
- 支持命令实时监控、数据导入/导出、发布订阅等功能。
- 下载地址:https://github.com/tiny-craft/tiny-rdm
(7)QuickRedis
- 特点:
- 永久免费的 Redis 可视化管理工具。
- 支持直连、哨兵、集群模式,支持海量键值。
- 界面友好,支持 Windows、Mac OS X 和 Linux。
- 下载地址:https://gitee.com/quick123official/quick_redis_blog
(8)使用建议
- 如果你需要一个功能全面且免费的工具,推荐使用 Another Redis Desktop Manager 或 RedisInsight。
- 如果你使用 Mac 系统,可以尝试 Medis。