猴子都能看懂的使用WSL2連接Redis
前言
????意想不到的坑很多,所以不一定你真的能成功
????出現(xiàn)問題請(qǐng)問GPT-4,3.5給出的回答大部分都不太適用
????S.O.上的相關(guān)解答也比較少,萬(wàn)一真的無法解決,就只能聽天由命
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
本文終結(jié)
就終結(jié)了嗎?實(shí)際上你遇到的問題教程并不會(huì)解答,而教程的部分操作也不一定是你需要的。所以下面我濃縮下精華
精華
0、你的電腦需要比較新的Windows系統(tǒng),什么叫比較新,文章里有說。簡(jiǎn)單來講就是只要不是十年老機(jī)器,用的只要是Win10,基本上都可以
1、你的電腦需要開啟虛擬,我是微星B450 MOTOR MAX,專業(yè)模式下OC(好像是OC中)中SVM Mode打開。開了這個(gè),理論上你才可以用模擬器和WSL
????但是VMware很神奇,相信大家都用過(我以前玩QQ堂就用的這個(gè)),它相當(dāng)于重新裝了個(gè)系統(tǒng),所以實(shí)際上不開啟虛擬化也可以用,但它很難用,只要你曾經(jīng)用過。它的好處在于你可以使用可視化界面,但這沒什么好處
????更多細(xì)節(jié)、其它品牌主板、其它型號(hào)具體怎么開虛擬化,百度
2、由于我們都是盜版Windows的死忠粉,所以你不一定能按照官方文檔用小黑框裝WSL,這個(gè)時(shí)候進(jìn)應(yīng)用商店(Windows Store)裝。用著盜版Windows但看著全英文的Microsoft文檔多多少少有一點(diǎn)NTR的感覺
????應(yīng)用商店怎么進(jìn)?開始菜單搜。當(dāng)然你搜出來的點(diǎn)了可能沒反應(yīng),就Win + R用wsreset.exe進(jìn),重置一下是因?yàn)槟愫芸赡芙o卸載了(如果你曾用過非常強(qiáng)大的卸載軟件,非常強(qiáng)大指比如revo uninstaller而不是某某安全管家,后者幫你裝的比幫你卸的還要多)
????你也可以手動(dòng)進(jìn)設(shè)置里面的應(yīng)用來重置
????如果還進(jìn)不了,就試試Shift + Ctrl + Enter用管理員運(yùn)行
????如果還進(jìn)不了,試著關(guān)下你奇奇怪怪的代理
????如果還進(jìn)不了,那你是真盜版
????商店里WSL2和Linux系統(tǒng)一搜都有,直接下載,注意下載的時(shí)候需要保證系統(tǒng)下載到系統(tǒng)盤路徑,路徑最好全英文。這個(gè)東西默認(rèn)不改就是下載到系統(tǒng)盤的winapps下的,你沒改過甚至從未用過Windows Store,就不用管
????如果要改路徑,方法百度
????如果下載得很慢,充百度云會(huì)員
3、內(nèi)核升級(jí)包。這一步是為了開啟Windows用于支持子系統(tǒng)的服務(wù)。有可能你不需要,因?yàn)槟愕南到y(tǒng)可能自帶了。內(nèi)核升級(jí)包的下載看文章或者官方文檔,官方文檔很詳細(xì),搞清楚你系統(tǒng)是多少位的,找到對(duì)應(yīng)的下載運(yùn)行就完事
????如果你很自信,覺得你不需要這一步,就直接跳過
4、開啟支持子系統(tǒng)的服務(wù)。設(shè)置里面搜Windows功能,勾上適用于Linux的Windows子系統(tǒng),重啟
????如果之后出現(xiàn)失敗,請(qǐng)嘗試再勾選Hyper-V的所有,再重啟。這個(gè)我不知道到底有沒有用,但是你如果真的失敗了,可以試試
????這一步,文章中和官方文檔都是通過命令行執(zhí)行的,效果一樣
5、下載完成后,應(yīng)用商店打開你下的Linux系統(tǒng),會(huì)自己安裝,安裝報(bào)錯(cuò),就檢查你以上的步驟。安裝完成,它彈出來就是個(gè)bash,你固定到任務(wù)欄以后就可以直接用
????這樣你就有Linux了
????順帶提一嘴,你下載的系統(tǒng),最好是ubuntu或者debian
????我不推薦CentOS,據(jù)說已經(jīng)停更了
????如果你喜歡異靈術(shù)老師,你就用debian,當(dāng)一個(gè)徹頭徹尾的黑便
以下操作很重要,是后續(xù)的操作,文章里面也沒有提及:
6、裝Redis,不教
????你就當(dāng)Linux裝就行,搜Linux如何安裝Redis,很簡(jiǎn)單
????需要注意的是,很可能WSL2裝的Linux是不支持systemd的,就用server語(yǔ)法替代就可以。這個(gè)問題具體解決很麻煩,不影響實(shí)際使用。如果你聽不懂在說什么,就不管,這和本文實(shí)際上無關(guān)
7、Linux系統(tǒng)能開,bash里面Redis也能跑,就快要成功了
????如何查看Redis服務(wù)在Linux上是否正常運(yùn)行、重啟服務(wù)、管理進(jìn)程,不教
????如果你本機(jī)6379端口有東西,那么你最好默認(rèn)給Linux上的Redis換一個(gè)端口,具體操作百度
????如何在Windows啟動(dòng)時(shí)自動(dòng)啟動(dòng)Linux和Redis服務(wù),你不一定需要,具體操作百度
????Redis具體操作,我也不會(huì)
8、bash查看ifconfig,或者ip addr show
????為的是看WSL2映射到本機(jī)的哪個(gè)端口(用映射這個(gè)詞可能不太準(zhǔn)確,因?yàn)槲乙膊惶畠蓚€(gè)系統(tǒng)之間的協(xié)調(diào)邏輯)
????具體看eth0下面的inet就行,你能看到ip,后面還有ip掩碼和MAC,我們只要ip
????如果你搜不到ip,或者后續(xù)操作出現(xiàn)了問題,嘗試這個(gè):
????sudo apt install net-tools
????原因是(我理解的)本機(jī)和Linux子系統(tǒng)本質(zhì)上還是通過net通訊的(我自己寫給自己的情書也是需要貼上郵票的),要開啟Linux上的net服務(wù),雖然我覺得它默認(rèn)肯定是開啟的,這一步是不是真的有必要我也不知道
????假設(shè)你拿到的ip是127.123.123.123,也就是說:Redis服務(wù)本質(zhì)上是跑在127.123.123.123下的6379,而不是127.0.0.1下的,這點(diǎn)非常重要,影響到后面寫代碼的時(shí)候指定HOST
????也就是說:
????cmd里 tasklist | findstr redis 是沒有東西的
????Linux里 ps aux | grep redis 才有東西
????很多示例是直接通過127.0.01:6379連上Redis的,我不敢茍同,至少我自己不行,原理我也分析了
????怎么確定你拿到的ip是對(duì)的,能連通,cmd里面ping一下就行
9、修改Redis監(jiān)聽
????默認(rèn)的Redis監(jiān)聽是127.0.0.1,也就是說Redis只允許本機(jī)訪問,這里本機(jī)指的是Linux
????對(duì)于你的Windows以及跑在Windows下的代碼,它不是本機(jī)(這個(gè)很好理解,就像VMware一樣,開的虛擬機(jī)只是和你主系統(tǒng)共用一大堆硬件和網(wǎng)絡(luò)藍(lán)牙的新機(jī)器,如果不共用,它本質(zhì)上和你重新買臺(tái)電腦沒什么區(qū)別),所以這個(gè)東西理論上一定要改
????先用?redis-cli info server 看設(shè)置
????在這里面你可以看到Redis的全部設(shè)置信息,它監(jiān)聽哪里,配置文件在哪里(最后一行)
????進(jìn)配置文件,把 bind 127.0.0.1 ::1 改成?bind 0.0.0.0 ::
????因?yàn)橹挥衎ash沒有可視化,所以怎么改就自己想辦法,我今天改的時(shí)候才發(fā)現(xiàn)我的vim已經(jīng)完全返廠了,你用nano或者vim想怎么改怎么改
????注意不要改到備注了!加#的都是備注。bash里面有顏色區(qū)分的,我頭一次就是改到example了,發(fā)現(xiàn)改了沒用,百思不得其解
????改完重啟Redis,sudo service redis-server restart
全部搞完,你就成功了,用你獲取的HOST和PORT(一般情況不用改PORT),用代碼連就行了。我用Python,推薦的庫(kù)是redis或者aioredis,我懷疑這兩個(gè)庫(kù)可能是同一幫人寫的(不像psycopg2和asyncpg,不能說天差地別只能說完全不一樣),用法上很多地方都很像,沒求證過
給個(gè)測(cè)試用例,不是我寫的,GPT寫的:
????如果方法有報(bào)錯(cuò),就用aioredis.Redis或者aioredis.from_url
????接下來你就可以從折磨一臺(tái)電腦的一個(gè)系統(tǒng)進(jìn)階到折磨一臺(tái)電腦的兩個(gè)系統(tǒng)了!祝你成功!