如何沟通与redis没有外部模块
How comunicate with redis without exernal modules?
我想知道节点redis包装器如何与RESP (redis序列化协议)数据库通信。
一个例子const redis = function(uri) {
this.client = '' // how connect with redis uri redis://localhost:6379
}
redis.prototype.set = (key, value, callback) => {
// how comunicate with redis and set some value?
}
所以RESP是基于TCP连接的纯文本协议。
Node允许你使用内置的net模块和它的Socket类建立TCP连接。
所以对于你的例子(注意:这显然是一个过度简化的版本):
var net = require('net'); // builtin since Node 0.3.4
const redis = function(uri) {
var host = getHostFromUri(uri), port = getPortFromUri(uri)
this.client = new net.Socket()
this.client.connect(port, host, function() { ... })
this.client.on('data', function(msg) {
if(this.responseHandler) this.responseHandler(msg)
})
}
redis.prototype.set = function(key, value, callback) {
// assuming the connection was successful
this.client.write("SET " + key + " " + value + "'r'n")
this.responseHandler = callback
}
相关文章:
- 使用外部模块继承Jade模板的好策略,在Express上
- 如何在RT上添加插件和使用一些外部模块/文件
- 如何将参数传递到外部模块中
- AngularJS参考工厂.来自外部模块的功能
- 在 TypeScript 中使用外部模块声明一个全局变量
- 异步功能取决于量角器测试中的外部模块
- Casperjs赢得'不允许使用外部模块
- Node.JS+Socket.io,将套接字事件处理程序移动到外部模块
- 如何用oclazyload加载的外部模块加载Angular translate
- Angular+TypeScript+外部模块.如何跨文件维护类型信息
- 使用angular js中的外部模块服务解析状态
- 类已经或正在使用名称'SafeUrl'从外部模块获取,但不能命名
- Angular Animation在路由到外部模块时出错[Cannot read property 'play&
- 击倒内部/外部模块!==短暂/单身的生活方式
- Webpack外部模块名称带连字符
- 是否可以将多个内部模块组合到一个外部模块?
- 要求/AMD外部模块分辨率
- Angular.js -不能注入外部模块
- 当类型声明为环境外部模块定义时,如何声明参数类型
- 从外部模块注入提供程序到配置块时出现未知的提供程序错误