下载安装

下载安装包

进入官网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,需要执行以下命令安装后再执行上述命令:

yum install -y wget

解压

tar -zxvf redis-6.2.4.tar.gz

编译

下载安装gcc环境:

yum install -y gcc-c++ autoconf autamake

在这里插入图片描述
⚠️注意:在Centos7中安装最新版本的Redis需要升级gcc,默认情况yum安装的gcc版本是4.8.5,由于版本过低,在编译时会报如下错误。执行如下命令升级gcc:

#安装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

在这里插入图片描述
切换到解压目录,进行编译:

cd redis-6.2.4
make

在这里插入图片描述

安装

# 创建安装目录
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也关闭。

./redis-server

在这里插入图片描述
可以看到Redis对应的版本号,启动的模式是单体,默认端口号为6379。
这种方式启动执行 ctrl + C即可退出。
image.png

进入Redis解压目录,复制对应的配置文件到bin目录。

cd /usr/local/src/redis-6.2.4

cp redis.conf /usr/local/redis/bin/

在这里插入图片描述
回到bin目录,编辑对应的配置文件:

cd /usr/local/redis/bin/

vim redis.conf

daemonize参数值设置成yes。重新执行如下命令启动:

./redis-server ./redis.conf

查看Redis进程:

ps -ef | grep redis

# 停止对应的Redis进程
kill -9 6207

配置开机自启动(centos7以上)

  1. 在系统服务目录里创建redis.service文件
vim /etc/systemd/system/redis.service

写入以下内容:

[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

重载系统服务:

systemctl daemon-reload
  1. 测试并加入开机自启动

关闭redis-server:

systemctl stop redis.service

开启redis-server:

systemctl start redis.service

重启redis-server:

systemctl restart redis.service

查看redis-server状态:

systemctl status redis.service

开启成功,将服务加入开机自启

systemctl enable redis.service

在这里插入图片描述

通过本地客户端访问redis

上述redis安装启动后,我们发现本地客户端无法访问到服务器的Redis,通过配置redis.conf文件,把bind参数设置成 0.0.0.0,允许所有IP连接,测试使用,生产不要这么配置,风险较大⚠️。

# 指定允许访问的ip
bind 0.0.0.0

同时关闭防火墙:

# 关闭防火墙
systemctl stop firewalld
# 查看防火墙状态
systemctl status firewalld

客户端连接访问:
在这里插入图片描述

Redis关键版本特性

Redis2.6(2012)

  1. 服务端支持Lua脚本。
  2. 去掉虚拟内存相关功能。
  3. 放开对客户端连接数的硬编码限制。
  4. 键的过期时间支持毫秒。
  5. 从节点支持只读功能。
  6. 两个新的位图命令:bitcount和bitop。
  7. 增强了redis-benchmark的功能:支持定制化的压测,CSV输出等功能。
  8. 基于浮点数自增命令:incrbyfloat和hincrbyfloat。
  9. redis-cli可以使用–eval参数实现Lua脚本执行。
  10. shutdown命令增强。
  11. 重构了大量的核心代码,所有集群相关的代码都去掉了,cluster功能将会是3.0版本最大的亮点。
  12. info可以按照section输出,并且添加了一些统计项
  13. sort命令优化

Redis2.8(2013-11-23)

  1. 添加部分主从复制的功能,在一定程度上降低了由于网络问题,造成频繁全量复制生成RDB对系统造成的压力。
  2. 尝试性的支持IPv6.
  3. 可以通过config set命令设置maxclients。
  4. 可以用bind命令绑定多个IP地址。
  5. Redis设置了明显的进程名,方便使用ps命令查看系统进程。
  6. config rewrite命令可以将config set持久化到Redis配置文件中。
  7. 发布订阅添加了pubsub。
  8. Redis Sentinel第二版,相比于Redis2.6的Redis Sentinel,此版本已经变成生产可用。

Redis3.0(2015-04-01里程碑)

  1. Redis Cluster:Redis的官方分布式实现。
  2. 全新的embedded string对象编码结果,优化小对象内存访问,在特定的工作负载下载速度大幅 提升。
  3. Iru算法大幅提升。
  4. migrate连接缓存,大幅提升键迁移的速度。
  5. migrate命令两个新的参数copy和replace。
  6. 新的client pause命令,在指定时间内停止处理客户端请求。
  7. bitcount命令性能提升。
  8. cinfig set设置maxmemory时候可以设置不同的单位(之前只能是字节)。
  9. Redis日志小做调整:日志中会反应当前实例的角色(master或者slave)。
  10. incr命令性能提升。

Redis3.2(2016-05-06)

  1. 添加GEO相关功能。
  2. SDS在速度和节省空间上都做了优化。
  3. 支持用upstart或者systemd管理Redis进程。
  4. 新的List编码类型:quicklist。
  5. 从节点读取过期数据保证一致性。
  6. 添加了hstrlen命令。
  7. 增强了debug命令,支持了更多的参数。
  8. Lua脚本功能增强。
  9. 添加了Lua Debugger。
  10. config set 支持更多的配置参数。
  11. 优化了Redis崩溃后的相关报告。
  12. 新的RDB格式,但是仍然兼容旧的RDB。
  13. 加速RDB的加载速度。
  14. spop命令支持个数参数。
  15. cluster nodes命令得到加速。
  16. Jemalloc更新到4.0.3版本。

Redis4.0(2017-07-15 大改版)

  1. 提供了模块系统,方便第三方开发者拓展Redis的功能。
  2. PSYNC2.0:优化了之前版本中,主从节点切换必然引起全量复制的问题。
  3. 提供了新的缓存剔除算法:LFU(Last Frequently Used),并对已有算法进行了优化。
  4. 提供了非阻塞del和flushall/flushdb功能,有效解决删除了bigkey可能造成的Redis阻塞。
  5. 提供了memory命令,实现对内存更为全面的监控统计。
  6. 提供了交互数据库功能,实现Redis内部数据库的数据置换。
  7. 提供了RDB-AOF混合持久化格式,充分利用了AOF和RDB各自优势。
  8. Redis Cluster 兼容NAT和Docker

Redis5.0(2018-10-18)

  1. 新的Stream数据类型。
  2. 新的Redis模块API:Timers and Cluster API。
  3. RDB现在存储LFU和LRU信息。
  4. 集群管理器从Ruby(redis-trib.rb)移植到C代码。可以在redis-cli中。查看 redis-cli —cluster help`了解更多信息。
  5. 新sorted set命令:ZPOPMIN / MAX和阻塞变量。
  6. 主动碎片整理V2。
  7. 增强HyperLogLog实现。
  8. 更好的内存统计报告。
  9. 许多带有子命令的命令现在都有一个HELP子命令。
  10. 客户经常连接和断开连接时性能更好。
  11. 错误修复和改进。
  12. Jemalloc升级到5.1版

Redis6.0(2020-08-27)

  1. 许多新的模块API。
  2. 更好过期算法。
  3. SSL支持。
  4. ACL支持。
  5. 新的RESP3协议。
  6. 客户端缓存。
  7. 多线程I/O。多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程。
  8. 副本的无盘复制。
  9. redis-benchmark支持和redis-cli改进。
  10. Systemd 支持重写。
  11. redis集群代理的发布(还不稳定,不建议生产使用)。
  12. disque模块的发布

Redis7.0(2022-01-31 )

  1. Redis Functions:Redis函数,一种新的通过服务端脚本扩展Redis的方式,函数与数据本身一起存储。函数还被持久化到AOF文件,并从主文件复制到副本,因此它们与数据本身一样持久,见:https://redis.io/topics/functions-intro
  2. ACL改进:支持基于key的细粒度的权限,允许用户支持多个带有选择器的命令规则集,见:https://redis.io/topics/acl#key-permissionshttps://redis.io/topics/acl#selectors
  3. sharded-pubsub:分片发布/订阅支持,之前消息会在整个集群中广播,而与订阅特定频道/模式无关。发布行为会连接到集群中的所有节点,而不用客户端连接到所有节点都会收到订阅消息。见 https://redis.io/topics/pubsub#sharded-pubsub
  4. 在大多数情况下把子命令当作一类命令处理(Treat subcommands as commands)(影响 ACL类别、INFO 命令统计等)
  5. 文档更新:提供命令的元数据和文档,文档更完善,见https://redis.io/commands/command-docshttps://redis.io/topics/command-tips
  6. Command key-specs:为客户端定位key参数和读/写目的提供一种更好的方式;
  7. 多部分 AOF 机制避免了 AOF 重写的开销;
  8. 集群支持主机名配置,而不仅仅是 IP 地址;
  9. 客户端驱逐策略:改进了对网络缓冲区消耗的内存的管理,并且提供一个选项,当总内存超过限制时,剔除对应的客户端;
  10. 提供一种断开集群总线连接的机制,来防止不受控制的缓冲区增长;
  11. AOF:增加时间戳和对基于时间点恢复的支持;
  12. Lua:支持 EVAL 脚本中的函数标志;
  13. Lua:支持 Verbatim 和 Big-Number 类型的 RESP3 回复;
  14. Lua:可以通过 redis.REDIS_VERSION、redis.REDIS_VERSION_NUM来获取 Redis 版本。

本文内容到此结束了,
如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。
如有错误❌疑问💬欢迎各位大佬指出。
主页共饮一杯无的博客汇总👨‍💻

保持热爱,奔赴下一场山海。🏃🏃🏃

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐