Redis 简单用法例子

0.为梦想加油,奔跑吧!
1.安装Redis
2.在项目中引入依赖包


	redis.clients
	jedis
	2.9.0

3.写工具类,序列化与反序列化,序列化是为了把查询到的数据通过序列化为字符串,放入到Redis中。使用对象的时候取出Redis中的数据,通过反序列化为对象使用!
4.序列化与反序列化工具

package com.stylefeng.guns.core.util;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

/**
 * 序列化工具类
* Created by Administrator on 2019/2/26/026.
 */
public class SerializeUtil {
    /**
  * 序列化
	 *
  * @param object
	 * @return
     */
    public 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;
    }

    /**
     * 反序列化
     *
     * @param bytes
     * @return
     */
    public static Object unserialize(byte[] bytes) {
        ByteArrayInputStream bais = null;
        try {
            // 反序列化
            bais = new ByteArrayInputStream(bytes);
            ObjectInputStream ois = new ObjectInputStream(bais);
            return ois.readObject();
        } catch (Exception e) {
        }
        return null;
    }
}

5.连接与获取get等工具

 package com.stylefeng.guns.core.util;

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



/**
 * 缓存连接池工具
 * Created by Administrator on 2019/2/26/026.
 */
		public class JedisPoolUtil {
	   	 private static JedisPool jedisPool;
	
	    static {
	        JedisPoolConfig config = new JedisPoolConfig();
	        config.setMaxTotal(1024);
	        config.setMaxIdle(200);
	        config.setMaxWaitMillis(1000);
	        config.setTestOnBorrow(true);  // 192.168.30.227
	        config.setTestOnReturn(true);
	        jedisPool = new JedisPool(config,"127.0.0.1",6379, 60000);
	    }
	
	
	    /**
	     * 获取Jedis
	     * @return
	     */
	
	    public static Jedis getJedis() {
	        return (Jedis) jedisPool.getResource();
	    }
	
	
	    /**
	     * 关闭jedis
	     * @param jedis
	     */
	
	    public static void close(Jedis jedis) {
	        if(jedis!=null) {
	            jedis.close();
	        }
	    }
		}

6.使用方法 List

@Override
public List queryListBySdkVersionAndActive(String sdkVersionName,Integer active) {
	String key = "HZZT_WXAPP_API_GETFLOADAD_TASK"+sdkVersionName;
	Jedis jedis = JedisPoolUtil.getJedis();
	@SuppressWarnings("unchecked")
	List tWxAppFloatTaskList = (List)SerializeUtil.unserialize(jedis.get(key.getBytes()));
if(tWxAppFloatTaskList==null) {
		tWxAppFloatTaskList = tWxAppFloatTaskDao.queryListBySdkVersionAndActive(sdkVersionName, active);
		jedis.set(key.getBytes(), SerializeUtil.serialize(tWxAppFloatTaskList));
	}
	JedisPoolUtil.close(jedis);
	return tWxAppFloatTaskList;	

7.使用方法 对象

@Override
public TMemberWxApp queryById(Integer id) {
	String key = "HZZT_WXAPP_API_GETFLOADAD_MEDIA"+id;
	Jedis jedis = JedisPoolUtil.getJedis();
	TMemberWxApp tMemberWxApp = (TMemberWxApp)SerializeUtil.unserialize(jedis.get(key.getBytes()));
	if(tMemberWxApp==null) {
		tMemberWxApp = tMemberWxAppDao.queryById(id);
		jedis.set(key.getBytes(), SerializeUtil.serialize(tMemberWxApp));
	}
	JedisPoolUtil.close(jedis);
	return tMemberWxApp;
}

8.清除缓存

private void clearReis() {
	Jedis jedis = JedisPoolUtil.getJedis();
	Set keys = jedis.keys("HZZT_WXAPP_API_GETFLOADAD_TASK*");
	Iterator iterator = keys.iterator();
	while (iterator.hasNext()) {
		String key = (String) iterator.next();
		jedis.del(new String[] { key });
	}
	JedisPoolUtil.close(jedis);
}

一个简单的Main

public static void main(String[] args){
    String key  = "KKKK";
    Jedis jedis = JedisPoolUtil.getJedis();
    //set是插入数据
    jedis.set(key.getBytes(), SerializeUtil.serialize("你好"));
    //get是查询Redis里面是否存在数据
    String s = (String)SerializeUtil.unserialize(jedis.get(key.getBytes()));
    //判断是否存在数据
    if(s == null){
        //如果不存在数据,则往数据库查询
        System.out.println("我为空");
    }else{
        //如果存在,你返回这个Redis中的数据就好了,这个else是为了证实是否有数据,实战中不会这样使用!
        System.out.println("我有数据");
    }
    System.out.println("保存成功");
    JedisPoolUtil.close(jedis);
}

你可能感兴趣的:(Redis)