ZBLOG

nodejs redis 模糊删除

在 Redis 中,要进行模糊删除的话可以使用通配符来匹配需要删除的 key。

  1. 使用 keys 命令查找符合条件的 key:
redisClient.keys('prefix:*', function (err, keys) {
  if (err) return console.log(err);
  for(var i = 0, len = keys.length; i < len; i++) {
    redisClient.del(keys[i]);
  }
});

这里的 prefix:* 是要匹配的 key 的前缀,可以使用 * 通配符进行模糊匹配。这个命令会返回一个数组,包含所有符合条件的 key。

  1. 使用 scan 命令逐个遍历并删除符合条件的 key:
function deleteKeysMatchingPattern(pattern, callback) {
  var matchCount = 0;
  var cursor = '0';
  function scan() {
    redisClient.scan(cursor, 'MATCH', pattern, 'COUNT', '100', function (err, reply) {
      if (err) return callback(err);
      cursor = reply[0];
      var keys = reply[1];
      matchCount += keys.length;
      if (keys.length > 0) {
        redisClient.del(keys, function (err, res) {
          if (err) return callback(err);
          if (cursor === '0') {
            callback(null, matchCount);
          } else {
            scan();
          }
        });
      } else {
        if (cursor === '0') {
          callback(null, matchCount);
        } else {
          scan();
        }
      }
    });
  }
  scan();
}

这里的 scan 函数会使用 scan 命令逐个遍历符合条件的 key,并使用 del 命令删除它们。这种方法可以避免一次性返回大量符合条件的 key,导致内存占用过高。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=907

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?