Spring Boot环境里批量删除匹配的key

发布时间 2024-01-03 10:06:33作者: 夏威夷8080

在Spring Boot环境中使用org.springframework.data.redis.core.RedisTemplate删除匹配的key可以按照以下步骤实现。首先,您需要创建一个方法,该方法接受一个字符串参数,然后通过RedisTemplate查询所有匹配的key,并删除它们。

下面是一个简单的示例代码:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ScanOptions;
import org.springframework.stereotype.Service;
import java.util.Set;

@Service
public class RedisService {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    public void deleteKeysByPattern(String pattern) {
        Set<String> keysToDelete = redisTemplate.keys("*" + pattern + "*");

        if (keysToDelete != null && !keysToDelete.isEmpty()) {
            redisTemplate.delete(keysToDelete);
            System.out.println("Deleted keys: " + keysToDelete);
        } else {
            System.out.println("No keys found matching the pattern: " + pattern);
        }
    }

    public Set<String> scanKeysByPattern(String pattern) {
        return redisTemplate.keys("*" + pattern + "*");
    }
}

在上述代码中,deleteKeysByPattern 方法接受一个字符串参数 pattern,使用 redisTemplate.keys 方法获取所有匹配的key,然后通过 redisTemplate.delete 方法删除这些key。如果没有匹配的key,则输出相应的消息。

请注意,使用通配符 * 来匹配包含指定字符串的key。如果您的字符串是一个确切的key而不是一部分,可以省略通配符。