# Guide
# Introduction
All the functions of Tedis are written and implemented by typescript. Finally, native javascript code is generated, supporting javascript (commonjs) and typescript calls. The project's adoption of typescript has many benefits, not only facilitating the development and maintenance of source code, but also providing type files, enabling users to have a more friendly development experience and higher development efficiency under editor prompts.
# feature
- types: with typescript, providing both type checking and editor code hints.
- async: Use promise, async to keep you out of the hell of pullbacks and make logical writing more intuitive.
- pool: Reuse TCP connection to take advantage of redis performance and improve program robustness.
# What is Tedis
Tedis is a redis client developed for nodejs platform. Its name was inspired by the Java platform jedis and the development language was typescript. Therefore, Tedis is named as Tedis.
# Why not
node_redis
node_redis
started earlier, has withstood the test of time, functional coverage, all running stability. But much of the code is made up of older versions of javascript, and the process is preferred to be a callback function. Although can through promise
and bluebird
transformation to support asynchronous calls, but it would be relatively ugly API syntax. Because of its author, does not like typescript, also made it clear in the free program does not intend to support the typescript, community thus maintain a set of @types/redis
type file, but the node_redis
no native support for asynchronous calls, combined with its function implementation too geek, community edition of the type of the file is the original interface, combined with asynchronous code tips and altered type checking effect is not ideal.
co-redis
co-redis
in node_redis
basis through generators
features encapsulated redis client, is it in node_redis
callback call process on the basis of more clear, but the project for a long time without maintenance, relative to the async
, await
, generators
or less some, plus the lack of typescript support, code hinting aspects are not friendly.
node-redlock
node-redlock
new features support not in time, although there are unit tests, but not comprehensive, type files do not support.
# Getting Started
yarn add tedis
# OR npm install tedis --save
// commonjs
const { Tedis, TedisPool } = require("tedis");
// es
import { Tedis, TedisPool } from "tedis";
// TypeScript
import { Tedis, TedisPool } from "tedis";
Tedis
param | type | default |
---|---|---|
host? | string | 127.0.0.1 |
port? | number | 6379 |
password? | string | |
timeout? | number |
const tedis = new Tedis({
host: "127.0.0.1",
port: 6379,
password: "password"
});
TedisPool
param | type | default |
---|---|---|
host? | string | 127.0.0.1 |
port? | number | 6379 |
password? | string | |
min_conn? | number | 1 |
max_conn? | number | 10 |
timeout? | number |
const tedispool = new TedisPool({
host: "127.0.0.1",
port: 6379
});
const tedis = await tedispool.getTedis();
// do task ...
tedispool.putTedis(tedis);
# Example
// key
await client.keys("*");
await client.exists("a");
// string
await client.set("string1", "abcdefg");
await client.get("string1");
// hash
await client.hmset("hash1", {
name: "tom",
age: 23
});
await client.hgetall("hash1");
// list
await client.lpush("list1", ["a", "b", "c", "d", 1, 2, 3, 4, 5]);
await client.llen("list1");
// set
await client.sadd("set1", ["a", "b", "c", "d", 1, 2, 3, 4, 5]);
await client.scard("set1");
// zset
await client.zadd("zset1", [
[1, "a"],
[10, "a"],
[2, "adg"],
[3, "aertet"],
[4, "afg"]
]);
await client.zcard("zset1");
// base
client.close();
# Connection pooling
Initializing a client with Tedis
uses a single tcp connection, which is sufficient for a single instance when the service does not scale up in terms of concurrency. When the concurrency is large enough, a single instance of tcp connections doesn't give redis its true power, so you may need to use TedisPool
to increase the service's power
warning
When using TedisPool
, remember to call putTedis
to return the instance after it has been used to ensure that it is used properly next time.