predis

1.1.4 • Public • Published

Predis = promise + redis

Build Status Greenkeeper badge

Predis is based on node-redis. Instead invoking callback function after communication with database, it immediately returns a Promise object that will be resolved or rejected later.

Refer to node-redis documentation for available commands and arguments.

Usage

Requires Node v8 or above. Install with:

npm install predis

createClient takes an optional argument with server, port, and password for redis server:

const predis = require("predis");

const client = predis.createClient({
    port: 10229,
    server: "pub-redis-777.us-east-1-4.2.ec2.garantiadata.com",
    password: "secret"
});

If no options provided node-redis will try to connect to 127.0.0.1 on port 6379 (default for redis-server)

Examples

Simple get example

client.get("user:123").then((user) => {
    console.log(user);
});

Get all keys and their types

Promise.all([
    client.set("key", "value"),
    client.set("user", "123")
]).then(() => client.keys("*").then((keys) => Promise.all(keys.map((key) => client.type(key))))).then((result) => {
    console.log(result); // => ["string", "string"]
});

Fetch set with pointers and their values

Promise.all([
    client.sadd("stooges", "user:1"),
    client.sadd("stooges", "user:2"),
    client.sadd("stooges", "user:3"),
    client.set("user:1", "Andrei"),
    client.set("user:2", "Dave"),
    client.set("user:3", "Sasha")
]).then(() => {
    client.smembers("stooges").then((users) => {
        console.log(users); // => ["user:1", "user:2", "user:3"]

        client.mget(users).then((names) => {
            console.log(names); // => ["Andrei", "Dave", "Sasha"]
        });
    });
});

Store new user, add to 'stooges', and list all stooges

Promise.all([
    client.sadd("stooges", "user:1"),
    client.sadd("stooges", "user:2"),
    client.sadd("stooges", "user:3"),
    client.set("user:1", "Andrei"),
    client.set("user:2", "Dave"),
    client.set("user:3", "Sasha"),
    client.set("next:user", "3")
]).then(() => {
    client.incr("next:user")
        .then((id) => {
            console.log(id); // => 4
            client.set([`user:${id}`, "Andy"]);
            return id;
        })
        .then((id) => {
            return client.sadd("stooges", `user:${id}`);
        })
        .then(() => client.smembers("stooges").then(client.mget).then((stooges) => {
            console.log(stooges); // => ["Andrei", "Dave", "Sasha", "Andy"]
        }));
});

multi & exec

Predis does not return a promise after multi and exec commands. You can use this approach instead:

const destroyModel = ({ name, ...properties }) => new Promise((resolve, reject) => {
    const multi = client.multi();

    Object.keys(properties).forEach((key) => {
        multi.del(key);
    });

    multi.exec((err) => {
        if (err) {
            reject(err);
        } else {
            resolve(`Model ${name} successfully deleted`);
        }
    });
});

Promise.all([
    client.set("key1", "value1"),
    client.set("key2", "value2"),
    client.set("key3", "value3")
]).then(() => {
    destroyModel({
        name: "My test model",
        key1: "value1",
        key2: "value2",
        key3: "value3"
    }).then((message) => {
        console.log(message); // => "Model My test model successfully deleted"
    });
});

Package Sidebar

Install

npm i predis

Weekly Downloads

29

Version

1.1.4

License

MIT

Unpacked Size

15.4 kB

Total Files

8

Last publish

Collaborators

  • andrei.zharau