Socket
Book a DemoInstallSign in
Socket

predis

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

predis

Redis interface with promises

1.1.4
latest
Source
npmnpm
Version published
Weekly downloads
27
-15.62%
Maintainers
1
Weekly downloads
 
Created
Source

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"
    });
});

Keywords

redis

FAQs

Package last updated on 20 Jan 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.