Redis01-基础-入门

零、文章目录

Redis01-基础-入门

1、认识 NoSQL

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)下载
(2)安装
  • 下载压缩包绿色版本,解压即安装完成
(3)启动
  • 进入程序目录,打开 cmd 命令行窗口
bash 复制代码
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 命令行窗口
bash 复制代码
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 语言编写的,需要编译环境,因此需要安装 gcctcl
bash 复制代码
sudo yum install -y gcc tcl
(2)下载源码包
bash 复制代码
cd /usr/local
wget https://download.redis.io/releases/redis-7.4.0.tar.gz
(3)解压源码包
  • 解压下载的 Redis 源码包:
bash 复制代码
tar -zxvf redis-7.4.0.tar.gz
(4)编译和安装
  • 进入解压后的目录并进行编译和安装:
  • 如果没有出错,应该就安装成功了,默认的安装路径是在 /usr/local/bin目录下。
  • 该目录以及默认配置到环境变量,因此可以在任意目录下运行这些命令。其中:
    • redis-cli:是redis提供的命令行客户端
    • redis-server:是redis的服务端启动脚本
    • redis-sentinel:是redis的哨兵启动脚本
bash 复制代码
cd redis-7.4.0
make&&make install
(5)配置
  • Redis 的配置文件 redis.conf 位于源码包中,可以将其复制到指定目录并进行修改:
bash 复制代码
## 创建配置文件目录
mkdir /etc/redis
## 复制配置文件
cp /usr/local/redis-7.4.0/redis.conf /etc/redis/
## 创建日志目录
mkdir /var/log/redis/
  • 使用文本编辑器(如 vi)打开配置文件:
bash 复制代码
vi /etc/redis/redis.conf

bind 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)启动
  • 为了给外部客户端访问,需要关闭系统防火墙
bash 复制代码
## 关闭防火墙
sudo systemctl stop firewalld
## 关闭防火墙开机启动
sudo systemctl disable firewalld
  • 默认启动:安装完成后,在任意目录输入redis-server命令即可启动Redis,这种启动属于前台启动,会阻塞整个会话窗口,窗口关闭或者按下CTRL + C则Redis停止。不推荐使用。
bash 复制代码
redis-server
  • 配置文件启动:如果要让Redis以后台方式启动,则必须修改Redis配置文件,并以配置文件启动:
bash 复制代码
/usr/local/bin/redis-server /etc/redis/redis.conf
  • 如果要停止 redis 服务,可以使用命令
bash 复制代码
# 连接到Redis服务器(无密码时)
redis-cli shutdown 
 
# 若配置了密码认证 
redis-cli -a 你的密码 shutdown 
(7)验证安装
  • 可以通过以下命令验证 Redis 是否安装成功,如果返回 testvalue,说明 Redis 安装成功。
bash 复制代码
[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,使⽤⽅式如下:
bash 复制代码
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 服务文件:
bash 复制代码
vi /etc/systemd/system/redis.service
  • 将以下内容复制到文件中(注意 ExecStart 的路径为你的 Redis 配置文件路径):
bash 复制代码
[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,否则服务会启动失败。
    • ExecStart:服务启动命令,指定Redis服务端程序路径及配置文件路径。
    • PrivateTmp=true:为服务分配独立的临时目录(/tmp/systemd-private-*),防止临时文件冲突或泄露,增强安全性。
    • WantedBy=multi-user.target
      • 定义服务所属的Systemd目标(target),表示在多用户模式下启用该服务。
      • 执行systemctl enable redis后,服务会随系统启动自动加载。
  • 保存并退出后,重新加载 systemd 配置:
bash 复制代码
systemctl daemon-reload
  • 可以用下面这组命令来操作redis:
bash 复制代码
# 启动
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
(8)使用建议
  • 如果你需要一个功能全面且免费的工具,推荐使用 Another Redis Desktop Manager 或 RedisInsight。
  • 如果你使用 Mac 系统,可以尝试 Medis。
相关推荐
爱的叹息1 小时前
MyBatis缓存配置的完整示例,包含一级缓存、二级缓存、自定义缓存策略等核心场景,并附详细注释和总结表格
缓存·mybatis
晓华-warm1 小时前
国产免费工作流引擎star 5.9k,Warm-Flow版本升级1.7.0(新增大量好用功能)
java·中间件·流程图·开源软件·flowable·工作流·activities
山猪打不过家猪2 小时前
(六)RestAPI 毛子(外部导入打卡/游标分页/Refit/Http resilience/批量提交/Quartz后台任务/Hateoas Driven)
网络·缓存
多多*5 小时前
非关系型数据库 八股文 Redis相关 缓存雪崩 击穿 穿透
java·开发语言·jvm·数据库·redis·缓存·nosql
lee_yanyi5 小时前
《一键式江湖:Docker Compose中间件部署108式》开篇:告别“配置地狱”,从此笑傲云原生武林!》
docker·云原生·中间件
伊织code7 小时前
cached-property - 类属性缓存装饰器
python·缓存·cache·装饰器·ttl·property·cached-property
李宥小哥7 小时前
Redis03-基础-C#客户端
开发语言·缓存·中间件·c#
Ten peaches8 小时前
苍穹外卖(缓存商品、购物车)
spring boot·redis·mysql·缓存
pjx9878 小时前
给应用加速:Spring Boot集成缓存 (Caffeine & Redis) 实战
java·spring boot·redis·spring·缓存