文档章节

java操作redis

金馆长1
 金馆长1
发布于 2016/06/04 15:28
字数 586
阅读 42
收藏 1

一、首先准备jar包:

		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>2.5.0</version>
		</dependency>

jedis是核心jar包。

二、redis.properties:

redis.pool.maxActive=100 //最大活动链接数
redis.pool.maxIdle=20//最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连
//接将被标记为不可用,然后被释放。设为0表示无限制。
redis.pool.maxWait=3000//最大等待时间

redis.ip=localhost //运行redis服务的ip
redis.port=6379 // redis服务的端口

三、RedisUtil.java:

	public  static  JedisPool jedisPool; // 池化管理jedis链接池

	static {

		//从redis.propertise读取相关的配置
		ResourceBundle resourceBundle = ResourceBundle.getBundle("redis");
		int maxActive = Integer.parseInt(resourceBundle.getString("redis.pool.maxActive"));
		int maxIdle = Integer.parseInt(resourceBundle.getString("redis.pool.maxIdle"));
		int maxWait = Integer.parseInt(resourceBundle.getString("redis.pool.maxWait"));

		String ip = resourceBundle.getString("redis.ip");
		int port = Integer.parseInt(resourceBundle.getString("redis.port"));

		JedisPoolConfig config = new JedisPoolConfig();  
		//设置最大连接数
		config.setMaxTotal(maxActive);
		//设置最大空闲数
		config.setMaxIdle(maxIdle);
		//设置超时时间
		config.setMaxWaitMillis(maxWait);

		//初始化连接池
		jedisPool = new JedisPool(config, ip, port); 
	}

//向缓存中设置字符串内容:

	public static boolean  set(String key,String value) throws Exception{
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			jedis.set(key, value);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}finally{
			jedisPool.returnResource(jedis);
		}
	}

//向缓存中设置字符串内容

public static boolean  set(String key,Object value){
		Jedis jedis = null;
		try {
			String objectJson = JSON.toJSONString(value);
			jedis = jedisPool.getResource();
			jedis.set(key, objectJson);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}finally{
			jedisPool.returnResource(jedis);
		}
	}

//根据key删除缓存中得对象

	public static boolean del(String key){
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			jedis.del(key);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}finally{
			jedisPool.returnResource(jedis);
		}
	}

//根据key 获取内容

	public static Object get(String key){
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			Object value = jedis.get(key);
			return value;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}finally{
			jedisPool.returnResource(jedis);
		}
	}

//根据key 获取对象

	public static <T> T get(String key,Class<T> clazz){
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			String value = jedis.get(key);
			return JSON.parseObject(value, clazz);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}finally{
			jedisPool.returnResource(jedis);
		}
	}
}

四、测试:

        //保存对象
	@Test
	public void userCache(){

		//向缓存中保存对象
		UserDO jin = new UserDO();
		jin.setUserId(1111);
		jin.setSex(1);
		jin.setUname("金金");
		jin.setUnick("jin");
		jin.setEmail("978954852@qq.com");
		//调用方法处理
		boolean reusltCache = RedisUtil.set("jin", jin);
		if (reusltCache) {
			System.out.println("向缓存中保存对象成功。");
		}else{
			System.out.println("向缓存中保存对象失败。");
		}
	}

输入图片说明

输入图片说明

        获取对象
	@Test
	public void getUserInfo(){

		UserDO jin = RedisUtil.get("jin",UserDO.class);
		if(jin != null){
			System.out.println("从缓存中获取的对象," + jin.getUname() + "@" + jin.getEmail());
		}

	}

输入图片说明

这里只写出了一个String数据类型的操作,如果需要操作hash,List,set,sortset之类的,同理 封装一下hmset,hmget,lpush,lrange,sadd之类的方法到RedisUtil中,以后涉及到redis的操作, 就直接调用RedisUtil中的方法即可。 jedis的基本操作示例

© 著作权归作者所有

金馆长1
粉丝 17
博文 43
码字总数 29363
作品 0
海淀
程序员
私信 提问

暂无文章

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
今天
5
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
8
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
12
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
16
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部