如何同時使用Redis和RedisGraph模塊?針對這個問題,今天小編總結(jié)這篇運用實例講解的文章,解題步驟非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家有所幫助。
成都創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司,專注成都網(wǎng)站制作、做網(wǎng)站、網(wǎng)站營銷推廣,域名注冊,網(wǎng)頁空間,網(wǎng)站托管、服務(wù)器租用有關(guān)企業(yè)網(wǎng)站制作方案、改版、費用等問題,請聯(lián)系成都創(chuàng)新互聯(lián)。在這個演示中我展示了一個小界面,它支持搜索動物并通過生物分類系統(tǒng)(界、門、類、目等)查看它們之間的關(guān)系。全文部分基于維基百科的第一段英文。例如,搜索“寵物貓”和“Blue Whale”,會發(fā)現(xiàn)他們都是哺乳動物,而如果搜索“寵物貓”和“雪豹”,則會發(fā)現(xiàn)他們都屬于同一個科:貓科。
這個演示項目出乎意料地簡單,但我應(yīng)該指出 RediSearch 和 RedisGraph 之間的集成仍處于早期階段,在編寫本文時還沒有準(zhǔn)備好應(yīng)用于生產(chǎn)環(huán)境。所以,我建議您在了解 RediSearch 和 RedisGraph 的集成將在未來幾個月逐漸成熟的前提下,確定此方法是否能夠滿足您的需求。
讓我們再討論一下如何從源碼構(gòu)建。要完成的第一件事是基于代碼庫中正確的分支構(gòu)建 RediSearch 和 RedisGraph。RediSearch 使用的是當(dāng)前的主分支,而 RedisGraph 是 redisconf 分支。如果您想根據(jù)自己的需要構(gòu)建解決方案,可以從源代碼構(gòu)建這兩個模塊。RedisGraph 和 RediSearch 的網(wǎng)站上都有關(guān)于如何構(gòu)建的詳細(xì)說明,這并不困難,只是需要一點時間。
配置模塊的位置在 redis.conf 文件中,為了確保在 RediSearch 之前加載 RedisGraph,需要在 redis.conf 文件的模塊部分將 RediSearch 的 loadmodule 配置項放在 RedisGraph 的 loadmodule 配置項之前。在完成編輯 redis.conf 之后,需要重啟Redis 服務(wù)器讓配置生效。
在之前演示的 demo 中,我使用 RedisGraph-bulk-loader 腳本將以下內(nèi)容從 CSV 加載到 RedisGraph,從而包括了我們收集的數(shù)據(jù)集。這個數(shù)據(jù)集只包括哺乳動物,因為其他動物的數(shù)據(jù)質(zhì)量較低(非哺乳動物物種很少有好的維基百科描述)。
下面是加載數(shù)據(jù)的例子:
$ cd redisgraph-bulk-loader/ $ python3 bulk_insert.py MAMMALS -q -n /path/to/demo/dataload/Class.csv -n /path/to/demo/dataload/Family.csv -n /path/to/demo/dataload/Genus.csv -n /path/to/demo/dataload/Order.csv -n /path/to/demo/dataload/Species.csv -r /path/to/demo/dataload/IN_CLASS.csv -r /path/to/demo/dataload/IN_FAMILY.csv -r /path/to/demo/dataload/IN_GENUS.csv -r /path/to/demo/dataload/IN_ORDER.csv -a yourpassword 1 nodes created with label 'Class' 157 nodes created with label 'Family' 1272 nodes created with label 'Genus' 29 nodes created with label 'Order' 5616 nodes created with label 'Species' 29 relations created for type 'IN_CLASS' 1272 relations created for type 'IN_FAMILY' 5616 relations created for type 'IN_GENUS' 157 relations created for type 'IN_ORDER' Construction of graph 'MAMMALS' complete: 7075 nodes created, 7074 relations created in 0.443749 seconds $ redis-cli -a yourpassword GRAPH.QUERY MAMMALS "CALL db.idx.fulltext.createNodeIndex('Species','description')" Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 1) (empty list or set) 2) (empty list or set) 3) 1) "Query internal execution time: 324.970000 milliseconds"
(gist:https://gist.github.com/stockholmux/0727a4a784a46f8cb9e8329d393a513a)
在這里,key MAMMALS 包含了我們的整個圖表。一些重要的注意事項:
?bulk_insert.py 上的-q開關(guān)非常重要,因為它允許在讀取 CSV 時進(jìn)行智能引用。
?調(diào)用一次 redis-cli 對所有節(jié)點進(jìn)行批量索引,從而為全文搜索攝取了7000 多個文檔。
現(xiàn)在讓我們啟動并運行一個 UI。和幾乎所有 Node.js 應(yīng)用程序一樣,我們先安裝 npm。安裝大概需要幾秒鐘,因為我們不僅要管理Node 的服務(wù)器端文件。還有前端的 Vue.js 組件。如果你最近沒有花很多時間在前端JavaScript 上,那你大概不能使用一個 FTP 和 HTML 文件來實現(xiàn)這些功能。所幸現(xiàn)代前端確實重視工具,所以我們可以安裝 VueCLI(我建議遵循 Vue CLI 入門指南)。
在你的前端工具準(zhǔn)備好過后,讓我們繼續(xù)來講 npm 安裝和啟動運行前端上:
$ npm run build
這將創(chuàng)建我們所有前端文件的 dist 目錄?,F(xiàn)在我們有數(shù)據(jù)在 Redis 里,我們的前端文件也準(zhǔn)備好啟動服務(wù),所以我們可以連接 Redis 服務(wù)器:
$ node server.js -p 6379 -a yourpassword -hyourhostOrlocalhost
讓我們先討論一下關(guān)于我們剛剛打開的這個服務(wù)器的一些問題。它構(gòu)建在 Express.js上,主要使用 WebSocket 進(jìn)行通信。我還集成了可視化引擎調(diào)試工具,它允許您在單獨的瀏覽器窗口中查看正在執(zhí)行的命令。你可以把瀏覽器指向地址:http://localhost:4444。
總之,相對于它所實現(xiàn)的功能來說,它非常的簡短——只有 75 行代碼。我們的解決方案不需要那么長,因為我們實際上所做的就是接受WebSocket 連接,根據(jù)傳遞的消息運行 Redis 命令,然后將這些消息與結(jié)果一起傳遞回來。Redis(Graph)做了所有復(fù)雜的工作。讓我們看看正在執(zhí)行的命令。
為了搜索關(guān)鍵字,我們運行這個命令:
> GRAPH.QUERY MAMMALS"CALL db.idx.fulltext.queryNodes('Species','cat house pet')"
這很簡單。我們的鍵是哺乳動物,我們使用一個特殊的語法調(diào)用了一個特定的函數(shù),它的第一個參數(shù)是我們要查找的節(jié)點的標(biāo)簽,另一個參數(shù)是實際要搜索的字符串。您可以傳遞有效的RediSearch 參數(shù)進(jìn)行查詢,但請記住,目前這只是全文本搜索,因此不要使用地理空間、標(biāo)記或數(shù)字子句。
一旦我們確定了我們要比較的兩種動物,我們就可以使用一個簡單的命令進(jìn)行查詢:
> GRAPH.QUERY MAMMALS"MATCH (s:Species)-[*]->(x)<-[*]-(c:Species) WHERE c.fullname ='Felis catus' AND s.fullname = 'Balaenoptera borealis' RETURN x.name,labels(x) LIMIT 1"
在 server.js 文件中,這些查詢被表示為JavaScript 模板字符串,沒有對用戶隱藏,用戶輸入的字符串被直接插入到輸入中進(jìn)行查詢。但如果在生產(chǎn)環(huán)境中部署類似這樣的東西,就需要小心接收和校驗用戶輸入。
如果打算修改前端代碼,請確保編輯的是/src 目錄,而不是/dist。編輯之后,您需要再次運行 npmrun build 或使用開發(fā)服務(wù)器(npmrun serve),該服務(wù)器自動編譯對前端代碼的更改,并將其提供給另一個端口。這是一個非常標(biāo)準(zhǔn)的Vue.js 和 Bootstrap 應(yīng)用。唯一真正相關(guān)的文件是:/src/App.js, /src/components/panels.vue and /src/components/search.vue.
關(guān)于同時使用Redis和RedisGraph模塊的方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
分享標(biāo)題:如何同時使用Redis和RedisGraph模塊-創(chuàng)新互聯(lián)
本文地址:http://www.rwnh.cn/article48/ehshp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、軟件開發(fā)、手機網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、品牌網(wǎng)站制作、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)