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");}
}
__EOF__