Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以从浏览器中运行的JavaScript直接连接到Redis服务器吗?_Javascript_Rest_Redis_Restapi - Fatal编程技术网

我可以从浏览器中运行的JavaScript直接连接到Redis服务器吗?

我可以从浏览器中运行的JavaScript直接连接到Redis服务器吗?,javascript,rest,redis,restapi,Javascript,Rest,Redis,Restapi,我知道Redis有node.js库;我想做的是运行一个Redis服务器(在本地主机或某个服务器主机上),并通过HTTP(即AJAX或HTTP GET,根据需要)直接从浏览器中运行的JavaScript(即Greasemonkey或Chrome扩展脚本,或者bookmarklet或脚本标记)调用它。Redis是否有本机REST或HTTP API?您不能从浏览器中运行的JavaScript直接连接到Redis,因为Redis不讲HTTP。你所能做的就是把它放在Redis的前面,它可以通过HTTP接口

我知道Redis有node.js库;我想做的是运行一个Redis服务器(在本地主机或某个服务器主机上),并通过HTTP(即AJAX或HTTP GET,根据需要)直接从浏览器中运行的JavaScript(即Greasemonkey或Chrome扩展脚本,或者bookmarklet或脚本标记)调用它。Redis是否有本机REST或HTTP API?

您不能从浏览器中运行的JavaScript直接连接到Redis,因为Redis不讲HTTP。你所能做的就是把它放在Redis的前面,它可以通过HTTP接口与Redis实例一起工作。

你可以通过HTTP直接连接到Redis服务器,并且有一个基于此的安全漏洞攻击

Redis实际上是一个HTTP服务器 --


也许这可以用来为redis创建一个javascript客户端?在所示的示例中,命令直接发送到执行它们的redis服务器。然而,实际上,您可以在redis前面使用openresty+nginx,通过http直接与redis对话,并获得nginx多线程服务器的性能优势,该服务器将与redis本身共享有限的连接集。

正如@Theo所解释的,您无法直接连接,但是,如果您已经设置了webdis和redis,那么我有一个库,它可以消除您自己对ajax的干扰,支持基于承诺的方法

是我最近发布的一个JS库(许可证:MIT),用于从浏览器连接到webdis+redis后端。它采用ES6 Promises方法与redis+webdis后端通信,提供通用和无键redis命令,并为在和上操作的命令提供有组织的类。所有函数/方法都返回ES6承诺

假设您使用redis设置了webdis,在默认配置中接受对“/”的post请求,那么使用WebDismy,在浏览器上(在ES6中)向服务器发送数据并稍后取回数据的简单示例如下所示:

在我撰写本文时(2016年7月),前两行
import
需要jspm或browserify等工具的翻译和打包帮助(如果您将
import
更改为
require


这对初学者来说还不太友好,但可以让用户在浏览器中使用webdis+redis,而无需在javascript习惯用法和redis之间不断转换,编写自己的ajax。

与在redis前面使用NGINX服务器相比,webdis的速度非常慢


如果您只需在mod perl中实现一个简单的redis客户机,并在nginx后面公开,您就可以轻松获得非常好的性能。你也可以处理很多逻辑

我考虑再问一次这个问题,但规定我们需要一个“真实的”实时redis客户端,而不是HTTP任何东西,在浏览器中运行。可以构建一个伟大的实时“基础设施”,只需CDN服务资产即可构成与Redis直接通信的客户端webapp。我想删除系统中不必要的WebSocket服务器方面。所有的控制逻辑都可以内化到Lua中的redis集群中。目前还没有Windows实现:作为Webdis的作者,我已经完成了许多Webdis和备选方案的基准测试,我强烈反对这种说法。Webdis是多线程的,很容易使单线程Redis实例饱和,这很快成为基准测试中的瓶颈。在开发Webdis时,我与的作者进行了讨论,我们都得出结论,Webdis速度更快。此外,使用mod perl的建议不太可能比使用Webdis带来更好的性能——恰恰相反。
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!