search.png
关于我
menu.png
linux系统或者windows WSL安装redis最新版本

概述

因为windows的最新版本redis已经在16年就停止更新了,目前最新的版本只到redis3,很多redis新增的特性都无法使用。例如redis5的stream,windows版本就没有。
这篇文章通过使用wsl来为windows提供最新版本redis的支持,而免于去启动虚拟机的麻烦事了。
主要安装的流程和linux上一般无异。

1、下载redis

打开 https://redis.io/download/ 查看可用版本。

截至这篇文章写作时,redis目前的稳定版本是6,预计今年会更新7,目前还在rc候选发布阶段。

因此我们选择6的版本。

复制下载地址:https://download.redis.io/releases/redis-6.0.16.tar.gz

进入wsl命令行中,执行wget https://download.redis.io/releases/redis-6.0.16.tar.gz

2、安装redis

执行tar xzf redis-6.0.16.tar.gz

然后cd redis-6.0.16/

执行make,等待编译完成,src目录下就会出现redis-server、redis-cli这两个应用,分别对应服务端和客户端。

之后就是安装: sudo make PREFIX=/usr/local/redis install

安装完毕之后就会在/usr/local/redis下出现对应的redis可执行程序:

我们进入其中查看一下:

hengyumo@DESKTOP-FPVEJ74:~/soft/redis-6.0.16$ cd /usr/local/redis/
hengyumo@DESKTOP-FPVEJ74:/usr/local/redis$ ls
bin
hengyumo@DESKTOP-FPVEJ74:/usr/local/redis$ cd bin/
hengyumo@DESKTOP-FPVEJ74:/usr/local/redis/bin$ pwd
/usr/local/redis/bin
hengyumo@DESKTOP-FPVEJ74:/usr/local/redis/bin$ ls
redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server

此时安装已经完成。

接下来是启动,

首先复制一份redis默认的配置文件到bin目录:
sudo cp /home/hengyumo/soft/redis-6.0.16/redis.conf /usr/local/redis/bin

然后就是

  1. 修改配置文件redis.conf的 daemonize yes 设为守护进程,这样redis就会以守护进程方式启动,不会因为会话关闭而终止。
  2. 注释 #bind 127.0.0.1 ,这样端口放开,提供外部监听
  3. 修改logfile "/usr/local/redis/redis.log",指定了redis日志的存储位置。
  4. 使用redis.conf启动服务端 sudo ./redis-server redis.conf
  5. 查看进程 ps -ef | grep -i redis,以守护进程启动成功

如果启动失败,那么可能的原因是,windows的redis已经占有了6379这个默认端口,报错如下:

4571:C 26 Apr 2022 22:29:17.770 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
4571:C 26 Apr 2022 22:29:17.770 # Redis version=6.0.16, bits=64, commit=00000000, modified=0, pid=4571, just started
4571:C 26 Apr 2022 22:29:17.770 # Configuration loaded
4571:M 26 Apr 2022 22:29:17.771 * Increased maximum number of open files to 10032 (it was originally set to 1024).
4571:M 26 Apr 2022 22:29:17.771 # Could not create server TCP listening socket *:6379: bind: Address already in use

此时有两个解决办法,一个是卸载windows的redis或修改其端口,一个是修改wsl的端口。
此处我选择修改wsl的端口,
修改redis.conf的 port 6379port 16379,将端口改为16379。

重新启动,这次成功无误了:

hengyumo@DESKTOP-FPVEJ74:/usr/local/redis/bin$ sudo ./redis-server redis.conf
hengyumo@DESKTOP-FPVEJ74:/usr/local/redis/bin$ ps -ef | grep -i redis
root      4626     1  0 22:34 ?        00:00:00 ./redis-server *:16379
hengyumo  4632    14  0 22:34 tty1     00:00:00 grep --color=auto -i redis

设置开机自启动

因为是手动运行脚本去执行redis启动的,当关机时,redis就会关闭,所以需要设置开机自启动。

这里我们可以使用redis自带的启动脚本,

正常是在安装目录下的utils/redis-init-scripe

执行sudo cp utils/redis_init_script /etc/init.d/redis
编辑该脚本sudo vim /etc/init.d/redis ,修改其中的配置文件位置和端口,

#!/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=16379
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/usr/local/redis/bin/redis.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

执行sudo service redis start将redis添加到系统服务中

之后我们查看服务状态,

hengyumo@DESKTOP-FPVEJ74:/usr/local/redis/bin$ sudo service --status-all | grep redis
 [ ? ]  apport
 [ ? ]  cryptdisks
 [ ? ]  cryptdisks-early
 [ ? ]  hwclock.sh
 [ ? ]  plymouth
 [ ? ]  plymouth-log
 [ + ]  redis

运行中的服务输出为 +,代表我们的redis已经成功添加到系统服务中了。

3、验证新版本功能可用

我们在windos的命令行打开redis-cli,连接wsl的redis:

C:\Users\NH55\Desktop>redis-cli -p 16379
127.0.0.1:16379> xadd testStream * msg hello
"1650983851252-0"

这里尝试建立了一个stream队列,成功了。证明我们的wsl的版本功能可用。

版权声明

知识共享许可协议 本文章由作者“衡于墨”创作,转载请注明出处,未经允许禁止用于商业用途

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
发布时间:2022年04月26日 22:03:47

评论区#

还没有评论哦,期待您的评论!

关闭特效