OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

OnceDB支持全文搜索和关系查询的Redis内存数据库:驱动安装及使用教程


分享到
分类 JS学习   关键字 Node.JS   发布 ourjs  1484557068490
注意 转载须保留原文链接,译文链接,作者译者等信息。  

我们的企业网盘OnceDoc和管理软件采用内存数据库Redis。Redis 是一个使用 C 语言编写的键值对存储数据库,体积小巧,性能优异,实施简单。很多大并发网站如Twitter、GitHub Weibo、Snapchat、Flickr、阿里等都将其用作SESSION存储及缓存的管理。出于性能的考虑 Redis 自带的命令一般不支持按值查找。但是企业软件又需要数据库有搜索、复杂条件查询以及聚合分析的能力。为了实现这些功能我们修改了Redis的源码。并创建了一个新的开源分支 OnceDB,用户可以到Github下载最新的Windows版本进行测试。

注* 我们为部分客户部署了一些Linux实例,到目前为止运行稳定,Windows版本并没有在生产环境测试过。

版本

我们基于Redis3.x版本进行修改,尽管最新的4.x添加了外部模块的支持,但并不适合我们的应用场景,外部模块会增加Reids的使用风险,并且会增加修改的难度。Redis从3.x版本开始支持集群Cluster,足以满足我们的需要。

驱动

我们基于node_redis@v0.12.1版本做了一个新的node.js驱动 oncedb-client

安装

使用npm安装 oncedb-client 驱动模块

npm install oncedb-client

通过require安装oncedb-client模块,并创建client,此时会默认连接本地6379端口的redis,然后就可以用他在nodejs中进行查询了。

var client = require("oncedb-client").createClient();

查询 String: search [key pattern] operator value

string是redis最基本的类型,而且string类型是二进制安全的。即string可以包含任何数据。比如jpg图片或者序列化的JSON对象。下例在 text* 类型的key中查找值为'Kris'的数据

var client = require("oncedb-client").createClient();

client.search('text*', '=', 'Kris', function(err, objs) {
  console.log(objs)
})

输出结果为数组,第一条为健第二条记录为值

> [ 'text1', 'Kris' ]

搜索含有Kris的记录

client.search('text*', '~', 'Kris', function(err, objs) {
  console.log(objs)
})

输出结果为两组健值

> [ 'text1', 'Kris', 'text5', 'This is ok, Kris' ]

查询 Hash: hsearch [key pattern] field operator value ...

Redis hash是一个string类型的field和value的映射表。一个hash类型的key含多个field,一个field对应一个value。Hash非常适合存放JSON对象。hsearch支持对field进行查询。

比如查询一条userInfo记录,其中 {'>':'100'} ,也可使用类mongodb语法:{'$gt':'100'}:

client.hsearch('userInfo:*', {
    'name'     : 'Mar'
  , 'gender'   : 'male'
  , 'nVisit'   : {'>':'100'}
}, function(err, objs) {
    console.log(objs)  
})

查找结果

> [ { _key: 'userInfo:1006',
   name: 'Mar',
   gender: 'male',
   nVisit: '10000' } ]

Hash 批量打印(只指定key): hmgetall key1 key2 ...

client.hmgetall(['userInfo:100', 'userInfo:1003', 'userInfo:100'], function(err, objs) {
  console.log(objs)
})

输出结果

> [ { _key: 'userInfo:100',
    id: '100',
    name: 'shanghai',
    gender: 'female',
    poster: '龙' },
  { _key: 'userInfo:1003',
    name: 'Telyer',
    id: '1003',
    gender: 'male',
    active: '0',
    joinTime: '1484445746020',
    poster: '王五',
    isPublic: '0',
    nVisit: '300' },
  { _key: 'userInfo:100',
    id: '100',
    name: 'shanghai',
    gender: 'female',
    poster: '龙' } ]

【文档不断完善中】


原文:  http://cn.oncedoc.com/page/view/helper/ixzojnl2cn01am5d



原文地址: 点此
社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. NodeJS教程:基于OnceIO框架实现文件上传和验证
  2. 2016年前端技术观察
  3. 在Debian上安装Nginx并搭建一个最简单的静态网站服务器(以OnceAI为例)
  4. 少年,不要滥用箭头函数啊:JS中lambda表达式的优缺点和使用场景
  5. OnceIO(Node.JS)服务器端Cookie设置、添加、删除、显示及其实现原理
  6. OnceIO的模块拦截与注入:模板文件路由重定向与Model数据改写
  7. 如何搭建个人SASS云盘:30秒快速安装OnceDoc企业私有网盘
  8. OnceIO模块开发:模块注册、模块路由、静态文件重定向以及如何开发与设计一个功能扩展模块
  9. GitHub 第一坑:换行符自动转换
  10. 在OnceIO(Node.JS)中用Redis储存Session
  11. AirJD-简单好用的免费建站工具

 相关阅读 - JS学习
  1. 在OnceIO(Node.JS)中用Redis储存Session
  2. OnceIO的模块拦截与注入:模板文件路由重定向与Model数据改写
  3. OnceIO模块开发:模块注册、模块路由、静态文件重定向以及如何开发与设计一个功能扩展模块
  4. 少年,不要滥用箭头函数啊:JS中lambda表达式的优缺点和使用场景
  5. NodeJS教程:基于OnceIO框架实现文件上传和验证
  6. 在Debian(Raspberry Pi)树莓派上安装NodeJS
  7. OnceIO(Node.JS)服务器端Cookie设置、添加、删除、显示及其实现原理
  8. OnceIO(Node.JS)的网页(模板)的引用与嵌套
  9. OnceIO(NodeJS)中的服务器端缓存、模板预加载和静态资源文件的缓存和Gzip压缩机制
  10. NodeJS中的客户端缓存、浏览器缓存、304缓存和OnceIO的缓存控制

 关键字 - Node.JS
  1. KoaHub全栈商城系统正式上线!
  2. 在nodejs中使用Redis缓存和查询数据及Session持久化(Express)
  3. nodejs下一代开源商城系统 立即下载
  4. Node.JS编码规范指南教程:教你优雅地写JavaScript代码
  5. 使用NodeJS将XML解析成JSON及性能比较
  6. 沃尔玛为什么要采用Node.js
  7. NodeJS教程:基于OnceIO框架实现文件上传和验证
  8. OnceDB支持全文搜索和关系查询的Redis内存数据库:驱动安装及使用教程
  9. 告别Node.js
  10. 在OnceIO(Node.JS)中用Redis储存Session

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号