1. 程式人生 > >jedis儲存物件(序列化)開發

jedis儲存物件(序列化)開發

首先引入jar包
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.8.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-pool/commons-pool -->
<dependency> <groupId>commons-pool</groupId> <artifactId>commons-pool</artifactId> <version>1.5.6</version> </dependency>
//main方法
public static void main(String[] args) {
//        Jedis jedis = RedisUtil.getJedis();
;
        //許可權認證
//        jedis.auth("admin");
List<String> list=new ArrayList<String>(); list.add("jgc"); list.add("jgc1");JedisPool.set("list", list);//key-->name中放入了value-->xinxin
         System.out.print(JedisPool.get("list"));}
public class JedisPool {
    public interface JedisAction {
        Object action(Jedis jedis);
    }

    public interface 
JedisActionVoid { void action(Jedis jedis) throws IOException; } public static Object execute(JedisAction jedisAction) { Jedis jedis = RedisUtil.getJedis(); Object o = null; try { o = jedisAction.action(jedis); } catch (Exception e) { } finally { jedis.close(); } return o; } public static void execute(JedisActionVoid jedisAction) { Jedis jedis = RedisUtil.getJedis(); try { jedisAction.action(jedis); } catch (Exception e) { } finally { jedis.close(); } } public static byte[] getStream(Object o) { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ObjectOutputStream oout = null; try { oout = new ObjectOutputStream(outputStream); oout.writeObject(o); return outputStream.toByteArray(); } catch (IOException e) { e.printStackTrace(); } finally { if (oout != null) try { oout.close(); } catch (IOException e) { e.printStackTrace(); } } return null; } public static Object getObject(byte[] bytes) throws IOException { ByteArrayInputStream bais; try { bais = new ByteArrayInputStream(bytes); ObjectInputStream ois = new ObjectInputStream(bais); return ois.readObject(); } catch (Exception e) { e.printStackTrace(); } return null; } public static Object get(final String key) { return execute(new JedisAction() { public Object action(Jedis jedis) { Object o = null; byte[] vs = jedis.get(key.getBytes()); if (null != vs) { try { o = getObject(vs); } catch (IOException e) { e.printStackTrace(); } } return o; } }); } public static void set(final String key, final Object value) { execute(new JedisActionVoid() { public void action(Jedis jedis) throws IOException { if (key == null) { return; } jedis.set(key.getBytes(), getStream(value)); } }); } public static void setExpired(final String key, final int time) { execute(new JedisActionVoid() { public void action(Jedis jedis) { jedis.expire(key, time); } }); } }
package com.netease.test.controller;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * Created by hzjiaoguangcai on 2017/6/21.
 */
public class RedisUtil {
    //Redis伺服器IP
private static String ADDR = "localhost";

    //Redis的埠號
private static int PORT = 6379;

    //訪問密碼
private static String AUTH = "ac123";

    //可用連線例項的最大數目,預設值為8//如果賦值為-1,則表示不限制;如果pool已經分配了maxActivejedis例項,則此時pool的狀態為exhausted(耗盡)private static int MAX_ACTIVE = 1024;

    //控制一個pool最多有多少個狀態為idle(空閒的)jedis例項,預設值也是8private static int MAX_IDLE = 200;

    //等待可用連線的最大時間,單位毫秒,預設值為-1,表示永不超時。如果超過等待時間,則直接丟擲JedisConnectionExceptionprivate static int MAX_WAIT = 10000;

    private static int TIMEOUT = 10000;

    //borrow一個jedis例項時,是否提前進行validate操作;如果為true,則得到的jedis例項均是可用的;
private static boolean TEST_ON_BORROW = true;

    private static JedisPool jedisPool = null;

    /**
     * 初始化Redis連線池
*/
static {
        try {
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(MAX_ACTIVE);
            config.setMaxIdle(MAX_IDLE);
            config.setTestOnBorrow(TEST_ON_BORROW);
            jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 獲取Jedis例項
* @return
*/
public synchronized static Jedis getJedis() {
        try {
            if (jedisPool != null) {
                Jedis resource = jedisPool.getResource();
                return resource;
            } else {
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 釋放jedis資源
* @param jedis
*/
public static void returnResource(final Jedis jedis) {
        jedis.close();
    }
}