catbox-redis
Installation:

npm: npm install @hapi/catbox-redis

yarn: yarn add @hapi/catbox-redis

Options

The connection can be specified with one (and only one) of:

  • client - a custom Redis client instance where client must:

    • be manually started and stopped,
    • be compatible with the ioredis module API, and
    • expose the status property that must be set to 'ready' when connected.
  • url - a Redis server URL.

  • socket - a unix socket string.

  • cluster - an array of { host, port } pairs.

Or:

  • host - a Redis server hostname. Defaults to '127.0.0.1' if no other connection method specified from the above.
  • port - a Redis server port or unix domain socket path. Defaults to 6379 if no other connection method specified from the above.

catbox options:

  • partition - a string used to prefix all item keys with. Defaults to ''.

Other supported Redis options:

  • password - the Redis authentication password when required.
  • db - a Redis database name or number.
  • sentinels - an array of { host, port } sentinel address pairs.
  • sentinelName - the name of the sentinel master (when sentinels is specified).
  • tls - an object representing TLS config options for ioredis.

Usage

Sample catbox cache initialization:

const Catbox = require('@hapi/catbox');
const CatboxRedis = require('@hapi/catbox-redis');


const cache = new Catbox.Client(CatboxRedis, {
    partition : 'my_cached_data'
    host: 'redis-cluster.domain.com',
    port: 6379,
    db: 0,
    tls: {},
});

When used in a hapi server (hapi version 18 or newer):

const Hapi = require('hapi')
const CatboxRedis = require('@hapi/catbox-redis');

const server = new Hapi.Server({
    cache : [
        {
            name: 'my_cache',
            provider: {
                constructor: CatboxRedis,
                options: {
                    partition : 'my_cached_data'
                    host: 'redis-cluster.domain.com',
                    port: 6379,
                    db: 0,
                    tls: {},
                }
            }
        }
    ]
});

Tests

The test suite expects:

  • a redis server to be running on port 6379
  • a redis server listenning to port 6378 and requiring a password: 'secret'
  • a redis server listenning on socket /tmp/redis.sock
  • a redis cluster contains nodes running on ports 7000 to 7005

See .travis.yml

docker-compose up -d
redis-server &
npm test

Changelog

#109
Use PSETEX instead of SET and PEXP
#107
Update joi
#103
Example "db" parameter error
#106
Update deps
#102
Allowing empty password
#100
hotfix: redis tls opt is an object, not boolean
5.0.0
breaking changes
#98
Switch to use Redis pexpire
#97
Refactor options
#96
Change module namespace
#79
Don't mess with provided clients
#69
added support for dropSegment
v4.0.0
breaking changes
#77
Update to work with Catbox 10 (Hapi 17)
#74
Ensure the client really is ready
#72
Upgrade `ioredis` to `3.x.x`
#71
chore(package): update ioredis to v3
v3.0.0
breaking changes
#62
update dependencies
#53
Move to `ioredis`
#52
upgrade code@3 and lab@11
#51
Add option to ignore startup failures
#49
Use `false` parameter to `client.end` in order to fail silently
#47
Adding flush parameter when calling client.end
#45
Test on node v6, update dependencies
v1.1.0
breaking changes
#36
Ignore partition if not defined
#40
Allow passing a ready Redis client
#39
Drop node 0.10 support
#30
Add unix socket support
#38
Cleanup tests
#37
Wait redis client to be ready in order to make sure that authentication has been done
#31
Loosen dependency to redis 2.x.x to allow 2.3.0 to match
#27
Upgrade outdated node-redis dependency
#8
Rename spumko to hapijs
#7
Remove large ttl test
#5
Bring coverage back to 100%
#3
Add example
clipboard