方式一:序列化操作
-
public class SerializeUtil {
-
/*
-
* 序列化
-
* */
-
public static byte[] serizlize(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) {
-
e.printStackTrace();
-
}finally {
-
try {
-
if(baos != null){
-
baos.close();
-
}
-
if (oos != null) {
-
oos.close();
-
}
-
} catch (Exception e2) {
-
e2.printStackTrace();
-
}
-
}
-
return null;
-
}
-
/*
-
* 反序列化
-
* */
-
public static Object deserialize(byte[] bytes){
-
ByteArrayInputStream bais = null;
-
ObjectInputStream ois = null;
-
try{
-
bais = new ByteArrayInputStream(bytes);
-
ois = new ObjectInputStream(bais);
-
return ois.readObject();
-
}catch(Exception e){
-
e.printStackTrace();
-
}finally {
-
try {
-
-
} catch (Exception e2) {
-
e2.printStackTrace();
-
}
-
}
-
return null;
-
}
-
}
获取jedis实例
-
public class RedisConnection {
-
private static String HOST = "127.0.0.1";
-
private static int PORT = 6379;
-
private static int MAX_ACTIVE = 1024;
-
private static int MAX_IDLE = 200;
-
private static int MAX_WAIT = 10000;
-
-
private static JedisPool jedisPool = null;
-
-
/*
-
* 初始化redis连接池
-
* */
-
private static void initPool(){
-
try {
-
JedisPoolConfig config = new JedisPoolConfig();
-
config.setMaxTotal(MAX_ACTIVE);//最大连接数
-
config.setMaxIdle(MAX_IDLE);//最大空闲连接数
-
config.setMaxWaitMillis(MAX_WAIT);//获取可用连接的最大等待时间
-
-
jedisPool = new JedisPool(config, HOST, PORT);
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
-
}
-
-
/*
-
* 获取jedis实例
-
* */
-
public synchronized static Jedis getJedis() {
-
try {
-
if(jedisPool == null){
-
initPool();
-
}
-
Jedis jedis = jedisPool.getResource();
-
jedis.auth("redis");//密码
-
return jedis;
-
} catch (Exception e) {
-
e.printStackTrace();
-
return null;
-
}
-
}
-
}
redis操作
-
public class RedisOps {
-
public static void set(String key,String value){
-
Jedis jedis = RedisConnection.getJedis();
-
jedis.set(key, value);
-
jedis.close();
-
}
-
public static String get(String key){
-
Jedis jedis = RedisConnection.getJedis();
-
String value = jedis.get(key);
-
jedis.close();
-
return value;
-
}
-
public static void setObject(String key,Object object){
-
Jedis jedis = RedisConnection.getJedis();
-
jedis.set(key.getBytes(), SerializeUtil.serizlize(object));
-
jedis.close();
-
}
-
public static Object getObject(String key){
-
Jedis jedis = RedisConnection.getJedis();
-
byte[] bytes = jedis.get(key.getBytes());
-
jedis.close();
-
return SerializeUtil.deserialize(bytes);
-
}
-
}
实体类
-
public class User implements Serializable{
-
private static final long serialVersionUID = -3210884885630038713L;
-
private int id;
-
private String name;
-
public User(){
-
-
}
-
public User(int id,String name){
-
this.id = id;
-
this.name = name;
-
}
-
//setter和getter方法
-
}
测试用例
-
public class RedisTest {
-
-
@Test
-
public void testString(){
-
RedisOps.set("user:1", "sisu");
-
String user = RedisOps.get("user:1");
-
Assert.assertEquals("sisu", user);
-
}
-
-
@Test
-
public void testObject(){
-
RedisOps.setObject("user:2",new User(2,"lumia"));
-
User user = (User)RedisOps.getObject("user:2");
-
Assert.assertEquals("lumia", user.getName());
-
}
-
-
}
方式二:使用fastjson将对象转为json字符串后存储
-
public class RedisOps {
-
public static void setJsonString(String key,Object object){
-
Jedis jedis = RedisConnection.getJedis();
-
jedis.set(key, JSON.toJSONString(object));
-
jedis.close();
-
}
-
public static Object getJsonObject(String key,Class clazz){
-
Jedis jedis = RedisConnection.getJedis();
-
String value = jedis.get(key);
-
jedis.close();
-
return JSON.parseObject(value,clazz);
-
}
-
}
测试:
-
@Test
-
public void testObject2(){
-
RedisOps.setJsonString("user:3", new User(3,"xiaoming"));
-
User user = (User)RedisOps.getJsonObject("user:3",User.class);
-
Assert.assertEquals("xiaoming", user.getName());