最近因为在做的项目中需要用到Redis,于是需要一些方法来本地操作redis进行测试。
首先import需要的类:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.math.BigDecimal;
import java.util.LinkedHashMap;
import java.util.Map.Entry;
import java.util.Set;
import com.test.CountWatchTime;
import redis.clients.jedis.Jedis;
然后先初始化Jedis:
private static Jedis getJedis(){
Jedis jedis = new Jedis("redis地址", 6379);
jedis.auth("**密码**");
return jedis;
}
普通的对类的查询、修改:
public static void main(String[] args) {
Jedis jedis = getJedis();
String redisId = "testId:000001";
//获取存储对象的字节信息
byte[] bs = jedis.get(redisId.getBytes());
ByteArrayInputStream bais = null;
//将字节信息转换为字节流
bais = new ByteArrayInputStream(bs);
ObjectInputStream ois=null;
try {
ois = new ObjectInputStream(bais);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
//获取对象流中的数据
CountWatchTime o=(CountWatchTime) ois.readObject();
o.setWatchTime(2224000L);
System.out.println(o);
//新增或修改记录的方法
jedis.set(redisId.getBytes(), serialize(o));
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
需要的方法serialize:
private static byte[] serialize(Object object) {
ObjectOutputStream oos = null;
ByteArrayOutputStream baos = null;
try {
// 序列化
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);
oos.writeObject(object);
byte[] bytes = baos.toByteArray();
return bytes;
} catch (Exception e) {
}
return null;
}
删除对应的记录可使用:
jedis.del(redisId);
批量删除则可以使用匹配的方式:
·public static void main(String[] args) {
Jedis jedis = getJedis();
Set<String> keys = jedis.keys("watch*");
System.out.println(keys.size());
Long i=0L;
for (String string : keys) {
System.out.println(string);
Long del = jedis.del(string);
i+=del;
System.out.println(i);
}
System.out.println(i);
}