服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - Linux安装Redis实现过程及报错解决方案

Linux安装Redis实现过程及报错解决方案

2020-08-28 17:33shookm Linux

这篇文章主要介绍了Linux安装Redis实现过程及报错解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

今天安装redis出现些之前安装不曾出现错误,一并在此做个记录

一、安装redis及出现错误

首先下载redis,官方下载地址页面:https://redis.io/download

我们这里选择稳定版6.0.1版本

Linux安装Redis实现过程及报错解决方案

正常安装步骤如下:

?
1
2
3
4
5
6
[root@localhost ~]# yum install gcc
[root@localhost ~]# cd /usr/local
[root@localhost local]# wget http://download.redis.io/releases/redis-6.0.1.tar.gz
[root@localhost local]# tar -xvf redis-6.0.1.tar.gz
[root@localhost local]# cd /usr/local/redis-6.0.1/
[root@localhost redis-6.0.1]# make PREFIX=/usr/local/redis install

这里报了如下错误

make[1]: *** [server.o] 错误 1
make[1]: 离开目录“/usr/redis-6.0.1/src”
make: *** [all] 错误 2

server.c:2402:11: 错误:‘struct redisServer'没有名为‘assert_file'的成员
server.assert_file = "<no file>";
^
server.c:2403:11: 错误:‘struct redisServer'没有名为‘assert_line'的成员
server.assert_line = 0;
^
server.c:2404:11: 错误:‘struct redisServer'没有名为‘bug_report_start'的成员
server.bug_report_start = 0;
^
server.c:2405:11: 错误:‘struct redisServer'没有名为‘watchdog_period'的成员
server.watchdog_period = 0;
^
server.c:2411:11: 错误:‘struct redisServer'没有名为‘lua_always_replicate_commands'的成员
server.lua_always_replicate_commands = 1;
^
server.c: 在函数‘restartServer'中:
server.c:2464:32: 错误:‘struct redisServer'没有名为‘maxclients'的成员
for (j = 3; j < (int)server.maxclients + 1024; j++) {
^
server.c: 在函数‘adjustOpenFilesLimit'中:
server.c:2491:29: 错误:‘struct redisServer'没有名为‘maxclients'的成员
rlim_t maxfiles = server.maxclients+CONFIG_MIN_RESERVED_FDS;
^
server.c:2497:15: 错误:‘struct redisServer'没有名为‘maxclients'的成员
server.maxclients = 1024-CONFIG_MIN_RESERVED_FDS;
^
server.c:2529:53: 错误:‘struct redisServer'没有名为‘maxclients'的成员
unsigned int old_maxclients = server.maxclients;
^
server.c:2530:23: 错误:‘struct redisServer'没有名为‘maxclients'的成员
server.maxclients = bestlimit-CONFIG_MIN_RESERVED_FDS;
^
server.c:2554:59: 错误:‘struct redisServer'没有名为‘maxclients'的成员
(unsigned long long) bestlimit, server.maxclients);
^
server.c: 在函数‘checkTcpBacklogSettings'中:
server.c:2574:48: 错误:‘struct redisServer'没有名为‘tcp_backlog'的成员
if (somaxconn > 0 && somaxconn < server.tcp_backlog) {
^
server.c:2575:171: 错误:‘struct redisServer'没有名为‘tcp_backlog'的成员
serverLog(LL_WARNING,"WARNING: The TCP backlog setting of %d cannot be enforced because /proc/sys/net /core/somaxconn is set to the lower value of %d.", server.tcp_backlog, somaxconn);

Linux安装Redis实现过程及报错解决方案

Linux安装Redis实现过程及报错解决方案

Linux安装Redis实现过程及报错解决方案

解决办法:升级gcc版本

[root@localhost redis-6.0.1]# gcc -v # 查看gcc版本
[root@localhost redis-6.0.1]# yum -y install centos-release-scl # 升级到9.1版本
[root@localhost redis-6.0.1]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
[root@localhost redis-6.0.1]# scl enable devtoolset-9 bash
以上为临时启用,如果要长期使用gcc 9.1的话:
[root@localhost redis-6.0.1]# echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

再执行编译:

[root@mmjredis redis-6.0.1]# make PREFIX=/usr/local/redis install

安装成功会出现:Hint: It's a good idea to run 'make test'

Linux安装Redis实现过程及报错解决方案

我们执行一下make test来进行测试一下

出现了如下错误:

[root@localhost redis-6.0.1]# make test
cd src && make test
make[1]: 进入目录“/usr/redis-6.0.1/src”
CC Makefile.dep
make[1]: 离开目录“/usr/redis-6.0.1/src”
make[1]: 进入目录“/usr/redis-6.0.1/src”
You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] 错误 1
make[1]: 离开目录“/usr/redis-6.0.1/src”
make: *** [test] 错误 2

Linux安装Redis实现过程及报错解决方案

解决办法:

[root@localhost redis-6.0.1]# yum install tcl[root@localhost redis-6.0.1]# make test

测试成功如下:

Linux安装Redis实现过程及报错解决方案

先运行redis试一下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@localhost redis-6.0.1]# /usr/local/redis-6.0.1/src/redis-server /usr/local/redis-6.0.1/redis.conf
32101:C 13 May 2020 17:01:48.248 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
32101:C 13 May 2020 17:01:48.248 # Redis version=6.0.1, bits=64, commit=00000000, modified=0, pid=32101, just started
32101:C 13 May 2020 17:01:48.248 # Configuration loaded
32101:M 13 May 2020 17:01:48.249 * Increased maximum number of open files to 10032 (it was originally set to 1024).
        _._
      _.-``__ ''-._
   _.-``  `. `_. ''-._      Redis 6.0.1 (00000000/0) 64 bit
 .-`` .-```. ```\/  _.,_ ''-._
 (  '   ,    .-` | `,  )   Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|   Port: 6379
 |  `-._  `._  /   _.-'  |   PID: 32101
 `-._  `-._ `-./ _.-'  _.-'
 |`-._`-._  `-.__.-'  _.-'_.-'|
 |  `-._`-._    _.-'_.-'  |      http://redis.io
 `-._  `-._`-.__.-'_.-'  _.-'
 |`-._`-._  `-.__.-'  _.-'_.-'|
 |  `-._`-._    _.-'_.-'  |
 `-._  `-._`-.__.-'_.-'  _.-'
   `-._  `-.__.-'  _.-'
     `-._    _.-'
       `-.__.-'

Linux安装Redis实现过程及报错解决方案

二、后台启动

简单修改后台启动

[root@localhost redis-6.0.1]# vim redis.conf

daemonize no 改成 daemonize yes

再来运行一下

[root@localhost redis-6.0.1]# /usr/redis-6.0.1/src/redis-server /usr/redis-6.0.1/redis.conf
30385:C 13 May 2020 16:57:58.918 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
30385:C 13 May 2020 16:57:58.918 # Redis version=6.0.1, bits=64, commit=00000000, modified=0, pid=30385, just started
30385:C 13 May 2020 16:57:58.918 # Configuration loaded

后台运行成功,我们查看一下,并终止程序

[root@localhost redis-6.0.1]# ps -aux|grep redis| grep -v grep
root 29836 0.0 0.0 162416 7912 ? Ssl 16:56 0:00 /usr/redis-6.0.1/src/redis-server 127.0.0.1:6379
[root@localhost redis-6.0.1]# kill -9 29836

我们这里用到的是用后台systemctl启动redis

首先把redis加入service服务

vim /lib/systemd/system/redis.service

写入

[Unit]
Description=redis
After=network.target

[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis-6.0.1/src/redis-server /usr/local/redis-6.0.1/etc/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

注意路径问题,以及PIDFile的路径对应的是redis-6.0.1/src/redis-server里面的PIDFile

wq保存退出即可

接着运行以下

[root@localhost redis-6.0.1]# systemctl enable redis.service # 加入开机启动

[root@localhost redis-6.0.1]# systemctl is-enabled redis.service # 查看开机是否启动成功
enabled

[root@localhost redis-6.0.1]# systemctl start redis #开启redis服务

[root@localhost redis-6.0.1]# systemctl status redis //查看redis运行状态

如果启动出现问题,可以通过systemctl status redis来查看日志修复

Linux安装Redis实现过程及报错解决方案

如图已经启动成功

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://www.cnblogs.com/shook/p/12883742.html

延伸 · 阅读

精彩推荐
  • Linuxssh 登录很慢该如何解决

    ssh 登录很慢该如何解决

    这篇文章主要介绍了ssh 登录很慢该如何解决的相关资料,这里提供了两种方法,DNS反向解析及关闭ssh的gssapi认证的解决办法,需要的朋友可以参考下...

    linuxeye9922021-12-16
  • Linux在Linux系统中创建新的亚马逊AWS访问密钥的方法

    在Linux系统中创建新的亚马逊AWS访问密钥的方法

    如何在Linux系统中创建新的亚马逊AWS访问密钥?我在配置一个需要访问我的亚马逊AWS帐号的应用时被要求提供AWS访问密钥ID和秘密访问密钥,我怎样创建一个...

    Linux教程网6182019-10-30
  • Linux理解 Linux/Unix 登录脚本的技巧

    理解 Linux/Unix 登录脚本的技巧

    有一些常见的情况,例如从Debian的包管理程序到Iaas的管理中,很多任务需要设置环境变量才能正常运行。 有时,程序通常只需要在 登陆时运行一次,例如...

    未知1042023-05-12
  • LinuxLinux系统下无法卸载挂载的目录怎么办?

    Linux系统下无法卸载挂载的目录怎么办?

    我们在日常运维中经常性会遇到需要进行磁盘的扩容、卸载、挂载等操作,但是有时候这个系统上跑的应用并没有停止或者有其他的运维同事在操作这个目...

    今日头条10302020-12-30
  • Linuxlinux驱动程序开发详细介绍

    linux驱动程序开发详细介绍

    前提,一般来说内核代码的错误可能会引起一个用户进程的死亡,或者整个系统的瘫痪,更严重的后果,可能导致磁盘损伤~因此建议最好有一台实验机进行...

    Linux教程网5392019-12-17
  • Linux将 Linux 终端与 Nautilus 文件管理器结合起来

    将 Linux 终端与 Nautilus 文件管理器结合起来

    Nautilus 是 GNOME 桌面环境中的图形化文件浏览器。你可以使用它来访问和管理系统中的文件和文件夹。 尽管并非所有人都喜欢使用终端来管理文件和目录,...

    未知812023-08-08
  • Linuxlinux设置tomcat自启动的方法

    linux设置tomcat自启动的方法

    这篇文章主要介绍了linux设置tomcat自启动的方法,需要的朋友可以参考下...

    Linux教程网8512021-10-10
  • Linuxlinux top命令详解

    linux top命令详解

    这篇文章主要介绍了linux top命令详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    sparkdev5622022-03-01