SQL-like

OnceDB uses SQL-like syntax to help you create secondary indexes and query data through indexes.

Compative

OnceDB does not change the structure of the Redis DB file, numerous third-party tools for Redis can be used directly.

Fulltext search

OnceDB support fuzzy queries if you don't mind the performance.

Calculation

OnceDB provides many calculation APIs, you can perform various mathematical calculations on the raw data.




Example

 insert user username @ dota password = 1234567 title ? SDEII skill * c,js,go
> OK
insert user username @ war3 password = abcdefg title ? SDEI skill * c,js
> OK
find user 0 -1 username = * title ? SDEI skill = *
1) 1
2) user:war3
3) war3
4) SDEI
5) c,js

Node.js OnceDB client

(async() => {

const util = require('util')
const oncedb = require('oncedb')()

// Priomisify interface
const upsert = util.promisify(oncedb.upsert).bind(oncedb)
const select = util.promisify(oncedb.select).bind(oncedb)

// Define schema
oncedb.schema('blog', { id: 'id;sequence', user: 'group', keys: 'keywords', visit: 'sort' })

// Add testing data
await upsert('blog', { user: 'fire', keys: 'c,java,js', visit: 3899 })
await upsert('blog', { user: 'fire', keys: 'php,c,js', visit: 1000 })
await upsert('blog', { user: 'ice', keys: 'java,c,node.js', visit: 1200 })
await upsert('blog', { user: 'ice', keys: 'node.js,php,c', visit: 3206 })


// General index search
let blog1 = await select('blog', { user: 'fire', keys: 'php' })


// Full-text search
let blog2 = await select('blog', { keys: 'js', visit: { '>=': 3000, '<=': 4000 } })


// Search using index
let blog3 = await select('blog', { keys: 'js' }, { sort: [ 'visit', 3000, 4000 ] })


console.log('blog1:', blog1)
console.log('blog2:', blog2)
console.log('blog3:', blog3)
})();
Output:
blog1: [{
_key: 'blog:2',
id: '2',
user: 'fire',
keys: [ 'php', 'c', 'js' ],
visit: '1000'
}]

blog2: [{
_key: 'blog:1',
id: '1',
user: 'fire',
keys: [ 'c', 'java', 'js' ],
visit: '3899'
}]

blog3: [{
_key: 'blog:1',
id: '1',
user: 'fire',
keys: [ 'c', 'java', 'js' ],
visit: '3899'
}]

OnceDB is completely free for commercial use