目录

下载redis安装包

我们从redis官网下载redis的压缩吧redis.tar.gz

我们使用wget下载, redis官网


wget https://download.redis.io/releases/redis-6.2.6.tar.gz

之后使用解压缩命令解压缩.gz文件


tar -zxvf redis-6.2.6.tar.gz

rm redis-6.2.6.tar.gz

我们可以在解压完了之后直接删除压缩包


# 我们可以将这个文件夹移动到/usr/local/redis下

mkdir /usr/local/redis # 具体按你的喜好就可以

cp redis-6.2.6 /usr/local/redis/

cd /usr/local/redis/redis-6.2.6

编译安装

/usr/local/redis/redis-6.2.6这个目录下我们可以使用make命令进行安装,如果没有gcc和make的环境,可以先安装一下。


sudo apt install gcc make

我们使用make命令安装完之后,make test是可选项,如果想单元测试一下可以执行,不过需要安装tcl, 使用命令安装: sudo apt install tcl

我们不需要进入src目录执行make install,直接根目录执行就行,具体可以在根目录下的Makefile中看到原因, 然后执行make install这个命令后,默认会把它的可执行二进制文件安装到/usr/local/bin下,这个具体是在src目录下的Makefile中定义的前缀变量PREFIX, 我们也可以在make install 命令后面指定PREFIX=[/path/to/your/dir/]


# Top level makefile, the real shit is at src/Makefile

default: all

.DEFAULT:
        cd src && $(MAKE) $@

install:
        cd src && $(MAKE) $@

.PHONY: install

可以看到根目录执行的make命令和make install命令,都是进入src目录执行的,其实和我们直接进入src目录执行一样。

配置运行

我们可以在根目录下找一个redis.conf文件,这个文件是启动redis-server的配置文件


ls -l | grep redis.conf

我们可以什么都不改,直接按默认配置来启动就可以


redis-server redis.conf

之后使用客户端测试启动是否正常, 看到PONG就是安装成功了

# 终端输入redis-cli就可以进入本地的客户端,或者指定-h 127.0.0.1 -p 6379
# 你也可以根据你的服务器来配置
redis-cli

127.0.0.1:6379> ping
PONG

我们使用redis-cli shutdown来关闭redis-server

同时,我们也可以使用kill命令给进程发送中断信号 -9和-15就是31个unix的不安全的信号值。

# -9是无条件中断
kill -9 [redis_pid]

# 一般用-15也可以
kill -15 [redis_pid]

配置后台启动

redis一般肯定是运行在服务器上的,总不能让它一直前台运行吧,感觉也可以?我每次都是开两个终端测试的,不过没有试过服务器的环境。

我们直接修改redis.conf文件就行,


# 使用vim打开redis.conf,然后在冒号模式/命令模式下使用斜杠`/daemonize`
# 可以在vim的命令模式下使用n和N进行下一个和上一个匹配的移动
# 修改这个键的值为yes即可

daemonize yes

查看是否配置后台启动成功


ps -aux | grep redis

使用service快捷启动

我们可以通过sudo service redis start来启动redis

首先我们进入redis的utils目录


cd /usr/local/redis/redis-6.2.6/utils

我们可以找到init两个文件


ls | grep redis_init_script

redis_init_script
redis_init_script.tpl

第一个文件中只有start和stop的shell脚本,第二个文件中有start、stop、restart、status的shell脚本,但是缺少了一些路径变量的定义,我们可以将这个两个文件结合一下,就是把自己需要的东西拼凑以下。

我这里贴一下我的配置,这里主要是要配置一下自己的路径,配置文件的路径也需要修改一下,改成自己的就行。这里需要注意,我们最好使用sudo命令启动,不然pid没法生成在/var/run/下


#!/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
        ;;
    status)
        PID=$(cat $PIDFILE)
        if [ ! -x /proc/${PID} ]
        then
            echo 'Redis is not running'
        else
            echo "Redis is running ($PID)"
        fi
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    *)
        echo "Please use start, stop, restart or status as first argument"
        ;;
esac

我们将这个文件拷贝到/etc/init.d/


# 这里的名称尽量好记一点,因为后面会用到,因此我把它重命名为了redis
cp redis_init_script redis 

测试启动

配置到这里我们就可以使用sudo service redis start来启动,

查看是否启动成功

ps -aux | grep redis

# 使用-ef也可以,只不过是关注点不同,-ef不显示CPU、内存、虚拟空间和实际空间使用情况
# 不过这些我们可能不会通过ps去查看就对了,肯定使用top实时看会好点
# 相对的-ef命令可以查看到PPID就是父进程的id

ps -ef | grep redis

我们可以看到redis进程运行在了127.0.0.1:6379端口下

其他命令

我们可以使用其他命令来快捷的操作


# 关闭
sudo service redis stop

# 重启
sudo service redis restart

# 查看状态
sudo service redis status