目录
Redis重大版本
Redis 2.6
Redis 2.8
Redis 3.0
Redis 3.2
Redis 4.0
Redis 5.0
Redis 6.0
Redis 7.0
安装并启动Redis
安装scl源
安装Redis5.0
启动Redis
停止Redis
Redis重大版本
Redis 借鉴了 Linux 操作系统对于版本号的命名规则:版本号第⼆位如果是奇数,则为⾮稳定版本
(例如 2.7、2.9、3.1),如果是偶数,则为稳定版本(例如 2.6、2.8、3.0、3.2)。当前奇数版本就是下⼀个稳定版本的开发版本,例如 2.9 版本是 3.0 版本的开发版本。所以我们⽣产环境通常选取偶数版本的 Redis,如果对于某些新的特性想提前了解和使⽤,可以选择最新的奇数版本。⽬前最新的版本是 7.0 版本。本篇文章将对 Redis 发展过程中的⼀些重要版本及特性进⾏说明,并且手把手教会你在Centos7上进行Redis的安装;
Redis 2.6
Redis 2.6 在 2012 年正式发布,相⽐于 Redis 2.4,主要特性如下:
- 服务端⽀持 Lua 脚本
- 去掉虚拟内存相关功能。
- 放开对客⼾端连接数的硬编码限制。
- 键的过期时间⽀持毫秒。
- 从结点提供只读功能。
- 两个新的位图命令:bitcount 和 bitop。
- 增强了 redis-benchmark 的功能:⽀持定制化的压测、CSV 格式输出等功能。
- 基于浮点数⾃增命令:incrbyfloat 和 hincrbyfloat。
- redis-cli 可以使⽤ --eval 参数实现 Lua 脚本执⾏。
- shutdown 命令增强。
- info 可以按照 setction 输出,并且添加了⼀些统计项。
- 重构了⼤量的核⼼代码,所i有集群相关的代码都去掉了,会在 3.0 ⽀持 cluster 功能。
- sort 命令优化。
Redis 2.8
Redis 2.8 在 2013 年正式发布,相⽐于 Redis 2.6,主要特性如下:
- 添加部分主从复制的功能,在⼀定程度上降低了由于⽹络问题,造成频繁全量复制⽣成 RDB 对
- 系统造成的压⼒。
- 尝试性地⽀持 IPv6。
- 可以通过 config set 命令设置 maxclients。
- 可以⽤ bind 命令绑定多个 IP 地址。
- Redis 设置了明显的进程名,⽅便使⽤ ps 命令查看系统进程。
- config rewrite 命令可以将 config set 持久化到 Redis 配置⽂件中。
- 发布订阅添加了 pubsub 命令。
- Redis Sentinel 第⼆版,相⽐于 Redis 2.6 的 Redis Sentinel,此版本已经变成⽣产可⽤。
Redis 3.0
- Redis 3.0 在 2015 年正式发布,相⽐于 Redis 2.8,主要特性如下:
- Redis Cluster:Redis 提供的官⽅分布式实现。
- 全新的 embedded string 对象编码结果,优化了⼩对象内存访问,在特定的⼯作负载时,下载
- 速度⼤幅提⾼。
- 优化了 LRU 算法,⼤幅提供性能。
- migrate 链接缓存,⼤幅提供键迁移的速度。
- migrate 命令新增两个参数:copy 和 replace。
- client pause 命令,在指定时间内中⽌处理客⼾端请求。
- bitcount 命令性能提⾼。
- config set 设置 maxmemory 时候能够设置不⼀样的单位(以前只能是字节)。
- Redis⽇志⼩作调整:⽇志中会反应当前实例的⻆⾊(master 或者 slave)。
- incr命令性能提⾼。
Redis 3.2
Redis 3.2 在 2016 年正式发布,相⽐于 Redis 3.0,主要特性如下:
- 添加 GEO 相关功能。
- SDS 在速度和节省空间上都作了优化。
- ⽀持⽤ upstart 或者 systemd 管理 Redis 进程。
- 新的 List 编码类型:quicklist。
- 从节点读取过时数据保证⼀致性。
- 添加了 hstrlen 命令。
- 加强了 debug 命令,⽀持了更多的参数。
- Lua 脚本功能加强。
- 添加了 Lua Debugger。
- config set ⽀持更多的配置参数。
- 优化了 Redis 崩溃后的相关报告。
- 新的 RDB 格式,可是仍然兼容旧的 RDB。
- 加速 RDB 的加载速度。
- spop 命令⽀持个数参数。
- cluster nodes 命令获得加速。
- Jemalloc 更新到 4.0.3 版本。
Redis 4.0
Redis 4.0 在 2017 年正式发布,相⽐于 Redis 3.2,主要特性如下:
- 提供了模块系统(module),⽅便第三⽅开发者拓展 Redis 的功能。
- PSYNC 2.0:优化了以前版本中,主从节点切换必然引发全量复制的问题。
- 提供了新的缓存剔除算法:LFU(Last Frequently Used),注意 LFU 和 LRU 算法的不同之处,LRU 的淘汰规则是基于访问时间,⽽ LFU 是基于访问次数的,并对已有算法进⾏了优化。
- 提供了⾮阻塞 del 和 flushall / flushdb 功能,新添加了 unlink 命令, 这个命令是 del 命令的异步版本, 它可以将删除指定键的操作放在后台线程⾥⾯执⾏。
- 提供了 memory 命令,实现对内存更为全⾯的监控统计。
- 提供了交互数据库功能,实现 Redis 内部数据库的数据置换。
- 提供了 RDB-AOF 混合持久化格式,充分利⽤了 AOF 和 RDB 各⾃优点。
- Redis Cluster 兼容 NAT 和 docker 。
Redis 5.0
- Redis 5.0 在 2018 年正式发布,相⽐于 Redis 4.0,主要特性如下:
- 新的流数据类型(stream)。
- 新的 Redis 模块 API:定时器、集群和字典 API。
- RDB 现在可存储 LFU 和 LRU 信息。
- redis-cli 中的集群管理器从 Ruby(redis-trib.rb)移植到了 C 语⾔代码。执⾏ `redis-cli --cluster help` 命令以了解更多信息。
- 新的有序集合(sorted set)命令:zpopmin / zpopmax 和阻塞变体(blocking variants)。
- 升级 Active defragmentation ⾄ v2 版本。
- 增强 HyperLogLog 的实现。
- 更好的内存统计报告。
- 许多包含⼦命令的命令现在都有⼀个 help ⼦命令。
- 客⼾端频繁连接和断开连接时,性能表现更好。
- 许多错误修复和其他⽅⾯的改进。
- 升级 Jemalloc ⾄ 5.1 版本。
- 引⼊ client unblock 和 client id。
- 新增 lolwut 命令。
- 在不存在需要保持向后兼容性的地⽅,弃⽤ "slave" 术语。
- ⽹络层中的差异优化。
- 增强对 Lua 的⽀持:将 Lua 脚本更好地传播到 replicas / AOF、Lua 脚本现在可以超时并在副本中进⼊ -BUSY 状态。
- 引⼊动态的 HZ(Dynamic HZ)以平衡空闲 CPU 使⽤率和响应性。
- 对 Redis 核⼼代码进⾏了重构并在许多⽅⾯进⾏了改进。
Redis 6.0
Redis 6.0 在 2020 年正式发布,相⽐于 Redis 5.0,主要特性如下:
- Redis 6.0 引⼊多线程 IO,但多线程部分只是⽤来处理⽹络数据的读写和协议解析,执⾏命令仍然是单线程。
- 实现了client-side-caching(客⼾端缓存)功能。放弃了caching slot,⽽只使⽤ key names。
- Redis 6.0 开始在兼容 RESP 2 的基础上,开始⽀持 RESP 3(RESP,Redis SerializationProtocol 是 Redis 服务端与客⼾端之间通信的协议)。
- 连接⽀持 SSL,更加安全。
- 增强 ACL 权限控制:⽀持对客⼾端的权限控制,实现对不同的 key 授予不同的操作权限、新增⼀个新的ACL ⽇志命令,允许查看所有违反 ACL 的客⼾机、访问不应该访问的命令、访问不应该访问的密钥,或者验证尝试失败。这对于调试 ACL 问题⾮常有⽤。
- 提升了RDB⽇志加载速度。
- 发布官⽅的 Redis 集群代理模块 Redis Cluster Proxy。
- 提供了众多的新模块(modules)API。
Redis 7.0
Redis 7.0 在 2022 年正式发布,相⽐于 Redis 6.0,主要特性如下:
- 将 AOF ⽂件的存储⽅式改为在⼀个⽂件夹下存储多个⽂件。
- 将持久化⽂件 RDB 的版本升级为 10,与之前的 RDB ⽂件版本不再兼容。
- 在读取⽼的 RDB ⽂件格式的时候将 ziplist 转换为 listpack,这种转换发⽣于两种情况之下:从磁盘读取⽂件或者从⼀个主节点进⾏复制⽂件的时候。
- 在 redis.conf 配置⽂件中,protected-mode 默认更改为 yes,只有当你希望你的客⼾端在没有授权的情况下可以连接到 Redis server 的时候可以将 protected-mode 设置为 no。
- 在 ACL 中,pub / sub channel 默认是被阻塞的。
- 在从节点中,TTL 的时间标识的是绝对时间,不再是相对时间,从⽽保证了过期数据被及时删除。
- 不再⽀持 gopher 协议。
- 当在配置⽂件中设置 replica-serve-stale-data=no, 当主节点不再提供服务时,ping 命令得不到返回值。
安装并启动Redis
上面我们大致了解了Redis的几个重大版本,我们选择安装5.0版本是因为这个版本支持了大部分的功能特性,相较于最新的7.0版本,更容易进行安装和使用。我以我的Centos7云服务器为例进行安装Redis5.0;
安装scl源
yum install centos-release-scl-rh
安装Redis5.0
yum install rh-redis5-redis
创建符号链接(软链接)
默认安装的⽬录为 /opt/rh/rh-redis5/root/usr/bin/ , 藏的太深了, 不⽅便使⽤. 我们通过符号链接, 把需要用的关键内容设置到⽅便使用的目录中。
针对可执行程序设置符号链接
cd /usr/bin
ln -s /opt/rh/rh-redis5/root/usr/bin/redis-server ./redis-server
ln -s /opt/rh/rh-redis5/root/usr/bin/redis-sentinel ./redis-sentinel
ln -s /opt/rh/rh-redis5/root/usr/bin/redis-cli ./redis-cli
针对配置文件设置符号链接
cd /etc/
ln -s /etc/opt/rh/rh-redis5/ ./redis
修改配置文件
设置ip地址
bind 0.0.0.0
关闭保护模式
protected-mode no
启动守护进程
daemonize yes
设置工作目录
先创建工作目录
mkdir -p /var/lib/redis
在配置文件中设置工作目录
dir /var/lib/redis
设置日志目录
先创建日志目录
mkdir -p /var/log/redis/
在配置文件中设置日志目录
logfile /var/log/redis/redis-server.log
启动Redis
redis-server /etc/redis/redis.conf
停止Redis
先查看Redia-server的pid
ps aux | grep redis
然后通过kill命令直接杀死Redis进程
kill pid
今天对Redis重大版本和如何安装Redis的分享到这就结束了,希望大家读完后有很大的收获,也可以在评论区点评文章中的内容和分享自己的看法;个人主页还有很多精彩的内容。您三连的支持就是我前进的动力,感谢大家的支持!!!