MinDB:国内高中生的开源JavaScript数据库项目

简介: 让你可以在 JavaScript 中对你的应用数据进行存储和操作。MinDB 提供一个标准的存储接口(Store Interface)和 Redis 风格的 API,你可以在任何 JavaScript 环境中使用。

image.png

让你可以在 JavaScript 中对你的应用数据进行存储和操作。

MinDB 提供一个标准的存储接口(Store Interface)和 Redis 风格的 API,你可以在任何 JavaScript 环境中使用。


它在 Github 上的项目主页是:https://github.com/iwillwen/mindb

据项目作者的微博资料, 他是广州石门中学的高中生,1996年出生。(编辑不得不注:后生可畏!!)


安装

普通script标签引入:

<script style="text/javascript"src="/path/to/script/min.js">

通过 Node.jsnpm 安装:

$ npm install min

如果你正在使用 SeaJS,你可以通过 spm 进行安装:

$ spm install iwillwen/min

如果你喜欢 component,你也可以使用它进行安装:

$ component install iwillwen/mindb

或者 bower?:

$ bower install mindb

基本使用方法

基本的键值存储可以通过SETGET等命令操作:

min.set('foo', 'bar', function(err) {

 if (err) {

   return console.error(err);

 }

 min.get('foo', function(err, value) {

   if (err) {

     return console.error(err);

   }

   console.log(value); //=> bar

 });

});

基本方法

  • set 对指定键设置数据 (key, value[, callback])
  • setnx 当指定键不存在时,对其设置数据 (key, value[, callback])
  • setex 对指定键设置数据,并设置生命周期 (key, seconds, value[, callback])
  • psetex 对指定键设置数据,并设置以毫秒为单位的生命周期 (key, millseconds, value[, callback])
  • mset 批量对指定键设置数据 (plainObject[, callback])
  • msetnx 当一批指定键全部不存在时,批量对其设置数据 (plainObject[, callback])
  • append 在指定键后插入值 (key, value[, callback])
  • get 获取指定键的值 (key[, callback])
  • mget 批量获取指定键的值 (keys[, callback])
  • getset 对指定键设置数据并返回其之前的值 (key, value[, callback])
  • strlen 获取指定键值的长度 (key[, callback])
  • incr 将指定键中储存的数字值增一 (key[, callback])
  • incrby 将指定键中储存的数字值增加若干量 (key, increment[, callback])
  • incrbyfloat 将指定键中储存的浮点值增加若干量 (key, increment[, callback])


Hash, List, Set, Sorted Set

你或许可以在 Redis 的官方网站中得到启示。


语法糖(Syntactic sugar)

不喜欢嵌套回调?你或许会喜欢 Promise:

min.incr('user_id')

 .then(function(curr) {

   returnmin.hmset('user-' + curr, {

     name: 'Will Wen Gunn',

     id: 'iwillwen',

     email: 'willwengunn@gmail.com'

   });

 })

 .then(function(key) {

   varid = key.substr(5);

   returnmin.sadd('user-msg-' + id, 'WelCome!');

 })

 .then(function(length) {

   // ...

 })

 .fail(function(err) {

   console.log(err);

 });

还不行?不需要依赖?那么来看看MULTI吧:

min.multi()

 .incr('msg-seq')

 .incr('msg-seq')

 .incr('msg-seq')

 .exec(function(err, results) {

   if (err) {

     return console.error(err);

   }

   console.log(results); //=> [ [ 1 ], [ 2 ], [ 3 ] ]

 });

MinDB 也支持多数据库:

varMin = min.fork();

Min.set('foo', 'bar')

 .then(/*...*/)

 .fail(/*...*/);

Store Interface

请阅读 Store Interface 文档.

相关文章
|
12天前
|
算法 JavaScript 前端开发
第一个算法项目 | JS实现并查集迷宫算法Demo学习
本文是关于使用JavaScript实现并查集迷宫算法的中国象棋demo的学习记录,包括项目运行方法、知识点梳理、代码赏析以及相关CSS样式表文件的介绍。
第一个算法项目 | JS实现并查集迷宫算法Demo学习
|
15天前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
17天前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
16天前
vite.config.js中vite.defineConfig is not defined以及创建最新版本的vite项目
本文讨论了在配置Vite项目时遇到的`vite.defineConfig is not defined`错误,这通常是由于缺少必要的导入语句导致的。文章还涉及了如何创建最新版本的Vite项目以及如何处理`configEnv is not defined`的问题。
38 3
vite.config.js中vite.defineConfig is not defined以及创建最新版本的vite项目
|
8天前
|
Java 关系型数据库 数据库连接
SpringBoot项目使用yml文件链接数据库异常
【10月更文挑战第3天】Spring Boot项目中数据库连接问题可能源于配置错误或依赖缺失。YAML配置文件的格式不正确,如缩进错误,会导致解析失败;而数据库驱动不匹配、连接字符串或认证信息错误同样引发连接异常。解决方法包括检查并修正YAML格式,确认配置属性无误,以及添加正确的数据库驱动依赖。利用日志记录和异常信息分析可辅助问题排查。
30 10
|
2天前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
7 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
7天前
|
Java 关系型数据库 MySQL
SpringBoot项目使用yml文件链接数据库异常
【10月更文挑战第4天】本文分析了Spring Boot应用在连接数据库时可能遇到的问题及其解决方案。主要从四个方面探讨:配置文件格式错误、依赖缺失或版本不兼容、数据库服务问题、配置属性未正确注入。针对这些问题,提供了详细的检查方法和调试技巧,如检查YAML格式、验证依赖版本、确认数据库服务状态及用户权限,并通过日志和断点调试定位问题。
|
2月前
|
JSON 前端开发 JavaScript
|
25天前
|
JavaScript Linux 开发者
一个用于管理多个 Node.js 版本的安装和切换开源工具
【9月更文挑战第14天】nvm(Node Version Manager)是一个开源工具,用于便捷地管理多个 Node.js 版本。其特点包括:版本安装便捷,支持 LTS 和最新版本;版本切换简单,不影响开发流程;多平台支持,包括 Windows、macOS 和 Linux;社区活跃,持续更新。通过 nvm,开发者可以轻松安装、切换和管理不同项目的 Node.js 版本,提高开发效率。
|
2天前
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较