2011-04-22 3 views
27

Redis에는 node.js 라이브러리가 있습니다. 내가 뭘하고 싶은데요 로컬 호스트 또는 어딘가에 서버 호스트에서 Redis 서버를 실행하고 자바 스크립트 (예 : Greasemonkey 또는 크롬)에서 직접 (즉, 필요에 따라 AJAX 또는 HTTP GET)를 통해 직접 전화 확장 스크립트 또는 북마클릿 또는 SCRIPT 태그). Redis는 기본 REST 또는 HTTP API를 가지고 있습니까?브라우저에서 실행중인 JavaScript에서 Redis 서버에 직접 연결할 수 있습니까?

+0

나는이 질문을 다시 제기하는 것을 고려하고 있지만 브라우저에서 작동하는 HTTP가 아닌 실시간 redis-client처럼 '실제'를 원한다고 규정하고 있습니다. Redis와 직접 통신하는 클라이언트 웹 애플리케이션을 구성하는 CDN 서비스 자산만으로 훌륭한 실시간 인프라를 구축 할 수있었습니다. 나는 시스템의 불필요한 WebSocket 서버 부분을 없애고 싶다. 모든 제어 로직은 루아의 redis 클러스터로 내부화 될 수 있습니다. –

+0

http://stackoverflow.com/questions/33241247/what-would-it-take-to-implement-a-good-redis-client-in-the-web-browser –

답변

34

Redis가 HTTP를 사용하지 않기 때문에 브라우저에서 실행중인 JavaScript의 Redis에 직접 연결할 수 없습니다. 할 수있는 일은 webdis을 Redis 앞에두고 HTTP 인터페이스를 통해 Redis 인스턴스로 작업 할 수 있습니다.

+0

현재 Windows 구현은 없습니다. https : //github.com/nicolasff/webdis/issues/138 – icc97

2

사실상 http를 통해 redis 서버에 연결할 수 있으며이를 기반으로 한 보안 취약성이 있습니다. 어쩌면이 레디 스에 대한 자바 스크립트 클라이언트를 만드는 데 사용할 수 http://benmmurphy.github.io/blog/2015/06/04/redis-eval-lua-sandbox-escape/

-

레디 스 효과적으로 HTTP 서버 입니까? 표시된 예에서 명령은이를 실행하는 redis 서버로 직접 전송됩니다. 그러나 실질적으로 말해 redis 앞에서 openresty + nginx를 사용하여 http를 통해 redis와 직접 대화하고 nginx의 다중 스레드 서버의 성능 이점을 얻을 수 있습니다.이 서버는 redis 자체에 제한된 연결을 공유합니다.

1

@Theo가 설명했듯이 직접 연결할 수는 없지만 webdis와 redis가 설정된 경우 ajax를 사용하여 약속 기반 접근 방식을 선호하는 라이브러리를 사용할 수 있습니다.

webdismay은 최근에 브라우저에서 webdis + redis 백엔드에 연결 (라이센스 : MIT) 한 JS 라이브러리입니다. redis + webdis 백엔드와 통신하는 ES6 Promises 접근 방식을 사용하여 Keys/Strings, Lists, HashSets에서 작동하는 명령에 대한 일반 클래스 및 키없는 redis 명령과 조직 클래스에 functions을 제공합니다. 모든 함수/메소드는 ES6 약속을 반환합니다.

webdis가 redis로 설정되었다고 가정하고 기본 구성에서 "/"에 대한 요청을 받아들이면 webdismay로 서버에 데이터를 보내고 나중에 다시 가져 오는 간단한 예가 브라우저에서 나타납니다 (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! 

나는이 (7 월 (2016)), (당신이 importrequire에를 변경하는 경우) 처음 두 import 라인 니혼 전자 : JSPM 또는 browserify 같은 도구를 일부 번역 및 포장 도움을 필요로 쓰고 .

이것은 아직 초보자 친화적 인 것은 아니지만 자바 스크립트 관용어와 redis간에 끊임없이 정신적으로 번역하고 자신의 아약스를 작성하지 않고도 브라우저에서 webdis + redis를 사용할 수있게 할 수 있습니다.

관련 문제