源码编译安装 Redis 6.x

马谦马谦马谦 Redis评论701字数 1754阅读 5 分 50 秒阅读模式

一、编译安装

Redis 官网地址:redis 官网,官网可能会打不开,可以在 github 的发布页中下载:Release-redis

当前最新版 6.0-rc1,下载 redis:

编译 redis6.0 需要 GCC5 以上版本,低版本会报错,如果 GCC 版本低于 5,只能使用 redis5.x 版本。

解压源码文件编译:

注意 make 的时候要添加 MALLOC=libc 参数,否则可能出现以下报错:

这个参数的用处是指定 redis 使用的 malloc 函数为 libc 中的,默认情况下 redis 使用的是 jmalloc,大部分系统默认没有安装,会报错。

编译完成后,安装 redis 到/usr/local/redis-6.0-rc1

给安装目录创建软链接并添加到 PATH 路径下:

执行完成后,直接运行 redis-server 就能启动 redis 了,可以加上--port 参数指定运行端口。

源码编译安装Redis 6.x-图片1

二、服务配置

默认的配置文件在安装目录下:redis.conf ,复制到/etc/redis/ 目录下:

6379 是 redis 的默认监听端口,根据不同端口来命名配置文件可以使主机同时运行多个 redis 实例,方便管理。

配置文件中的一些参数说明:

添加 redis 用户:

设置目录权限:

三、添加服务

3.1 services 服务

安装目录下的 utils 默认有一个 redis_init_script 脚本,复制到/etc/ini.d 目录下:

里面需要修改的内容:

启动和关闭 redis:

3.2 systemd 服务

使用 systemd 服务时,注意 redis 不能以守护进程启动:

复制以下内容到/etc/systemd/system/redis_6379.service

然后执行 systemctl start redis_6379 即可启动服务。

3.2 launchd 服务

2020-02-18 添加 mac 系统下 launchctl 配置。

luanchd 服务是 mac 系统下的后台管理程序,把以下配置保存到文件 homebrew.mxcl.redis.plist,然后放到~/Library/LaunchAgents/路径下 (注意修改程序和日志文件路径):

编辑完成后,载入 redis 配置文件:

启动和停止进程:

上面的配置中没有设置开机自启,如果希望开机自启,要把 18 行的<false/> 改成<true>

四、其他

4.1 低版本 GCC 编译 redis-6.x 报错问题

使用 GCC4 编译 redis-6.0,会报错:

源码编译安装Redis 6.x-图片2

问题原因:

In old gcc version like 4.7/8, there is a bug that miss the macro like [STDC_NO_ATOMICS]

低版本的 GCC 例如 4.7 和 4.8,有一个缺少类似 [STDC_NO_ATOMICS] 宏定义的 BUG 。

可参考 fix: old gcc without atomic support compile failed

解决方案是升级 GCC5 或以上

  最后更新:2021-3-9
马谦马谦马谦
  • 本文由 马谦马谦马谦 发表于 2017 年 11 月 20 日 22:40:32
  • 转载请务必保留本文链接:https://www.dyxmq.cn/databases/redis/linux-install-redis.html
redis源码分析:链表实现 Redis

redis 源码分析:链表实现

一、链表定义 链表在 redis 中的使用十分广泛,例如列表的底层实现之一就是链表,包括发布、订阅等等功能都是有用到链表的。 redis 中链表在 adlist.h 和 adlist.c 中实现,只用了 300+行代码...
redis中的发布和订阅 Redis

redis 中的发布和订阅

一、发布和订阅 除了任务队列以外,redis 还有一种基于 「发布/订阅」 模式的消息传递,使得客户端可以订阅某个频道,当频道有消息产生时,会把消息传递到所有的订阅者。和列表不一样的是,发布和订阅可以是一对...
Redis小案例(二):redis实现消息队列 Redis

Redis 小案例 (二):redis 实现消息队列

一、任务队列概述 消息队列,顾名思义就是一个用来传递任务的队列。消息队列在开发中十分常见,经常用在页面后台处理需要很长时间的操作时,例如发送邮件、短信以及进行复杂数据运算操作等,这些操作通常会阻塞页面...
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证