在数据库内我们可以通过like
关键字、%
、*
或者REGEX
关键字进行模糊匹配。而在Redis内我们如何进行模糊匹配呢?集群情况Redis Cluster
的情况是否和单机一致呢?前段时间我对于这个议题进行了调查和研究。
单节点的情况
- Jedis
参考stackoverflow上的解答
,在Java内使用Jedis
主要有如下2中写法:
### 方法1
Set<String> keys = jedis.keys(pattern);
for (String key : keys) {
jedis.del(key);
}
### 方法2
Jedis jedis = new Jedis("127.0.0.1");
ScanParams scanParams = new ScanParams();
scanParams.match("prifix*");
scanParams.count(1000);
ScanResult<String> result = jedis.scan(0,scanParams);
result.getResult().forEach(key -> {
jedis.del(key);
});
### 注意scan方法由于某些bug在2.9版本内scan(int,ScanParams)改为了scan(String,ScanParams)。由于cursor的位数,方法有些调整。
- 方法1,通过
keys
命令先寻找到所有符合的key,然后把它们删除; - 方法2