Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: add more detail to the basic example #1043

Merged
merged 5 commits into from Feb 19, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
29 changes: 19 additions & 10 deletions README.md
Expand Up @@ -76,23 +76,32 @@ $ npm install ioredis
## Basic Usage

```javascript
var Redis = require("ioredis");
var redis = new Redis();
const Redis = require("ioredis");
const redis = new Redis(); // uses defaults unless given configuration object

redis.set("foo", "bar");
// ioredis supports all Redis commands:
redis.set("foo", "bar"); // returns promise which resolves to string, "OK"

// the format is: redis[SOME_REDIS_COMMAND_IN_LOWERCASE](ARGUMENTS_ARE_JOINED_INTO_COMMAND_STRING)
// the js: ` redis.set("mykey", "Hello") ` is equivalent to the cli: ` redis> SET mykey "Hello" `

// ioredis supports the node.js callback style
redis.get("foo", function(err, result) {
console.log(result);
if (err) {
console.error(err);
} else {
console.log(result); // Promise resolves to "bar"
}
});
redis.del("foo");

// Or using a promise if the last argument isn't a function
// Or ioredis returns a promise if the last argument isn't a function
redis.get("foo").then(function(result) {
console.log(result);
console.log(result); // Prints "bar"
});

// Arguments to commands are flattened, so the following are the same:
redis.sadd("set", 1, 3, 5, 7);
redis.sadd("set", [1, 3, 5, 7]);
// Most responses are strings, or arrays of strings
redis.zadd("sortedSet", 1, "one", 2, "dos", 4, "quatro", 3, "three")
redis.zrange("sortedSet", 0, 2, "WITHSCORES").then(res => console.log(res)); // Promise resolves to ["one", "1", "dos", "2", "three", "3"] as if the command was ` redis> ZRANGE sortedSet 0 2 WITHSCORES `

// All arguments are passed directly to the redis server:
redis.set("key", 100, "EX", 10);
Expand Down
35 changes: 26 additions & 9 deletions examples/basic_operations.js
@@ -1,30 +1,47 @@
"use strict";

var Redis = require("ioredis");
var redis = new Redis();
const Redis = require("ioredis");
const redis = new Redis({
port: process.env.redisPort,
host: process.env.redisEndpoint,
password: process.env.redisPW
});

// ioredis supports all Redis commands:
redis.set("foo", "bar");
redis.set("foo", "bar"); // returns promise which resolves to string, "OK"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm considering putting all of this within an async function so that we can async/await some of the commands. What do you think?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the late response! Yes I think that would be helpful but still we should keep some examples for callback-style. I'm going to merge this pr so feel free to create a new pr for the proposal. Thanks again for the contribution!


// the format is: redis[SOME_REDIS_COMMAND_IN_LOWERCASE](ARGUMENTS_ARE_JOINED_INTO_COMMAND_STRING)
// the js: ` redis.set("mykey", "Hello") ` is equivalent to the cli: ` redis> SET mykey "Hello" `

// ioredis supports the node.js callback style
redis.get("foo", function(err, result) {
if (err) {
console.error(err);
} else {
console.log(result);
console.log(result); // Promise resolves to "bar"
}
});
redis.del("foo");

// Or using a promise if the last argument isn't a function
// Or ioredis returns a promise if the last argument isn't a function
redis.get("foo").then(function(result) {
console.log(result);
});

redis.del("foo");

// Arguments to commands are flattened, so the following are the same:
redis.sadd("set", 1, 3, 5, 7);
redis.sadd("set", [1, 3, 5, 7]);
redis.spop("set"); // Promise resolves to "5" or another item in the set

// Most responses are strings, or arrays of strings
redis.zadd("sortedSet", 1, "one", 2, "dos", 4, "quatro", 3, "three")
redis.zrange("sortedSet", 0, 2, "WITHSCORES").then(res => console.log(res)); // Promise resolves to ["one", "1", "dos", "2", "three", "3"] as if the command was ` redis> ZRANGE sortedSet 0 2 WITHSCORES `

// Some responses have transformers to JS values
redis.hset("myhash", "field1", "Hello");
redis.hgetall("myhash").then(res => console.log(res)); // Promise resolves to Object {field1: "Hello"} rather than a string, or array of strings

// All arguments are passed directly to the redis server:
redis.set("key", 100, "EX", 10);
redis.set("key", 100, "EX", 10); // set's key to value 100 and expires it after 10 seconds

// Change the server configuration
redis.config("set", "notify-keyspace-events", "KEA");