前言
(资料图片)
意想不到的坑很多,所以不一定你真的能成功
出现问题请问GPT-4,3.5给出的回答大部分都不太适用
S.O.上的相关解答也比较少,万一真的无法解决,就只能听天由命
WSL是啥
Windows Subsystem for Linux
Redis是啥
不知道
怎么装
中文教程:
https://blog.csdn.net/WASEFADG/article/details/124714511
https://blog.csdn.net/weixin_44867177/article/details/125492348
官方文档:
https://learn.microsoft.com/en-us/windows/wsl/install
本文终结
就终结了吗?实际上你遇到的问题教程并不会解答,而教程的部分操作也不一定是你需要的。所以下面我浓缩下精华
精华
0、你的电脑需要比较新的Windows系统,什么叫比较新,文章里有说。简单来讲就是只要不是十年老机器,用的只要是Win10,基本上都可以
1、你的电脑需要开启虚拟,我是微星B450 MOTOR MAX,专业模式下OC(好像是OC中)中SVM Mode打开。开了这个,理论上你才可以用模拟器和WSL
但是VMware很神奇,相信大家都用过(我以前玩QQ堂就用的这个),它相当于重新装了个系统,所以实际上不开启虚拟化也可以用,但它很难用,只要你曾经用过。它的好处在于你可以使用可视化界面,但这没什么好处
更多细节、其它品牌主板、其它型号具体怎么开虚拟化,百度
2、由于我们都是盗版Windows的死忠粉,所以你不一定能按照官方文档用小黑框装WSL,这个时候进应用商店(Windows Store)装。用着盗版Windows但看着全英文的Microsoft文档多多少少有一点NTR的感觉
应用商店怎么进?开始菜单搜。当然你搜出来的点了可能没反应,就Win + R用wsreset.exe进,重置一下是因为你很可能给卸载了(如果你曾用过非常强大的卸载软件,非常强大指比如revo uninstaller而不是某某安全管家,后者帮你装的比帮你卸的还要多)
你也可以手动进设置里面的应用来重置
如果还进不了,就试试Shift + Ctrl + Enter用管理员运行
如果还进不了,试着关下你奇奇怪怪的代理
如果还进不了,那你是真盗版
商店里WSL2和Linux系统一搜都有,直接下载,注意下载的时候需要保证系统下载到系统盘路径,路径最好全英文。这个东西默认不改就是下载到系统盘的winapps下的,你没改过甚至从未用过Windows Store,就不用管
如果要改路径,方法百度
如果下载得很慢,充百度云会员
3、内核升级包。这一步是为了开启Windows用于支持子系统的服务。有可能你不需要,因为你的系统可能自带了。内核升级包的下载看文章或者官方文档,官方文档很详细,搞清楚你系统是多少位的,找到对应的下载运行就完事
如果你很自信,觉得你不需要这一步,就直接跳过
4、开启支持子系统的服务。设置里面搜Windows功能,勾上适用于Linux的Windows子系统,重启
如果之后出现失败,请尝试再勾选Hyper-V的所有,再重启。这个我不知道到底有没有用,但是你如果真的失败了,可以试试
这一步,文章中和官方文档都是通过命令行执行的,效果一样
5、下载完成后,应用商店打开你下的Linux系统,会自己安装,安装报错,就检查你以上的步骤。安装完成,它弹出来就是个bash,你固定到任务栏以后就可以直接用
这样你就有Linux了
顺带提一嘴,你下载的系统,最好是ubuntu或者debian
我不推荐CentOS,据说已经停更了
如果你喜欢异灵术老师,你就用debian,当一个彻头彻尾的黑便
以下操作很重要,是后续的操作,文章里面也没有提及:
6、装Redis,不教
你就当Linux装就行,搜Linux如何安装Redis,很简单
需要注意的是,很可能WSL2装的Linux是不支持systemd的,就用server语法替代就可以。这个问题具体解决很麻烦,不影响实际使用。如果你听不懂在说什么,就不管,这和本文实际上无关
7、Linux系统能开,bash里面Redis也能跑,就快要成功了
如何查看Redis服务在Linux上是否正常运行、重启服务、管理进程,不教
如果你本机6379端口有东西,那么你最好默认给Linux上的Redis换一个端口,具体操作百度
如何在Windows启动时自动启动Linux和Redis服务,你不一定需要,具体操作百度
Redis具体操作,我也不会
8、bash查看ifconfig,或者ip addr show
为的是看WSL2映射到本机的哪个端口(用映射这个词可能不太准确,因为我也不太懂两个系统之间的协调逻辑)
具体看eth0下面的inet就行,你能看到ip,后面还有ip掩码和MAC,我们只要ip
如果你搜不到ip,或者后续操作出现了问题,尝试这个:
sudo apt install net-tools
原因是(我理解的)本机和Linux子系统本质上还是通过net通讯的(我自己写给自己的情书也是需要贴上邮票的),要开启Linux上的net服务,虽然我觉得它默认肯定是开启的,这一步是不是真的有必要我也不知道
假设你拿到的ip是127.123.123.123,也就是说:Redis服务本质上是跑在127.123.123.123下的6379,而不是127.0.0.1下的,这点非常重要,影响到后面写代码的时候指定HOST
也就是说:
cmd里 tasklist | findstr redis 是没有东西的
Linux里 ps aux | grep redis 才有东西
很多示例是直接通过127.0.01:6379连上Redis的,我不敢苟同,至少我自己不行,原理我也分析了
怎么确定你拿到的ip是对的,能连通,cmd里面ping一下就行
9、修改Redis监听
默认的Redis监听是127.0.0.1,也就是说Redis只允许本机访问,这里本机指的是Linux
对于你的Windows以及跑在Windows下的代码,它不是本机(这个很好理解,就像VMware一样,开的虚拟机只是和你主系统共用一大堆硬件和网络蓝牙的新机器,如果不共用,它本质上和你重新买台电脑没什么区别),所以这个东西理论上一定要改
先用 redis-cli info server 看设置
在这里面你可以看到Redis的全部设置信息,它监听哪里,配置文件在哪里(最后一行)
进配置文件,把 bind 127.0.0.1 ::1 改成 bind 0.0.0.0 ::
因为只有bash没有可视化,所以怎么改就自己想办法,我今天改的时候才发现我的vim已经完全返厂了,你用nano或者vim想怎么改怎么改
注意不要改到备注了!加#的都是备注。bash里面有颜色区分的,我头一次就是改到example了,发现改了没用,百思不得其解
改完重启Redis,sudo service redis-server restart
全部搞完,你就成功了,用你获取的HOST和PORT(一般情况不用改PORT),用代码连就行了。我用Python,推荐的库是redis或者aioredis,我怀疑这两个库可能是同一帮人写的(不像psycopg2和asyncpg,不能说天差地别只能说完全不一样),用法上很多地方都很像,没求证过
给个测试用例,不是我写的,GPT写的:
如果方法有报错,就用aioredis.Redis或者aioredis.from_url
接下来你就可以从折磨一台电脑的一个系统进阶到折磨一台电脑的两个系统了!祝你成功!