Redis is a great place to store data you need fast access to in your Hapi app. If you have many route handlers in separate files it can be tedious to require()
(or import
if you prefer) the redis
module
and establish a connection in each one ... so we created a tiny Plugin
that gives you access to Redis in all your routes.
A simple hapi module which makes a connection to your Redis store available anywhere in your Hapi server.
Install the plugin/package from NPM:
npm install hapi-redis-connection --save
server.register({ // register all your plugins
register: require('hapi-redis-connection') // no options required
}, function (err) {
if (err) {
// handle plugin startup error
}
});
hapi-redis-connection
in your Route Handlerserver.route({
method: 'GET',
path: '/',
handler: function(request, reply) {
request.redis.get('homepage', function(err, result) {
console.log(err, result);
return reply(result);
});
}
});
If you want more usage examples, ask! :wink:
If you want to use a Redis server from a 3rd Party Provider, e.g: Redis Cloud you will need to export an environment variable with the URL of the server e.g:
export REDISCLOUD_URL=redis://rediscloud:password@redis-server.com
If you do not set a REDISCLOUD_URL
the plugin will attempt to connect
to redis on your localhost.
At present we are using Redis Cloud for our Hapi apps because they have a great service at an affordable price.
If you are planning on using another provider e.g. AWS ElastiCache (Redis), please let us know! https://github.com/dwyl/redis-connection/issues
This package uses: redis-connection
which in turn exposes node_redis
(feature complete & high performance Redis client)
Connecting to Redis Cloud is tested in: https://git.io/v6vTf