1.3.10 • Published 8 years ago
raycache v1.3.10
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 versionHow 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 objectrequiredoptions: redis in-memroy database options redis.createClient()requiredcollections: list of your database collections which need to be cachingrequiredpostfixType: raycache use this string for concating fields which hold main fields data typesoptionalalwaysReturnedFieldfield name which raycache will always returned in all kind of querysoptional
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
1.3.10
8 years ago
1.3.9
8 years ago
1.3.5
8 years ago
1.2.5-beta
8 years ago
1.2.3-beta
8 years ago
1.2.2-beta
8 years ago
1.2.1-beta
8 years ago
1.0.1-beta
8 years ago
1.0.0-beta
8 years ago