文章目录
- 下载安装
- 下载安装包
- 解压
- 编译
- 安装
- 启动
- 通过本地客户端访问redis
- Redis关键版本特性
- Redis2.6(2012)
- Redis2.8(2013-11-23)
- Redis3.0(2015-04-01里程碑)
- Redis3.2(2016-05-06)
- Redis4.0(2017-07-15 大改版)
- Redis5.0(2018-10-18)
- Redis6.0(2020-08-27)
- Redis7.0(2022-01-31 )
下载安装
下载安装包
进入官网https://redis.io/,点击download。一般下载Stable版本(稳定版),可以看到6版本最新的已经到6.2.4了,7.0版本都已经发布了,Redis版本更新是真的快啊。
可以在此页面上找到所有的Redis发行版本:https://download.redis.io/releases/。
这里我们选择6.2.4版本通过wget
命令在Centos系统来下载安装:
wget -P /usr/local/src/ https://download.redis.io/releases/redis-6.2.4.tar.gz
如果系统没有wget,需要执行以下命令安装后再执行上述命令:
代码语言:javascript复制yum install -y wget
解压
代码语言:javascript复制tar -zxvf redis-6.2.4.tar.gz
编译
下载安装gcc环境:
代码语言:javascript复制yum install -y gcc-c autoconf autamake
⚠️注意:在Centos7中安装最新版本的Redis需要升级gcc,默认情况yum安装的gcc版本是4.8.5,由于版本过低,在编译时会报如下错误。执行如下命令升级gcc:
代码语言:javascript复制#安装scl 源
yum install -y centos-release-scl scl-utils-build
#安装9版本的gcc. gcc-c 、gdb工具链(toolchian)
yum install -y devtoolset-9-toolchain
#临时覆盖系统原有的gcc引用
scl enable devtoolset-9 bash
#查看 gcc当前版本
gcc -v
切换到解压目录,进行编译:
代码语言:javascript复制cd redis-6.2.4
make
安装
代码语言:javascript复制# 创建安装目录
mkdir -p /usr/local/redis
# 执行安装命令
make PREFIX=/usr/local/redis/ install
进入安装的bin目录可以看到以下文件:
文件说明:
redis-server
:启动Redis
redis-cli
: redis命令行客户端
redis-benchmark
:基准测试工具
redis-check-aof
: AOF持久化文件检测和修复工具
redis-check-rdb
: RDB 持久化文件检测和修复工具
redis-sentinel
:启动redis Sentinel
redis.conf
:redis 配置文件
dump.rdb
:Redis服务器自动生成的,内存快照,持久化机制叫做SNAPSHOT,服务器宕机,重新启动redis服务器程序时redis会自动加载 dump.rdb,将数据库状态恢复到上一次做SNAPSHOT时的状态
启动
如果没有在系统环境变量配置redis,需要进入bin目录启动 前端启动,窗口关闭后,redis也关闭。
代码语言:javascript复制./redis-server
可以看到Redis对应的版本号,启动的模式是单体,默认端口号为6379。 这种方式启动执行 ctrl C即可退出。
进入Redis解压目录,复制对应的配置文件到bin目录。
代码语言:javascript复制cd /usr/local/src/redis-6.2.4
cp redis.conf /usr/local/redis/bin/
回到bin目录,编辑对应的配置文件:
代码语言:javascript复制cd /usr/local/redis/bin/
vim redis.conf
把daemonize
参数值设置成yes
。重新执行如下命令启动:
./redis-server ./redis.conf
查看Redis进程:
代码语言:javascript复制ps -ef | grep redis
# 停止对应的Redis进程
kill -9 6207
配置开机自启动(centos7以上):
- 在系统服务目录里创建redis.service文件
vim /etc/systemd/system/redis.service
写入以下内容:
代码语言:javascript复制[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重载系统服务:
代码语言:javascript复制systemctl daemon-reload
- 测试并加入开机自启动
关闭redis-server:
代码语言:javascript复制systemctl stop redis.service
开启redis-server:
代码语言:javascript复制systemctl start redis.service
重启redis-server:
代码语言:javascript复制systemctl restart redis.service
查看redis-server状态:
代码语言:javascript复制systemctl status redis.service
开启成功,将服务加入开机自启
代码语言:javascript复制systemctl enable redis.service
通过本地客户端访问redis
上述redis安装启动后,我们发现本地客户端无法访问到服务器的Redis,通过配置redis.conf文件,把bind参数设置成 0.0.0.0,允许所有IP连接,测试使用,生产不要这么配置,风险较大⚠️。
代码语言:javascript复制# 指定允许访问的ip
bind 0.0.0.0
同时关闭防火墙:
代码语言:javascript复制# 关闭防火墙
systemctl stop firewalld
# 查看防火墙状态
systemctl status firewalld
客户端连接访问:
Redis关键版本特性
Redis2.6(2012)
- 服务端支持Lua脚本。
- 去掉虚拟内存相关功能。
- 放开对客户端连接数的硬编码限制。
- 键的过期时间支持毫秒。
- 从节点支持只读功能。
- 两个新的位图命令:bitcount和bitop。
- 增强了redis-benchmark的功能:支持定制化的压测,CSV输出等功能。
- 基于浮点数自增命令:incrbyfloat和hincrbyfloat。
- redis-cli可以使用–eval参数实现Lua脚本执行。
- shutdown命令增强。
- 重构了大量的核心代码,所有集群相关的代码都去掉了,cluster功能将会是3.0版本最大的亮点。
- info可以按照section输出,并且添加了一些统计项
- sort命令优化
Redis2.8(2013-11-23)
- 添加部分主从复制的功能,在一定程度上降低了由于网络问题,造成频繁全量复制生成RDB对系统造成的压力。
- 尝试性的支持IPv6.
- 可以通过config set命令设置maxclients。
- 可以用bind命令绑定多个IP地址。
- Redis设置了明显的进程名,方便使用ps命令查看系统进程。
- config rewrite命令可以将config set持久化到Redis配置文件中。
- 发布订阅添加了pubsub。
- Redis Sentinel第二版,相比于Redis2.6的Redis Sentinel,此版本已经变成生产可用。
Redis3.0(2015-04-01里程碑)
- Redis Cluster:Redis的官方分布式实现。
- 全新的embedded string对象编码结果,优化小对象内存访问,在特定的工作负载下载速度大幅 提升。
- Iru算法大幅提升。
- migrate连接缓存,大幅提升键迁移的速度。
- migrate命令两个新的参数copy和replace。
- 新的client pause命令,在指定时间内停止处理客户端请求。
- bitcount命令性能提升。
- cinfig set设置maxmemory时候可以设置不同的单位(之前只能是字节)。
- Redis日志小做调整:日志中会反应当前实例的角色(master或者slave)。
- incr命令性能提升。
Redis3.2(2016-05-06)
- 添加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版本。
Redis4.0(2017-07-15 大改版)
- 提供了模块系统,方便第三方开发者拓展Redis的功能。
- PSYNC2.0:优化了之前版本中,主从节点切换必然引起全量复制的问题。
- 提供了新的缓存剔除算法:LFU(Last Frequently Used),并对已有算法进行了优化。
- 提供了非阻塞del和flushall/flushdb功能,有效解决删除了bigkey可能造成的Redis阻塞。
- 提供了memory命令,实现对内存更为全面的监控统计。
- 提供了交互数据库功能,实现Redis内部数据库的数据置换。
- 提供了RDB-AOF混合持久化格式,充分利用了AOF和RDB各自优势。
- Redis Cluster 兼容NAT和Docker。
Redis5.0(2018-10-18)
- 新的Stream数据类型。
- 新的Redis模块API:Timers and Cluster API。
- RDB现在存储LFU和LRU信息。
- 集群管理器从Ruby(redis-trib.rb)移植到C代码。可以在redis-cli中。查看 redis-cli —cluster help`了解更多信息。
- 新sorted set命令:ZPOPMIN / MAX和阻塞变量。
- 主动碎片整理V2。
- 增强HyperLogLog实现。
- 更好的内存统计报告。
- 许多带有子命令的命令现在都有一个HELP子命令。
- 客户经常连接和断开连接时性能更好。
- 错误修复和改进。
- Jemalloc升级到5.1版
Redis6.0(2020-08-27)
- 许多新的模块API。
- 更好过期算法。
- SSL支持。
- ACL支持。
- 新的RESP3协议。
- 客户端缓存。
- 多线程I/O。多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程。
- 副本的无盘复制。
- redis-benchmark支持和redis-cli改进。
- Systemd 支持重写。
- redis集群代理的发布(还不稳定,不建议生产使用)。
- disque模块的发布
Redis7.0(2022-01-31 )
- Redis Functions:Redis函数,一种新的通过服务端脚本扩展Redis的方式,函数与数据本身一起存储。函数还被持久化到AOF文件,并从主文件复制到副本,因此它们与数据本身一样持久,见:https://redis.io/topics/functions-intro;
- ACL改进:支持基于key的细粒度的权限,允许用户支持多个带有选择器的命令规则集,见:https://redis.io/topics/acl#key-permissions 和https://redis.io/topics/acl#selectors;
- sharded-pubsub:分片发布/订阅支持,之前消息会在整个集群中广播,而与订阅特定频道/模式无关。发布行为会连接到集群中的所有节点,而不用客户端连接到所有节点都会收到订阅消息。见 https://redis.io/topics/pubsub#sharded-pubsub
- 在大多数情况下把子命令当作一类命令处理(Treat subcommands as commands)(影响 ACL类别、INFO 命令统计等)
- 文档更新:提供命令的元数据和文档,文档更完善,见https://redis.io/commands/command-docs 、https://redis.io/topics/command-tips
- Command key-specs:为客户端定位key参数和读/写目的提供一种更好的方式;
- 多部分 AOF 机制避免了 AOF 重写的开销;
- 集群支持主机名配置,而不仅仅是 IP 地址;
- 客户端驱逐策略:改进了对网络缓冲区消耗的内存的管理,并且提供一个选项,当总内存超过限制时,剔除对应的客户端;
- 提供一种断开集群总线连接的机制,来防止不受控制的缓冲区增长;
- AOF:增加时间戳和对基于时间点恢复的支持;
- Lua:支持 EVAL 脚本中的函数标志;
- Lua:支持 Verbatim 和 Big-Number 类型的 RESP3 回复;
- Lua:可以通过 redis.REDIS_VERSION、redis.REDIS_VERSION_NUM来获取 Redis 版本。
本文内容到此结束了, 如有收获欢迎点赞