初始化连接池配置:
<span style="font-size:14px;">public class RedisUtils {
static JedisPool pool;
//静态代码初始化池配置
static {
//加载redis配置文件
String maxActive = ReadConfig.dbproperties.getProperty("redis.pool.maxActive");
String maxIdle = ReadConfig.dbproperties.getProperty("redis.pool.maxIdle");
String maxWait = ReadConfig.dbproperties.getProperty("redis.pool.maxWait");
String testOnBorrow = ReadConfig.dbproperties.getProperty("redis.pool.testOnBorrow");
String testOnReturn = ReadConfig.dbproperties.getProperty("redis.pool.testOnReturn");
String ip = ReadConfig.dbproperties.getProperty("redis.ip");
String port = ReadConfig.dbproperties.getProperty("redis.port");
//创建jedis池配置实例
JedisPoolConfig config = new JedisPoolConfig();
//设置池配置项值
config.setMaxActive(Integer.valueOf(maxActive));
config.setMaxIdle(Integer.valueOf(maxIdle));
config.setMaxWait(Integer.valueOf(maxWait));
config.setTestOnBorrow(Boolean.getBoolean(testOnBorrow));
config.setTestOnReturn(Boolean.getBoolean(testOnReturn));
//根据配置实例化jedis池
pool = new JedisPool(config, ip, Integer.valueOf(port));
}
public static void returnResource(Jedis jedis) {
if (jedis != null) {
pool.returnResource(jedis);
}
}
}</span>
从从jedis池中获取一个jedis实例
private static Jedis jedis = RedisUtils.pool.getResource();
将对象放到List中
<span style="font-size:14px;">public static void addListTypeData() {
User user = new User();
user.setAge(25);
user.setName("buibuihuang");
user.setId(77);
SerialUser su = new SerialUser();
byte[] userInfo = su.serial(user);
jedis.lpush("UserPipeline".getBytes(),userInfo);
}</span>
在插入到List之前,需要先将对象序列化成byte[]形式,这里选用的是kyro。
kyro代码:
<span style="font-size:14px;">public class SerialUser {
private Kryo kryo;
private ObjectBuffer buff;
public SerialUser() {
kryo = new Kryo();
buff = new ObjectBuffer(kryo);
//kryo.register(Date.class);
kryo.register(User.class);
}
/*kryo序列化实现*/
public synchronized byte[] serial(User obj) {
if (obj == null) {
return null;
} else {
return buff.writeObject(obj);
}
}
/**
* kryo反序列化实现.
*/
public User unserial(byte[] by) {
if (by == null) {
return null;
} else {
return buff.readObject(by, User.class);
}
}
}</span>
将对象从List中取出来
<span style="font-size:14px;">public static void getListTypeData() {
SerialUser su = new SerialUser();
byte[] userinfor = jedis.rpop("UserPipeline".getBytes());
/*取出来的需进行反序列化才能转换为对象类型*/
User user2 = su.unserial(userinfor);
System.out.println(user2.getAge()+"."+user2.getName());
}</span>
将对象放到Hash中
<span style="font-size:14px;">public static void addHashTypeData() {
String UserObject = "UserType2";
jedis.hset(UserObject, "name", "hghan");
jedis.hset(UserObject, "age", "25");
jedis.hset(UserObject, "id", "51");
}</span>
将对象从hash中取出
<span style="font-size:14px;">public static void getHashTypeData() {
String nameStr = jedis.hget("UserType2", "name");
/*取出的是全部属性key-value,放在一个map中*/
Map<String,String> mapStr = new HashMap<String,String>();
mapStr = jedis.hgetAll("UserType2");
System.out.println(nameStr);
System.out.println(mapStr.get("name"));
}</span>