Skip to content

raychat/raycache

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Raycache

raycache is a simple module which make you able to cache mongodb documents without stringifying whole document.

important: raycache compatible with mongoose 4.1 or higher version

How it works

When you trying to cache a document which contain id, name, active fields, it immediately save this docuement into redis in-memory database using hmset command like this:

main key: 123

Hash key value
id 123
id_type number
name Hamet
name_type string
active false
active_type boolean

so when you trying to fetch this document it will return object with exact fields and types

Usage

simply install raycache via npm install raycache --save then initialize it like this

const mongoose = require('mongoose');
const raycache = require('raycache')
mongoose.connect('mongodb://127.0.0.1/test');

raycache(mongoose, {
  options: {
    host: '127.0.0.1',
    port: 6379,
    ttl: 50
  },
  collections: ['agents'],
  postfixType: '_type', 
  alwaysReturnedField: '_id'
})

api

raycache(mongoose, [, opts],..)

  • mongoose: a mongoose object required
  • options: redis in-memroy database options redis.createClient() required
  • collections: list of your database collections which need to be caching required
  • postfixType: raycache use this string for concating fields which hold main fields data types optional
  • alwaysReturnedField field name which raycache will always returned in all kind of querys optional

all you need after initializing raycache is

Users.findOne({ _id: "123" })
  .raycache()
  .exec((err, res) => {
    // do some stuff 
  })
  
// OR pass options
Users.findOne({ _id: "123" })
  .raycache({
    ttl: 1000, // Second
    key: '_id', // which field value should be used for redis Main key (it should defined in query condition)
    // or use custom key, key: {name: 'some-value', custom: true}
  })
  .exec((err, res) => {
    // do some stuff 
  })

supported methods

raycache is available for particular methods:

  • for find: findOne, findById
  • for update updateOne
  • for remove deleteOne, findByIdAndRemove, findOneAndRemove

About

caching mongodb document's as Object in redis in-memory database

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published