尝试使用Node.js中Redis的各种方法

首先

由于有机会在node.js中使用redis,并且我认为将来会有更多的机会使用它,所以我打算总结一下。
这里列出的不仅仅是已经列出的类型,还有其他类型,但是我只总结了可能经常使用的一些。

由于这仅仅是在介绍如何在node.js中使用redis,所以如果您对redis毫无了解,我建议您先观看Dotinstall提供的redis教程,然后再阅读本文,就会更容易理解了。
链接(https://dotinstall.com/lessons/basic_redis)

基本代码

const Redis = require('ioredis');
const redis = new Redis();

const main = async () => {

  ... //ここに処理を書いていく

  redis.disconnect();
}

main();

字符串类型

在MySQL中,set相当于insert,get相当于select。

await redis.set('key', 'val');
const result = await redis.get('key');
console.log(result); //val

可以在数组中进行设置。

const arr = ['key', 'val']
await redis.set(arr);
const result = await redis.get('key');
console.log(result); ///val

设定有期限的

如果在set方法的第三个参数中指定EX,并在第四个参数中指定秒数,那么将保存给定的值指定的秒数。
以下的代码将保存2秒钟。
使用setTimeout方法编写代码,当2秒钟过去后获取结果,结果将变为null。
注意:在下面的代码中,不要写redis.disconnect();,因为这样会先断开连接。


await redis.set('key', 'val', 'EX', 2);
const result1 = await redis.get('key');
console.log(result1); //val

setTimeout(async () => {
  const result2 = await redis.get('key');
  console.log(result2); //null
}, 2000);

mset和mget

const arr = ['keys1', 'val1', 'keys2', 'val2']
await redis.mset(arr);
const result = await redis.mget('keys1', 'keys2');
console.log(result); //[ 'val1', 'val2' ] 配列で帰ってくる

散列类型

HSET和HGET

hset方法需要传入三个参数,第一个参数是键名,第二个参数是对象的键名,第三个参数是要写入的值。
hget方法会返回一个字符串类型的值。

await redis.hset('hash-key', 'key', 'value');
const result = await redis.hget('hash-key', 'key')
console.log(result); //value

hmset是用于一次设置多个哈希字段值的命令,而hmget用于一次获取多个哈希字段值的命令。

hmget的第二个参数是数组
下面的代码是通过Object.keys(hash)将hash的键放入数组中
结果以数组形式返回

const hash = {
  key1: 'value1',
  key2: 'value2',
  key3: 'value3',
}
await redis.hmset('hash-key', hash);
const result = await redis.hmget('hash-key', Object.key(hash))
console.log(result); //[ 'value1', 'value2', 'value3' ]

获取全部

接受一个键名作为参数,并返回一个对象。

const hash = {
  key1: 'value1',
  key2: 'value2',
  key3: 'value3',
}
await redis.hmset('hash-key', hash);
const result = await redis.hgetall('hash-key')
console.log(result); //{ key1: 'value1', key2: 'value2',key3: 'value3' }

列表类型

lpush、rpush和lrange

lpush(左边推送)将元素推送到列表的首位,rpush(右边推送)将元素推送到列表的最后一位。
lpush和rpush的第一个参数是键名,第二个参数及以后的参数将被推送。
lrange(列表范围)的第一个参数是键名,第二个参数和第三个参数分别表示列表的起始索引和结束索引。
当参数为0和-1时,将返回列表的所有元素。

lpush和lrange


await redis.lpush('arr-key1', 'val1', 'val2', 'val3', 'val4');
const result = await redis.lrange('arr-key1', 0, -1)
console.log(result); //[ 'val4', 'val3', 'val2', 'val1' ]

rpush是将一个或多个元素从列表的右侧添加,lrange是从列表中获取指定范围的元素。

await redis.rpush('arr-key2', 'val1', 'val2', 'val3', 'val4');
const result = await redis.lrange('arr-key2', 0, -1)
console.log(result); //[ 'val1', 'val2', 'val3', 'val4' ]

第二个参数也可以指定为数组(似乎只用这个)。

const arr = ['val1', 'val2', 'val3', 'val4']
await redis.rpush('arr-key', arr);
const result = await redis.lrange('arr-key', 0, -1)
console.log(result); //[ 'val1', 'val2', 'val3', 'val4' ]

Chinese translation:

llen可以输出指定键的list长度
类似于js中的array.length

const arr = ['val1', 'val2', 'val3', 'val4']
await redis.rpush('arr-key', arr);
const result = await redis.llen('arr-key')
console.log(result); //4

删除

del可以通过指定键名来删除。
数据类型无关紧要。

await redis.set('key', 'value');
const result1 = await redis.get('key')
console.log(result1); //value
await redis.del('key')
const result2 = await redis.get('key')
console.log(result2); //null

参考之网站

    • https://gemfury.com/azuki-trusty/deb:azk/-/content/usr/lib/azk/node_modules/hipache/node_modules/redis

 

    • https://qiita.com/fagai/items/528f43d23c41f40a6dc1

 

    • https://redis.io/

 

    http://intink.blogspot.com/2012/11/nodejs-redis.html
广告
将在 10 秒后关闭
bannerAds