当前位置: 首页 > article >正文

Centos7 搭建 Java Web 开发环境 源码安装redis

安装依赖

yum -y update
yum -y install make
yum -y install gcc gcc-c++
yum -y install tcl

下载redis

cd /home && ​wget https://download.redis.io/releases/redis-6.2.6.tar.gz

 解压

tar -xzvf redis-6.2.6.tar.gz

编译

切换至程序目录

cd redis-6.2.6

编译

make

如果报错如下图,编译时可加 MALLOC=libc 参数解决

原因是jemalloc重载了Linux下的ANSI C的malloc和free函数。解决办法:make时添加参数

make MALLOC=libc

执行测试

make test

 

 安装

make install

 至此,安装完成。

配置Redis

  • 把redis配置为开机启动

centos下配置随机启动需要在目录/etc/init.d中添加启动脚本,启动脚本的模板在redis源代码目录的utils文件夹中:redis_init_script

我们把这个文件复制到/etc/init.d文件夹中,并重命名为redis_6379, 我们这个服务名也就为redis_6379了。

我们再来看下 redis_6379 这个文件的内容:

#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

### BEGIN INIT INFO
# Provides:     redis_6379
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Redis data structure server
# Description:          Redis data structure server. See https://redis.io
### END INIT INFO

REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

$EXEC $CONF 代码中变量赋值,exec为redis-server命令路径,conf为配置文件,配置文件为/etc/redis/6379.conf,这个文件还没有,下面我们来配置它: 

  • 创建目录/etc/redis。 
mkdir /etc/redis
  • 配置文件的模板还在在redis源码中找:redis-6.2.6/redis.conf 将这个配置文件复制到/etc/redis目录 ,并重命名为6379.conf。 
cp redis-6.2.6/redis.conf  /etc/redis/6379.conf
  • 打开这个文件并修改: 
vim /etc/redis/6379.conf 

这里贴出关键修改代码:

# 注释掉它,以便让外网访问
# bind 127.0.0.1

 
# 关闭保护模式
protected-mode no
 
# Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
# 启用守护进程后,Redis会把pid写到一个pidfile中,在/var/run/redis.pid
daemonize yes
 
 
# 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
pidfile /var/run/redis_6379.pid
 
# 指定Redis监听端口,默认端口为6379
# 如果指定0端口,表示Redis不监听TCP连接
port 6379
 
 
# 工作目录.
# 指定本地数据库存放目录,文件名由上一个dbfilename配置项指定
#
# Also the Append Only File will be created inside this directory.
#
# 注意,这里只能指定一个目录,不能指定文件名
dir /var/redis/6379

#开启密码
#取消注释,默认密码:foobared,这里设置成:123456
requirepass 123456

注意倒数第4行 /var/redis/6379 这个目录还没有(默认是: dir   ./ ),需要我们创建,用于存放redis的持久化文件。

cd /var
mkdir redis
cd redis
mkdir 6379
  •  保存退出
  • 设置开机执行redis脚本 
chkconfig redis_6379 on

通过上面的操作后,我们就可以通过 如下命令启动或停止redis:

service redis_6379 start
service redis_6379 stop

测试Redis

  • 启动
service redis_6379 start

  •  常见问题

启动报错

/var/run/redis_6379.pid exists, process is already running or crashed

解决办法 

redis-server /etc/redis/6379.conf
  • 测试连接 
redis-cli -h 127.0.0.1 -p 6379 -a 123456

123456 是刚设置的密码

[root@VM_0_2_centos etc]# redis-cli -h 127.0.0.1 -p 6379 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379>   

 

 

 

 

 

 

 


http://www.kler.cn/a/381504.html

相关文章:

  • 从零开始在本地服务器上安装OnlyOffice并进行跨地域协同编辑文件
  • C++进阶:unordered_map和unordered_set的使用
  • StandardThreadExecutor源码解读与使用(tomcat的线程池实现类)
  • C++笔试题之实现一个定时器
  • H5开发指南|掌握核心技术,玩转私域营销利器
  • 【ACM出版,EI稳定检索,九大高校联合举办, IEEE Fellow支持】2024年计算机视觉与艺术研讨会(CVA 2024,11月29-12月1日)
  • 使用 ABAP GIT 发生 IF_APACK_MANIFEST dump
  • 原厂出具的校准报告有效吗?是否还要找第三方校准?
  • Vue3-子传父
  • Linux:网络协议socket
  • JAVA学习-练习试用Java实现“斐波那契数列”
  • 【Nginx系列】Nginx 中的`proxy_set_header`指令:Host 字段的区别与联系
  • 免费工单管理利器 优选系统 助力团队协作
  • 论文翻译 | Legal Prompt Engineering for Multilingual Legal Judgement Prediction
  • C++游戏开发:构建高性能游戏世界的基石
  • 【青牛科技】GC6129:摇头机中替代 MS41929 的理想之选
  • FPGA实现以太网(一)、以太网基础知识
  • leecode 44. 通配符匹配
  • 重学Android:自定义View基础(一)
  • Linux高阶——1103—修改屏蔽字信号到达及处理流程时序竞态问题
  • 微信小程序中,点击视频,没有跳转播放,可能是因为没有在app.json中正确注册视频播放页面的路径
  • 聊一聊Elasticsearch的索引的分片分配机制
  • 基于 Encoder-only 架构的大语言模型
  • 后台管理系统的通用权限解决方案(十二)数据模型、基于SpringCloud和Nacos的后端项目搭建
  • Python数据分析NumPy和pandas(二十三、数据清洗与预处理之五:pandas的分类类型数据)
  • java 中List 的使用