
Research
/Security News
npm Author Qix Compromised via Phishing Email in Major Supply Chain Attack
npm author Qix’s account was compromised, with malicious versions of popular packages like chalk-template, color-convert, and strip-ansi published.
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.
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)
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"]
}));
});
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"
});
});
FAQs
Redis interface with promises
The npm package predis receives a total of 26 weekly downloads. As such, predis popularity was classified as not popular.
We found that predis demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Research
/Security News
npm author Qix’s account was compromised, with malicious versions of popular packages like chalk-template, color-convert, and strip-ansi published.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.