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 天前
Redis安装配置
数据库·redis·缓存
斯普信专业组1 天前
Filebeat写ElasticSearch故障排查思路(下)
运维·elasticsearch·中间件·filebeat
Liquad Li1 天前
Salesforce 生态中的缓存、消息队列和流处理
缓存·架构·salesforce
哲Zheᗜe༘1 天前
了解学习Nginx反向代理与缓存功能
学习·nginx·缓存
梅孔立1 天前
基于 Service Worker 的图书馆资源缓存技术研究
缓存
小哈里1 天前
【后端开发】golang部分中间件介绍(任务调度/服务治理/数据库/缓存/服务通信/流量治理)
数据库·缓存·中间件·golang·后端开发
塔中妖1 天前
Spring Boot 启动时将数据库数据预加载到 Redis 缓存
数据库·spring boot·缓存
RoboWizard2 天前
移动固态硬盘无法被电脑识别怎么办?
大数据·人工智能·缓存·电脑·金士顿
野犬寒鸦2 天前
今日面试之快问快答:Redis篇
java·数据库·redis·后端·缓存·面试·职场和发展
阿里巴巴中间件2 天前
阿里云 AI 中间件重磅发布,打通 AI 应用落地“最后一公里”
人工智能·阿里云·中间件·云计算