Java使用redis实现缓存的一个小demo案例

1、要想在Java中连接Redis,并进行操作,由两种方式,一种是spring data redis,它是由spring集成的,不支持集群,一种是官方推荐的jedis,支持集群,其他功能差不多一样,这里我们介绍jedis操作实例,首先下载好jedis-2.7.3.jar包如下图:

在这里插入图片描述

2、创建redis.properties配置文件:

redis.host=127.0.0.1
redis.port=6379
redis.password=
redis.timeout=100000
redis.maxIdle=100
redis.maxActive=300
redis.maxWait=1000
redis.testOnBorrow=true

Java使用redis实现缓存的一个小demo案例_第1张图片

3、创建Redis工具类:

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import redis.clients.jedis.Jedis;

/**
 * 操作redis缓存的工具类,简单的demo,方便入门初步理解redis
 * 
 * @author Xuan
 * 
 */
public final class RedisUtil {
	public RedisUtil() {
	}

	// 以下配置可用可不用
	private static Jedis jedisxuan;// redis实例
	private static String host;// 地址
	private static String port;// 端口
	private static String password;// 授权密码
	private static String timeout;// 超时时间:单位ms
	private static String maxIdle;// 最大空闲数:空闲链接数大于maxIdle时,将进行回收
	private static String maxActive;// 最大连接数:能够同时建立的"最大链接个数"
	private static String maxWait;// 最大等待时间:单位ms
	private static String testOnBorrow;// 在获取连接时,是否验证有效性

	// 静态代码块
	static {
		// 加载properties配置文件
		Properties properties = new Properties();
		InputStream is = RedisUtil.class.getClassLoader().getResourceAsStream(
				"redis.properties");
		try {
			properties.load(is);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		host = properties.getProperty("redis.host");
		port = properties.getProperty("redis.port");
		password = properties.getProperty("redis.password");
		timeout = properties.getProperty("redis.timeout");
		maxIdle = properties.getProperty("redis.maxIdle");
		maxActive = properties.getProperty("redis.maxActive");
		maxWait = properties.getProperty("redis.maxWait");
		testOnBorrow = properties.getProperty("redis.testOnBorrow");
		// 得到Jedis实例并且设置配置
		jedisxuan = new Jedis(host, Integer.parseInt(port),
				Integer.parseInt(timeout));
	}

	/**
	 * 写入缓存
	 * 
	 * @param key
	 * @param value
	 * @return
	 */
	public static boolean set(final String key, String value) {
		boolean result = false;
		try {
			jedisxuan.set(key, value);
			result = true;
		} catch (Exception e) {
			System.out.println("set cache error");
		}
		return result;
	}

	/**
	 * 读取缓存
	 * 
	 * @param key
	 * @return
	 */
	public static Object get(final String key) {
		Object result = null;
		result = jedisxuan.get(key);
		return result;
	}

	/**
	 * 删除key对应的value
	 * 
	 * @param key
	 */
	public static void remove(final String key) {
		if (key != null && key.length() >= 1 && !key.equals("")
				&& jedisxuan.exists(key)) {
			jedisxuan.del(key);
		}
	}

	/**
	 * 判断缓存中是否有key对应的value
	 * 
	 * @param key
	 * @return
	 */
	public static boolean exists(final String key) {
		return jedisxuan.exists(key);
	}

	/**
	 * 写入缓存(规定缓存时间)
	 * 
	 * @param key
	 * @param value
	 * @param expireSecond
	 * @return
	 */
	public static boolean set(final String key, String value, Long expireSecond) {
		boolean result = false;
		try {
			// NX代表不存在才set,EX代表秒,NX代表毫秒
			jedisxuan.set(key, value, "NX", "EX", expireSecond);
			result = true;
		} catch (Exception e) {
			System.out.println("set cache error");
		}
		return result;
	}
}

4、测试类:

/**
 * 测试类
 * @author Xuan
 *
 */
public class test {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
			
		// 写入一个缓存
		boolean flag = RedisUtil.set("x", "轩");
		if (flag) {
			// 读取缓存
			System.out.println("成功写入缓存");
			System.out.println("正在读取缓存......");
			String xuan = String.valueOf(RedisUtil.get("x"));
			System.out.println("你读取的缓存为:" + xuan);
		} else {
			System.out.println("写入缓存失败");
		}
		
		//写入一个带时间的缓存 30秒消失
		//可以自己去验证是否正确
		boolean flag1 = RedisUtil.set("xuan", "关注我博客~",Long.parseLong("30"));
		if (flag){
			System.out.println("写入成功");
		}
	}

}

5、遇到困难可以评论(有信必回)小轩微信17382121839。

你可能感兴趣的:(java)