Redis入门剖析与6.2.x版本安装流程

概述

Redis的官方网址为https://redis.io/。Redis是完全开源且免费的,遵循BSD协议,属于高性能的非关系型(NOSQL)键值数据库。它由ANSI C语言编写,支持网络通信,既能基于内存存储数据,也能进行持久化操作,属于日志型键值数据库,并且为多种编程语言提供了API接口。

关于BSD协议

BSD是“Berkeley Software Distribution”的英文缩写,意为“伯克利软件发行版”。BSD开源协议给予使用者较大的自由。使用者能够自由地使用、修改其源代码,还可将修改后的代码作为开源或专有软件进行再发布。该协议鼓励代码共享,但同时要求尊重代码作者的著作权。由于允许使用者对代码进行修改和重新发布,并且支持在BSD代码基础上开发商业软件并进行发布和销售,所以它对商业集成具有友好性。

在4.0版本之前,Redis一直采用单线程模式运行,到了4.0版本之后引入了多线程机制,但用于处理读写请求的线程依然只有一个。

Redis特点

其一,性能表现极为出色。这是因为数据存储在内存当中,经测试,Redis的读取速度可达每秒110000次左右,写入速度能达到每秒81000次上下。

其二,具备丰富的数据类型。它支持字符串(String)、哈希(Hash)、列表(List)、集合(Set)以及有序集合(Ordered Set)等多种数据类型的操作。

其三,具有原子性。Redis的所有操作均为原子性的,要么成功执行,要么完全失败不执行。单个操作本身就是原子性的,多个操作还可通过MULTI和EXEC指令包裹起来实现事务性,同样具备原子性。

其四,拥有丰富的特性。例如支持发布/订阅(publish/subscribe)、通知功能、键过期等特性。

其五,能够实现高速读写。Redis采用自行实现的分离器,代码量较少,没有使用像MySQL那样的锁机制,所以效率颇高。

Redis是一种简单、高效且分布式的基于内存的缓存工具。在搭建好服务器之后,可通过网络连接(类似数据库的连接方式)提供键值对形式的缓存服务。简单是Redis的显著特点之一,这种简单性有助于保障核心功能的稳定与优良表现。

Redis应用场景

Redis可应用于多种与性能密切相关的场景,比如作为数据库、缓存、秒杀系统、计数器、排行榜、热点数据(经常被查询但较少被修改或删除的数据)、分布式锁、分布式ID以及消息中间件等。

缓存方面

缓存如今几乎是所有大中型网站都会采用的关键手段,合理运用缓存不但能够提高网站的访问速度,还能显著减轻数据库的压力。Redis具备键过期功能,还提供了灵活的键淘汰策略,所以目前在缓存场景中被广泛应用。

分布式会话

在集群模式下,当应用数量较少时,通常可借助容器自带的session复制功能来满足需求。但在应用数量增多、系统更为复杂的情况下,一般会构建以Redis等内存数据库为核心的session服务,此时session不再由容器进行管理,而是由session服务和内存数据库来共同管理。

分布式锁

在众多互联网公司中运用了分布式技术,而分布式技术带来的技术难题是对同一资源的并发访问,像全局ID生成、库存减少、秒杀等场景。在并发量不大的场景下,可利用数据库的悲观锁或乐观锁来实现,但在高并发场景中,借助数据库锁来控制资源的并发访问并不理想,会极大影响数据库性能。可利用Redis的setnx功能来编写分布式锁,若设置返回值为1则表示获取锁成功,否则获取锁失败,在实际应用中还需考虑更多细节。

社交网络领域

点赞、踩、关注/被关注、共同好友等是社交网站的基础功能,社交网站的访问量通常较大,而传统的关系型数据库类型不太适合存储这类数据,Redis提供的哈希、集合等数据结构能够较为便捷地实现这些功能。

最新列表场景

利用Redis的列表结构,LPUSH能够在列表头部插入内容ID作为关键字,LTRIM可用于限制列表的数量,这样列表始终保持有N个ID,无需查询最新列表,直接依据ID就能访问对应的内容页面。

Redis各版本介绍

Redis的版本分为稳定版(Stable)和开发版(Unstable),其命名规则为“主版本号.次版本号.修订号”,例如7.0.11。

  • 主版本号:用于重大功能的更新,比如从5.x升级到6.x。
  • 次版本号:用于新增功能或者进行非破坏性的改进,例如从6.0升级到6.2。
  • 修订号:用于修复bug或者进行小的更新,例如从6.2.1升级到6.2.2。

在2025年时,长期支持(LTS)版本是6.x和7.x,旧版本逐渐停止维护。

旧版本(3.x及以下)

3.x版本已经不建议在生产环境中使用。

  • 代表版本:2016年发布的3.2。
  • 特性:
  • 支持简单集群(Redis Cluster),但存在节点故障转移不够灵活、数据迁移效率低等问题。
  • 数据结构较为有限,仅支持字符串、哈希、列表、集合、有序集合。
  • 缺点:
  • 没有分层存储、多线程I/O等现代特性,性能方面存在明显瓶颈。
  • 社区维护停止,存在安全漏洞风险。

4.x版本

2017年发布,目前已经停止维护,不建议用于生产环境。

  • 关键特性:
  • 模块系统(Modules):支持第三方扩展,像RedisJSON、RedisGraph等,拓展了功能生态。
  • 混合持久化(AOF-RDB Hybrid):重启时加载速度更快,减少数据丢失风险。
  • 过期键异步删除:避免大规模键过期时阻塞主线程。
  • 缺点:
  • 没有引入多线程,在高并发场景下性能受限。
  • 官方维护截止到2021年,安全性不足。

5.x版本

2019年发布,维护到2023年,目前市场上很多公司正在使用该版本。

  • 关键特性:
  • Redis Stream:正式引入流数据类型,支持发布 - 订阅、消息队列、消费者组等功能,替代了传统的Pub/Sub。
  • 异步复制改进:从节点支持部分重同步,减少全量复制开销。
  • 内置监控指标:通过INFO命令提供更详细的运行时统计信息。
  • 缺点:
  • 单线程模型没有改变,多核CPU利用率低。
  • 已经停止官方维护,仅建议用于测试环境。

6.x版本(生产环境推荐)

这是LTS版本,2021年发布,维护到2026年。是生产环境的首选,特别适合高并发、高吞吐量的业务,比如缓存、实时分析等。

  • 关键特性:
  • 多线程I/O:网络请求处理支持多线程(非数据处理多线程),大幅提升高并发场景下的吞吐量。
  • ACL权限系统:替代传统密码认证,支持细粒度权限控制,例如限制命令、键空间访问等。
  • 客户端缓存(Client-side Caching):减少客户端与服务端的交互次数,降低延迟。
  • RDB加密:数据持久化时支持加密存储,保护静态数据安全。
  • 优化点:
  • 改进集群节点通信协议,提升Redis Cluster的稳定性。
  • 增强内存管理,减少内存碎片。

7.x版本

LTS版本,2022年发布,维护到2028年,适用于需要分布式事务、海量数据存储(内存成本敏感)、复杂数据处理的场景,比如实时数据库、物联网数据存储等。

  • 革命性特性:
  • 全局事务(Global Transactions):支持跨分片的分布式事务,保证多节点数据一致性。
  • 分层存储(Memory-Tiered Storage):热数据存储在内存,冷数据自动下沉到磁盘,降低内存成本。
  • Server-side Scripting增强:Lua脚本支持异步执行,避免阻塞主线程。
  • JSON数据类型升级:原生支持JSON路径查询(JSONPath)和部分更新,性能提升50%以上。
  • 其他改进:
  • 新的EXACT模式用于模糊查询,提升键扫描效率。
  • 支持RESP3协议,优化客户端与服务端交互格式。

安装部署Redis6.2.x版本

Redis的下载地址为https://download.redis.io/releases/

环境信息

IP 系统 规格
10.37.97.56 Ubuntu 4c8g

下载与解压

# 进行下载操作
[root@master ~]# wget https://download.redis.io/releases/redis-6.2.18.tar.gz
# 执行解压
[root@master ~]# tar -xvf redis-6.2.18.tar.gz

下载相关依赖并编译

# 下载编译所需工具
[root@master ~]# apt update && apt install -y gcc automake autoconf libtool make

下载工具相关说明:
- gcc:GNU编译器套件,用于对C/C++代码进行编译。
- automake:用于生成Makefile.in文件,辅助实现自动化构建。
- autoconf:用来生成configure脚本,检测系统环境。
- libtool:对库文件的编译和链接进行管理,实现跨平台兼容。
- make:作为构建工具,依据Makefile来编译项目。

开始安装:

[root@master ~]# cd redis-6.2.18/
[root@master ~/redis-6.2.18]# make
...
# 此处会刷出大量编译信息,稍等片刻即可

配置环境变量

# 创建软连接
[root@master ~]# ln -s /root/redis-6.2.18 /root/redis
# 配置环境变量
[root@master ~]# echo "export PATH=$PATH:/root/redis/src" >> /etc/profile && source /etc/profile

创建数据目录并复制配置文件

# 创建数据目录
[root@master ~]# mkdir -p /data00/data/redis
[root@master ~]# cp /root/redis/redis.conf /data00/data/redis/

# 创建日志目录
[root@master ~]# mkdir /var/log/redis

修改Redis配置文件

[root@master ~]# vim /data00/data/redis/redis.conf
# 第75行,修改远程访问地址
75:bind 0.0.0.0
# 第98行,修改端口号
98:port 6379
# 第259行,将守护进程运行模式设置为yes(默认是前台运行)
259:daemonize yes
# 第304行,指定redis的日志路径
304:logfile "/var/log/redis/redis.log"
# 第329行,指定数据库的数量,默认是16个
329:databases 16
# 第433行,设置持久化文件名称
433:dbfilename dump.rdb
# 第456行,设置redis的数据存储目录,与之前创建的路径保持一致
456:dir /data00/data/redis/
# 第903行,设置密码,建议不要使用简单密码
903:requirepass 123456

启动Redis

# 启动redis,通过指定配置文件来启动
[root@master ~]# redis-server /data00/data/redis/redis.conf

# 查看端口,检查是否启动成功
[root@master ~]# ss -lntup | grep 6379
tcp   LISTEN 0      511                           0.0.0.0:6379       0.0.0.0:*    users:(("redis-server",pid=1818909,fd=6))

连接Redis

# 连接redis,-h指定IP地址,-p指定端口号,-a指定密码
[root@master ~]# redis-cli -h 127.0.0.1 -p 6379 -a '!Xinxin123'
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> info
# Server
redis_version:6.2.18
...# 会打印出很多日志信息
版权声明:程序员胖胖胖虎阿 发表于 2025年6月19日 下午8:04。
转载请注明:

Redis入门剖析与6.2.x版本安装流程

| 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...