node集合redis使用

本文介绍了如何在Node.js项目中遇到Redisisclosed错误后,通过回退至v3.1.2版本并详细说明了字符串、json对象、列表、Set集合和消息队列等Redis操作方法,包括存储、查询和发布订阅示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

node项目安装redis

npm install redis

原因:
最新版的可能会报 redis is closed 这个错,这是redis版本为最新版:npm install默认安装的Redis client for Node.js为V4.0.0版本,一些接口已经改变
在这里插入图片描述

解决:
1.回退到node-redis v3.1.2

npm uninstall --save redis
npm install --save redis@3.1.2

之后就可以了重新操作代码了

redis操作

字符串
存储

var redis = require('redis');

// 创建redis 客户端
var client = redis.createClient(6379, '127.0.0.1');
/**
 * 字符串
 */
 //往redis 中存值
 client.set('age','20');
 

在这里插入图片描述
查询

 client.get("age",function (err,val) {
     console.log("age:",err,val);
 })

在这里插入图片描述
json对象
存储

  //存储json字符串需要转化:JSON.stringify(string source);
 client.set('ak', JSON.stringify({name: "jacky", age: 22}))

在这里插入图片描述
查询

client.get('ak', function (err, v) {
  console.log("ak", err, v);
})

在这里插入图片描述

列表list(双向列表)
存储

//先清除数据
client.del('newLists');
client.rpush('newLists','a');
client.rpush('newLists','b');
client.rpush('newLists','c');
client.rpush('newLists','d');
client.rpush('newLists','e');
client.rpush('newLists','1');

在这里插入图片描述
查询

client.lpop('newLists',function (err,v) { //从列表左端弹出一个值,并返回被弹出的值
  console.log('client.lpop , err , v : ' , err,v);
})

client.rpop('newLists',function (err,v) { //从列表右端弹出一个值,并返回被弹出的值
  console.log('client.rpop , err, v ',err,v);
})

client.lrange('newLists',0.,-1, function (err,lists) { //获取列表在给定范围上的所有值  这里为0至-1
  console.log('client.lrange , err ,lists: ',err,lists);
})

在这里插入图片描述

Set集合

无序不可重复

存储

 client.sadd('kSet', 1);
 client.sadd('kSet', 'a');
 client.sadd('kSet', 'bb');
 client.sadd('kSet',2);

//set集合不可重复
// client.sadd('kSet', 'bb');

查询


client.smembers('kSet', function(err, v){
  console.log('client.smembers err, v:', err, v);
});

消息中介
就是redis中的发布订阅

订阅方

var client = require('./client');

client.subscribe('testPublish');

client.on('message', function(channel, msg){
  console.log('client.on message, channel:', channel, ' message:', msg);
});

发布方

const client = require('./util/redisUtil');

client.subscribe('testPublish');

client.on('message', function(channel, msg){
  console.log('client.on message, channel:', channel, ' message:', msg);

工具类
这里将客户端封装了一下

const redis = require('redis');
module.exports = redis.createClient(6379, '127.0.0.1');

先启动订阅发,然后启动发布方便可看见现象

nodeJS 相关 redis api
string 字符串

 命令                  行为                                              返回值                     使用示例(略去回调函数)
 set         设置存储在给定键中的值                      OK                         set('key', 'value')
 get         获取存储在给定键中的值                     value/null          get('key')
 del         删除存储在给定键中的值(任意类型)    1/0                        del('key')
 incrby      将键存储的值加上整数increment                                         incrby('key', increment)
 decrby      将键存储的值减去整数increment                                         decrby('key', increment)
 incrbyfloat 将键存储的值加上浮点数increment                                incrbyfloat('key', increment)   
 append      将值value追加到给定键当前存储值的末尾                           append('key', 'new-value')
 getrange    获取指定键的index范围内的所有字符组成的子串            getrange('key', 'start-index', 'end-index')
 setrange    将指定键值从指定偏移量开始的子串设为指定值           setrange('key', 'offset', 'new-string')

list 列表

命令                    行为                                              返回值                     使用示例(略去回调函数)
 rpush       将给定值推入列表的右端                     当前列表长度      rpush('key', 'value1' [,'value2']) (支持数组赋值)
 lrange      获取列表在给定范围上的所有值                array                       lrange('key', 0, -1) (返回所有值)
 lindex      获取列表在给定位置上的单个元素                                     lindex('key', 1)
 lpop        从列表左端弹出一个值,并返回被弹出的值                     lpop('key')
 rpop        从列表右端弹出一个值,并返回被弹出的值                     rpop('key')
 ltrim       将列表按指定的index范围裁减                                                ltrim('key', 'start', 'end')

set 集合

 命令                  行为                                              返回值                     使用示例(略去回调函数)     sadd            将给定元素添加到集合                      插入元素数量      sadd('key', 'value1'[, 'value2', ...]) (不支持数组赋值)(元素不允许重复)
 smembers    返回集合中包含的所有元素                array(无序)           smembers('key')
 sismenber   检查给定的元素是否存在于集合中 1/0                         sismenber('key', 'value')
 srem            如果给定的元素在集合中,则移除此元素 1/0              srem('key', 'value')
 scad            返回集合包含的元素的数量                                                sacd('key')   
 spop            随机地移除集合中的一个元素,并返回此元素                spop('key')
 smove           集合元素的迁移                                                                 smove('source-key'dest-key', 'item')
 sdiff           返回那些存在于第一个集合,但不存在于其他集合的元素(差集)   sdiff('key1', 'key2'[, 'key3', ...])   
 sdiffstore  将sdiff操作的结果存储到指定的键中                         sdiffstore('dest-key', 'key1', 'key2' [,'key3...])   
 sinter      返回那些同事存在于所有集合中的元素(交集)               sinter('key1', 'key2'[, 'key3', ...])
 sinterstore 将sinter操作的结果存储到指定的键中                        sinterstore('dest-key', 'key1', 'key2' [,'key3...])  
 sunion      返回那些至少存在于一个集合中的元素(并集)               sunion('key1', 'key2'[, 'key3', ...])
 sunionstore 将sunion操作的结果存储到指定的键中                        sunionstore('dest-key', 'key1', 'key2' [,'key3...])  

hash 散列

 命令                  行为                                              返回值                     使用示例(略去回调函数)
 hset            在散列里面关联起给定的键值对      1(新增)/0(更新) hset('hash-key', 'sub-key', 'value')    (不支持数组、字符串)
 hget            获取指定散列键的值                                                           hget('hash-key', 'sub-key')
 hgetall     获取散列包含的键值对                      json                        hgetall('hash-key')
 hdel            如果给定键存在于散列里面,则移除这个键                 hdel('hash-key', 'sub-key')
 hmset           为散列里面的一个或多个键设置值 OK                          hmset('hash-key', obj)
 hmget           从散列里面获取一个或多个键的值 array                       hmget('hash-key', array)
 hlen            返回散列包含的键值对数量                                                hlen('hash-key')
 hexists     检查给定键是否在散列中                 1/0                         hexists('hash-key', 'sub-key')
 hkeys           获取散列包含的所有键                      array                       hkeys('hash-key')
 hvals           获取散列包含的所有值                      array                       hvals('hash-key')
 hincrby     将存储的键值以指定增量增加           返回增长后的值 hincrby('hash-key', 'sub-key', increment) (注:假如当前value不为为字符串,则会无输出,程序停止在此处)
 hincrbyfloat    将存储的键值以指定浮点数增加

zset 有序集合

命令                  行为                                              返回值                     使用示例(略去回调函数)
zadd            将一个带有给定分支的成员添加到有序集合中                zadd('zset-key', score, 'key') (score为int)
zrange      根据元素在有序排列中的位置,从中取出元素
zrangebyscore   获取有序集合在给定分值范围内的所有元素
zrem            如果给定成员存在于有序集合,则移除
zcard           获取一个有序集合中的成员数量      有序集的元素个数    zcard('key')

redis其他常用命令汇总

keys命令组
 命令                  行为                                              返回值                     使用示例(略去回调函数)
 del             删除一个(或多个)keys           被删除的keys的数量      del('key1'[, 'key2', ...])
 exists      查询一个key是否存在                     1/0                     exists('key')
 expire      设置一个key的过期的秒数                  1/0                     expire('key', seconds)
 pexpire     设置一个key的过期的毫秒数                1/0                     pexpire('key', milliseconds)    
 expireat    设置一个UNIX时间戳的过期时间              1/0                     expireat('key', timestamp)
 pexpireat   设置一个UNIX时间戳的过期时间(毫秒)        1/0                    pexpireat('key', milliseconds-timestamp)
 persist     移除key的过期时间                       1/0                     persist('key')
 sort            对队列、集合、有序集合排序       排序完成的队列等  sort('key'[, pattern, limit offset count])
 
 flushdb     清空当前数据库

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值