我知道有Redis的node.js庫;我想要做的(無論是在本地主機或服務器主機上的某個地方)運行Redis的服務器,並直接通過HTTP(即AJAX或HTTP GET根據需要)從JavaScript的瀏覽器中運行調用它(即Greasemonkey的或Chrome擴展腳本,或者一個小書籤或SCRIPT標籤)。 Redis是否有本地REST或HTTP API?我可以直接連接到運行在瀏覽器中的JavaScript的Redis服務器嗎?
回答
你可以從字面上連接到Redis的服務器通過HTTP,並有基於此安全漏洞。
的Redis是一個有效的HTTP服務器 - 也許這可以被用來製造Redis的一個JavaScript客戶端http://benmmurphy.github.io/blog/2015/06/04/redis-eval-lua-sandbox-escape/
?在顯示的示例中,命令直接發送到執行它們的redis服務器。然而,實際地說,你可以使用openresty在Redis的面前+ nginx的基本上直接對話的Redis通過HTTP,並得到nginx的的多線程服務器的性能優勢,這將共享一組有限的連接到Redis的本身。
由於@Theo解釋的,你不能直接連接,但如果你有設置然後webdis和Redis的我有消除周圍阿賈克斯擺弄自己的圖書館,取而代之的是一個方法的承諾。
webdismay是JS庫我最近公佈的(許可證:MIT)連接到來自瀏覽器的webdis + Redis的後端。採用ES6 Promises方法與redis + webdis後端進行通信,爲通用和無鑰redis命令提供functions,併爲在Keys/Strings,Lists,Hash和Sets上運行的命令組織類。所有的函數/方法都返回ES6 Promises。
假設你已經將webdis設置爲redis,在缺省配置中接受發送請求爲「/」,然後通過webdis可以將數據發送到服務器並稍後恢復它的一個簡單示例在瀏覽器上看起來像這樣(在ES6):
import 'whatwg-fetch'; // fetch polyfill
import * as W from 'webdismay';
const k = W.key('some-redis-key');
k.set('Hello, World!'); // store the information
// wait a while, e.g. in the dev console or with setTimeout()
k.get().then((v)=>console.log(v)); // --> Hello, World!
當時我寫這(七月2016),前兩條import
線需要從像JSPM或browserify工具的一些翻譯和打包援助(如果你改變了import
到require
) 。
這不是初學者友好的,但可以允許某人在瀏覽器中使用webdis + redis,而不必在JavaScript語言和redis之間不斷翻譯並編寫自己的ajax。
- 1. 我可以直接在Javascript中連接Redis嗎?
- 2. 是否可以通過瀏覽器創建與redis服務器的連接?
- 3. 可以將ldap服務器直接連接到Android手機嗎?
- 4. 運行在網頁上的Javascript可以連接到遠程服務器嗎?
- 5. Web瀏覽器客戶端可以直接連接到遠程websocket服務器嗎?
- 6. 我可以在iOS中運行套接字服務器嗎?
- 7. 您可以使用JavaScript處理瀏覽器的WebSocket連接嗎?
- 8. 無法連接到redis服務器
- 9. 連接到遠程redis服務器
- 10. Redis - 連接到遠程服務器
- 11. 連接到在eclipse中運行的服務器套接字
- 12. Google App Engine:瀏覽器到服務器的持續連接
- 13. 是否可以從遠程瀏覽器連接到我的CocoaHttpServer?
- 14. 我可以將heroku連接到外部MySQL服務器嗎?
- 15. 我可以打開多個連接到HTTP服務器嗎?
- 16. 瀏覽器運行時代理連接
- 17. 可以執行JavaScript的服務器端瀏覽器
- 18. 瀏覽器可以通過SSL/TLS連接到代理嗎?
- 19. 我正在使用putty連接到服務器,可以運行php腳本嗎?如果我能如何運行?
- 20. 瀏覽器可以連接服務器的最長時間(反之亦然)
- 21. 我可以在瀏覽器之外運行Google的Native Client嗎?
- 22. Websockets會允許服務器在瀏覽器中運行嗎?
- 23. 服務器到服務器的連接
- 24. 通過Javascript直接從瀏覽器使用REST服務
- 25. 我可以在瀏覽器中運行JSShaper嗎?
- 26. 訪問Neo4j的瀏覽器中運行與螺栓連接器
- 27. 尋找從一個瀏覽器連接到Web服務器
- 28. 無法從瀏覽器連接到Node.js Express服務器
- 29. Neo4J瀏覽器未連接到服務器
- 30. 無法將Realm瀏覽器連接到Realm對象服務器
我在考慮再次提出這個問題,但規定我們希望在實時redis-client中使用'真實',而不是HTTP在瀏覽器中運行。可以構建一個偉大的實時「基礎架構」,只需構建客戶端webapp的CDN服務資產,即可直接與Redis進行通信。我想刪除系統中不必要的WebSocket服務器方面。所有的控制邏輯可以內部化爲Lua中的redis集羣。 – 2015-10-20 15:07:34
http://stackoverflow.com/questions/33241247/what-would-it-take-to-implement-a-good-redis-client-in-the-web-browser – 2015-10-20 15:54:16