linux系统或者windows WSL安装redis最新版本

2023-05-16

概述

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

1、下载redis

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

截至这篇文章写作时,redis目前的稳定版本是6,预计今年会更新7,目前还在rc候选发布阶段。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rLLlu50Y-1651057047486)(https://www.hengyumo.cn/momoclouddisk/file/download?code=20220426220855_image.png)]

因此我们选择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的版本功能可用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux系统或者windows WSL安装redis最新版本 的相关文章

随机推荐

  • vue3中的setup函数

    原文 xff1a vue3中的setup函数 落雪小轩韩的博客 CSDN博客 vue3setup 一 概念 xff1a setup是vue3中的一个新的配置项 xff0c 值为一个函数 xff0c 我们在组件中用到的数据 方法等等 xff0
  • vue同步请求

    原文地址 xff1a vue 同步请求 Aa duidui的博客 CSDN博客 vue同步请求 同步请求执行的顺序 async await 挂上的才是同步 没挂上的还是异步 async 方法名 await 请求方法 参数 then res
  • Anaconda上设置虚拟环境,并在jupyter notebook中切换。

    个人记录 xff0c 但欢迎阅读和赐教 我之前在Anaconda Navigator中建立虚拟环境 xff0c 然后在jupyter notebook的terminal中增加对应环境的ipykernel xff0c 这样可行 xff0c 但
  • 字符,字节和编码

    级别 xff1a 初级 摘要 xff1a 本文介绍了字符与编码的发展过程 xff0c 相关概念的正确理解 举例说明了一些实际应用中 xff0c 编码的实现方法 然后 xff0c 本文讲述了通常对字符与编码的几种误解 xff0c 由于这些误解
  • http协议原理

    HTTP工作原理 HTTP协议定义Web客户端如何从Web服务器请求Web页面 xff0c 以及服务器如何把Web页面传送给客户端 HTTP协议采用了请求 响应模型 客户端向服务器发送一个请求报文 xff0c 请求报文包含请求的方法 URL
  • TLS协议/SSL协议

    历史背景 SSL Secure Socket Layer 安全套接层 是基于HTTPS下的一个协议加密层 xff0c 最初是由网景公司 xff08 Netscape xff09 研发 xff0c 后被IETF xff08 The Inter
  • TCP协议

    TCP 基础 https www jianshu com p ef892323e68f TCP 使用固定的连接 TCP 用于应用程序之间的通信 当应用程序希望通过 TCP 与另一个应用程序通信时 xff0c 它会发送一个通信请求 这个请求必
  • UDP协议

    UDP 概述 xff08 User Datagram Protocol xff0c 用户数据报协议 xff09 用户数据报协议 UDP 只在 IP 的数据报服务之上增加了很少一点的功能 xff0c 这就是复用和分用的功能以及查错检测的功能
  • TCP和UDP的区别

    TCP协议与UDP协议的区别 首先咱们弄清楚 xff0c TCP协议和UDP协议与TCP IP协议的联系 xff0c 很多人犯糊涂了 xff0c 一直都是说TCP协议与UDP协议的区别 xff0c 我觉得这是没有从本质上弄清楚网络通信 xf
  • 网络协议概述

    互联网协议介绍 互联网的核心是一系列协议 xff0c 总称为 互联网协议 xff08 Internet Protocol Suite xff09 xff0c 正是这一些协议规定了电脑如何连接和组网 我们理解了这些协议 xff0c 就理解了互
  • go 编写tcp和udp服务端和客户端

    TCP协议 TCP IP Transmission Control Protocol Internet Protocol 即传输控制协议 网间协议 xff0c 是一种面向连接 xff08 连接导向 xff09 的 可靠的 基于字节流的传输层
  • tcp黏包问题

    服务端代码如下 xff1a span class token keyword package span main span class token keyword import span span class token punctuati
  • go sync.Pool 深入

    new函数的调用时机和pool的内存释放规则 以下代码调用了四次Get函数 xff0c 但是并不是每次都会new 第一次 xff0c 是a 61 pool Get byte xff0c 首次Get xff0c 在pool的private私有
  • 【AI理论学习】深入理解扩散模型:Diffusion Models(DDPM)(理论篇)

    深入理解扩散模型 xff1a Diffusion Models 引言扩散模型的原理扩散过程反向过程优化目标 模型设计代码实现Stable Diffusion DALL E Imagen背后共同的套路Stable DiffusionDALL
  • gin 框架原理

    Gin的路由原理 Gin的路由基于Trie树和压缩字典树算法 xff0c 什么是Trie树 xff1f 其实很好理解 xff0c 看下图 xff1a 单词at xff0c bee xff0c ben xff0c bt xff0c q组成的T
  • PowerDesigner导入sql脚本

    1 依次点击File gt Reverse Engineer gt Database 2 弹出弹窗对模型进行命名 xff0c 同时在DBMS下拉选择框中需要选择自己对应的数据库类型 xff0c 点击确定 新的弹窗 xff0c 选中Using
  • Gin路由算法模拟

    概述 Gin的路由算法是采用压缩字典树实现的 xff0c 基数树 xff08 Radix Tree xff09 又称为PAT位树 xff08 Patricia Trie or crit bit tree xff09 xff0c 是一种更节省
  • 使用gomail发送邮件

    概述 为了实现一个邮件验证码功能 xff0c 特意了解了一下go如何发送邮件 本来以为会很麻烦 xff0c 没想到其实很简单 工具类 实现的工具类如下 xff1a span class token keyword package span
  • redis实现消息队列的几种方式及其优劣

    概述 常用的消息队列有 xff0c rabbitMq kafka RocketMq ActiveMq等 这些消息队列需要独立安装部署 xff0c 作为一个中间件来提供服务 xff0c 虽然有着高性能 高可靠的优点 xff0c 但是额外部署这
  • linux系统或者windows WSL安装redis最新版本

    概述 因为windows的最新版本redis已经在16年就停止更新了 xff0c 目前最新的版本只到redis3 xff0c 很多redis新增的特性都无法使用 例如redis5的stream xff0c windows版本就没有 这篇文章