首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Nodejs redis使用redis- delete -通配符前缀删除密钥集不起作用

Node.js Redis使用Redis的DEL命令删除具有通配符前缀的键集合可能不起作用的原因是,Redis不直接支持通配符删除。Redis提供的键操作命令是基于精确匹配的,而不是通配符匹配。

然而,我们可以使用一些其他的方法来实现通配符前缀删除键集合的功能。下面是一种可能的解决方案:

  1. 使用SCAN命令和游标遍历所有键,筛选出需要删除的键。
  2. 对筛选出的键使用DEL命令进行删除。

以下是一个示例代码,使用Node.js的redis模块来实现通配符前缀删除键集合的功能:

代码语言:txt
复制
const redis = require('redis');
const client = redis.createClient();

function deleteKeysWithPrefix(prefix) {
  return new Promise((resolve, reject) => {
    let cursor = '0';
    let deletedKeys = 0;

    const scanCallback = (err, reply) => {
      if (err) {
        reject(err);
        return;
      }

      const [newCursor, keys] = reply;
      cursor = newCursor;

      const deleteCallback = (err, numDeleted) => {
        if (err) {
          reject(err);
          return;
        }

        deletedKeys += numDeleted;
        if (cursor === '0') {
          resolve(deletedKeys);
        } else {
          client.scan(cursor, 'MATCH', prefix, 'COUNT', 100, scanCallback);
        }
      };

      if (keys.length > 0) {
        client.del(keys, deleteCallback);
      } else {
        deleteCallback(null, 0);
      }
    };

    client.scan(cursor, 'MATCH', prefix, 'COUNT', 100, scanCallback);
  });
}

// 使用示例
const prefix = 'mykey:*';
deleteKeysWithPrefix(prefix)
  .then((deletedKeys) => {
    console.log(`Deleted ${deletedKeys} keys`);
  })
  .catch((err) => {
    console.error('Error:', err);
  });

需要注意的是,这个方法可能会对Redis服务器造成较大的负载,因为它需要遍历所有的键。因此,在使用这个方法时,需要谨慎考虑服务器的性能和负载情况。

此外,腾讯云提供了腾讯云数据库Redis(TencentDB for Redis)服务,可以作为Redis的托管解决方案,提供高性能、高可靠性的Redis数据库服务。您可以在腾讯云官网了解更多关于腾讯云数据库Redis的详细信息和产品介绍。

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • redis常用例子

    > 4,delete 描述:删除指定的键 参数:一个键,或不确定数目的参数,每一个关键的数组:key1 key2 key3 … keyN 返回值:删除的项数 范例: <?...如果count为零,所有匹配的元素都被删除。如果count是负数,内容从尾部开始删除。 参数:key count value 返回值:成功返回删除的个数,失败false 范例: <?...php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->delete...> 23,spop 描述:随机移除并返回key中的一个值 参数:key 返回值:成功返回删除的值,失败false 范例: 26,sunion 描述: 返回一个所有指定键的并 参数: Keys: key1, key2, … , keyN 返回值:成功返回合并后的,失败false 范例: <?

    1.9K30

    Laravel Redis操作大全

    123'); // 修改位置1的元素,返回true 20,lrem 删除队列中左起指定数量的字符 $redis->lrem("foolist" , 1 , '_'); //删除队列中左起(右起使用-1)...smember('set2'); //返回array(123,ab) 33,sinter/sunion/sdiff 返回两个表中的交集/并/补 $redis->sadd('set1' , 'ab')...; $redis->sinter('set2' , 'set1');//返回array('ab'); sinterstore/sunionstore/sdiffstore 将两个表交集/并/补元素...->zcount('zset1' , 3 , 5);//返回2 $redis->zcount('zset1' , '(3' , 5 ) );//’(3‘ 表示索引的值在3-5之间但不含3,同理也可以使用..."=>array('get'=>'pre_*')));//使用通配符 * 过滤元素,表示只返回以pre开头的元素 Redis 管理操作 info显示服务当状态信息 $redis->info();

    1.1K20

    php配置redis拓展流程与redis使用

    ,写入值,如存在了不修改返回0,不存在就添加返回1$redis->setnx('key', 'value');返回已经删除key$redis->delete('key1'); 成功返回1失败返回0$redis...->delete('key1','key2'); 删除两个键成功返回1失败返回0查询生存时间$redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)同时给多个key赋值...$redis->incr('key1');$redis->incrBy('key1', 10);减法跟加法一样$redis->decr("key1"); 减少1$redis->decrBy("key1"...;输出链表最左边的ksy的值,输出后删除掉这个key$redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key$redis->lset('list',7,"update..."); 修改坐标为7的值,成功返回1合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序

    1.1K10
    领券