hapi-redis
A node-redis hapi plugin
Installation
npm install --save @pager/hapi-redis
Quick start
This pretty much works as a regular node-redis client, with the addition of providing an easily accessible instance via the server.app
common namespace.
Examples
const Hapi = require('hapi');
const server = new Hapi.Server();
server.connection({ host: 'localhost' });
const options = {
// node-redis config options - http://redis.js.org/#api-rediscreateclient
};
// Register the plugin
server.register({
register: require('@pager/hapi-redis'),
options: options
}, (err) => {
if (err) {
console.error(err);
}
else {
server.start(() => {
console.info(`Server started at ${server.info.uri}`);
});
}
});
// Declare a route that uses it
server.route({
method: 'GET',
path: '/stats',
handler: usersHandler
});
usersHandler (request, reply) => {
// Access the redis instance
const client = request.redis;
client.hgetall('users', (err, obj) => {
if (err) {
throw err
}
return reply({ result: obj });
});
};
server.start(() => {
console.log(`Server started at ${server.info.uri}`);
});
Async support
You could use next promisified methods, e.g.:
const res = await getAsync(key);
Original method | Promisified method |
---|---|
set | setAsync |
get | getAsync |
flushall | flushallAsync |
quit | quitAsync |
keys | keysAsync |
ttl | ttlAsync |
Tests
To run the test suite, first install the dependencies, then run npm test
:
$ npm install
$ npm test
Versions
- Use 1.x.x for hapi@16
- Use 2.x.x for hapi@17 or later
Acknowledgements
This module borrows heavily from hapi-ioredis.