因为开发的需要,我需要在WSL2虚拟机上启动多个redis服务,这里把配置步骤记录下来,以便以后查询。

https://sanjuroe.dev/multiple-redis-databases#:~:text=In%20order%20to%20have%20multiple%20realRedis%20databases%20simply,the%20steps%3A%20Copy%20the%20file%20%2Fetc%2Fredis%2Fredis.conf%20to%20redis-myinstance.conf

有在Debian中安装多个redis服务的详细介绍。

如果是systemd方式,其实可以通过

systemct start redis@some-config

来使用不同的config文件来启动不同配置的redis服务

在WSL2上没有systemd服务,所以通过

systemctl start redis

这种方法是没办法启动服务的。

所以在WSL2上只能以老式的init.d方式启动服务,也就是在/etc/init.d目录下有一个服务的启动文件,然后通过

sudo /etc/init.d/redis-server stop
# or
sudo service redis-server stop

的方法才能对服务进行操作。

所以我基于本文开头的那篇文章结合init.d做了一个改进,可以在WSL2上启动多个redis服务。

安装默认的redis服务

第一步,使用命令sudo apt-get update更新软件源。
第二步,使用命令sudo apt-get install redis-server直接安装redis。
第三步,使用命令sudo service redis-server start开启redis服务。

sudo apt-get update
sudo apt-get install redis-server
sudo service redis-server start

准备第2个redis服务的配置文件

首先复制一份redis的基本配置文件。在WSL2上,受到文件系统权限的限制,所以复制的时候需要使用sudo,这样生成的文件的owner会变成root,所以后面记得要把owner改过来。

sudo cp /etc/redis/redis.conf /etc/redis/redis-second.conf
sudo ls -l /etc/redis/redis-second.conf
chown redis:redis /etc/redis/redis-second.conf

 然后编辑这份文件。WSL2 Debian自带的编辑器是nano,不是vi

sudo nano /etc/redis/redis-second.conf

找到

port

默认值是6379,改成任意可用端口,比如6380

unixsocket

这一行默认是注释掉的,其实一般也没必要采用socket通讯。可以改成

/var/run/redis/redis-server-second.sock

最好不要加,而是保持注释

pidfile

/var/run/redis/redis-server-second.pid

logfile

/var/log/redis/redis-server-second.log

dbfilename

dump-second.rdb

新的pid文件会在运行时自动生成,不必担心。

新的log文件不会自动生成,所以必须要先手动生成。这里还会涉及到文件系统权限的问题,注意修改访问权限,同时还要注意修改owner

sudo touch /var/log/redis/redis-server-second.log
sudo ls -l /var/log/redis/
# 根据之前的redis.log文件的权限修改新生成的这个log文件的访问权限,在我的电脑上是550权限
sudo chmod 550 /var/log/redis/redis-server-second.log
# 另外文件的owner也要改成和之前的旧的log文件一致
sudo chown redis:adm /var/log/redis/redis-server-second.log

准备第2个redis服务的启动文件

先看看默认的redis的文件是怎么样的,为了避免有遗漏,这里使用了通配符

sudo ls -l /etc/init.d/redis*

可以看到/etc/init.d/redis-server的owner是root:root

复制该文件

sudo cp /etc/init.d/redis-server /etc/init.d/redis-server-second

然后编辑这个新的service文件

sudo nano /etc/init.d/redis-server-second

前面#开头的几行近乎注释,不会对服务的运行带来影响,只是给人看的一些注释内容,可以不改,但是为了将来不会理解错误,最好改掉。

把Short-Description的内容改成redis-server-second,把Description的内容改成redis-server-second

找到对应位置后修改

原内容

改成

DAEMON=/usr/bin/redis-server

不要动

DAEMON_ARGS=/etc/redis/redis.conf

DAEMON_ARGS=/etc/redis/redis-second.conf

NAME=redis-server

NAME=redis-server-second

DESC=redis-server

DESC=redis-server-second

RUNDIR=/var/run/redis

不要动

PIDFILE=$RUNDIR/redis-server.pid

PIDFILE=$RUNDIR/redis-server-second.pid

修改后,redis的第2个服务就安装好了

然后

sudo service redis-server-second start

就可以启动了。

管理的话,和其他service一样