java操作redis之按照关键字删除缓存数据

思路:

1、链接redis数据库,连接成功
2、js.del(key),按照指定的key进行删除,封装删除方法
3、js.keys("*"),获取所有键keys的集合,对set集合进行遍历
4、对遍历结果进行判断,包含关键字的,即想删除的,都调用封装好的删除方法即可

示例代码

复制代码
import org.apache.log4j.Logger;
import org.testng.annotations.Test;
import redis.clients.jedis.Jedis;
import java.util.Iterator;
import java.util.Set;

/**
 * @author rong.rong
 * redis操作类
 */
public class RedisDBHelper {


    static Jedis js = null;
    public static Logger logger = Logger.getLogger(RedisDBHelper.class);
    private static String hostUrl = BaseInfo.getInfo("hostUrl");
    private static int hostPort = Integer.parseInt(BaseInfo.getInfo("hostPort"));
    private static String authPassWord = BaseInfo.getInfo("authPassWord");

    /**
     * 链接redis数据库,进行初始化
     *
     * @return:返回是否初始化链接成功
     */
    public static boolean init() {
        if (js == null) {
            js = new Jedis(hostUrl, hostPort);
            js.auth(authPassWord);
        }
        if (js != null) {
            logger.info("初始化成功");
            return true;
        } else {
            return false;
        }
    }


    /**
     * 删除数据
     *
     * @param key:要删除数据的key
     * @return:返回boolean值,表示是否删除成功
     */
    public static boolean delete(String key) {
        if (js.exists(key)) {
            if (js.del(key) == 1) {
                logger.info("删除数据成功");
                return true;
            } else {
                logger.info("删除数据失败");
                return false;
            }
        } else {
            logger.info(key + "不存在");
            return false;
        }
    }


    /**
     * 按照关键字删除redis缓存数据
     */
    public static void deleteData(String keys) {
        //链接redis数据库,进行初始化
        init();
        Set<String> set = js.keys("*");
        if (set.size() != 0) {
            Iterator<String> it = set.iterator();
            while (it.hasNext()) {
                String key = it.next();
                if (key.contains(keys)) {
                    logger.info(key);
                    delete(key);
                }
            }
        } else {
            logger.info("数据库暂时没有数据");
        }
        //关闭链接
        unInit();
    }


    /**
     * 关闭链接
     */
    public static void unInit() {
        if (js != null) {
            js.close();
            js = null;
        }
    }

    @Test
    public void test() {
        deleteData("key");
    }
}
复制代码

 

posted @   久曲健  阅读(16645)  评论(2编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示