缓存 redis 详解

缓存 redis 的使用
一,API
参考地址

二,使用的类:
JedisPoolConfig, JedisPool, Jedis
配置连接池的代码如下:

package redistest;

import org.apache.log4j.Logger;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * Created by Administrator on 2016/8/2.
 */
public final class JedisUtil {

    private static Logger log = Logger.getLogger(JedisUtil.class);

    private static String IP = "localhost"; //ip地址

    private static int PORT = 6379; //端口

    private static int MAX_TOTAL = 10; //实现连接的最大数目

    private static int MAX_IDLE = 5; //连接池最大允许的空闲数

    private static int MAX_WAIT = 1000; //最大等待时间

    private static int TIME_OUT = 1000; //超时时间

    private static JedisPool jedisPool = null;

    /*初始化Redis 连接池*/
    static{
        JedisPoolConfig jpc = new JedisPoolConfig();
        jpc.setMaxTotal(MAX_TOTAL);
        jpc.setMaxIdle(MAX_IDLE);
        jpc.setMaxWaitMillis(MAX_WAIT);

        jedisPool = new JedisPool(jpc, IP, PORT, TIME_OUT, null);
    }

    /*获取jedis 资源*/
    public synchronized  static Jedis getJedis(){
        if(jedisPool != null){
            return jedisPool.getResource();
        } else{
            log.info("连接池为空!!");
            return null;
        }
    }

    /*释放jedis 资源*/
    public static void returnResource(Jedis jedis){
        if(jedis!= null){
            jedisPool.returnResource(jedis);
        }
    }

}

测试代码:

package redistest;

import redis.clients.jedis.Jedis;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by Administrator on 2016/8/2.
 */
public class Test {
    private static Jedis jedis = null;

    public static void main(String[] args) {
        jedis = JedisUtil.getJedis();
        JedisUtil.returnResource(jedis);
        listTest();
    }

    /*list 操作*/
    public static void listTest() {
        jedis.lpush("list", "11");
        jedis.lpush("list", "22");
        jedis.lpush("list", "33");

        List<String> list = jedis.lrange("list", 0, 3);
        System.out.println("删除前集合:");
        for (String s : list) {
            System.out.print(s);
        }

        jedis.del("list");
        List<String> list2 = jedis.lrange("list", 0, 3);
        System.out.println("删除后集合:");
        for (String s : list2) {
            System.out.print(s);
        }
    }

    /*字符串操作*/
    public static void stringTest() {
        jedis.mset("str", "str", "i", "i"); //设置多个键值对
        System.out.println("删除前, str:" + jedis.get("str") + ", i: " + jedis.get("i"));
        ;
        jedis.del("str"); //删除键
        System.out.println("删除后, str:" + jedis.get("str") + ", i: " + jedis.get("i"));
        ;
    }

    /*map 操作*/
    public static void mapTest() {
        Map<String, String> map = new HashMap<String, String>();
        map.put("1", "11");
        map.put("2", "22");

        jedis.hmset("user", map);
        List<String> list = jedis.hmget("user", "1", "2");
        System.out.println("删除前的值:");
        for (String s : list) {
            System.out.print(s + ", ");
        }

        map.put("1", "111");
        map.put("2", "222");

        jedis.hmset("user", map);
        List<String> list2 = jedis.hmget("user", "1", "2");
        System.out.println("删除前的,修改后的值:");
        for (String s : list2) {
            System.out.print(s + ", ");
        }

        jedis.hdel("user", "1");
        List<String> list3 = jedis.hmget("user", "1", "2");
        System.out.println("删除后的,修改后的值:");
        for (String s : list3) {
            System.out.print(s + ", ");
        }
    }

}

三,redis 存储对象的方法(序列化)
被存储的对象必须实现 Serializable 接口;
序列化和反序列化的代码如下:

package redistest;

import java.io.*;

/**
 * Created by Administrator on 2016/8/2.
 */
public class SerializeUtil {

    /*序列化对象*/
    public static byte[] serialize(Object object){
        try {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(bos);
            oos.writeObject(object); //序列化

            byte[] bytes = bos.toByteArray(); //转换对象为字节数组
            return bytes;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    /*反序列化*/
    public static Object unSerialize(byte[] bytes){
        try {
            ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
            ObjectInputStream ois = new ObjectInputStream(bis);
            Object obj = ois.readObject(); //反序列化

            return obj;
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e1){
            e1.printStackTrace();
        }

        return null;
    }

}

存储到缓存的方法:

jedis.set(byte[], byte[]);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值