java操作redis简单学习3

本文介绍了一个使用Java进行Redis操作的示例项目,包括如何利用Jedis客户端工厂连接Redis服务器,实现字符串及对象的存取、删除等功能。此外,还展示了如何通过FastJson将Java对象序列化为JSON字符串存储到Redis中。
package com.hanchao.testredis;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import redis.clients.jedis.Jedis;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.hanchao.entity.Person;
import com.jedismanager.config.JedisClient;
import com.jedismanager.config.JedisClientFactory;
import com.sohu.tv.so.model.pojo.Kis;

/**
 * 使用JedisClientFactory
 * @author liweihan
 * @version 1.0 (2014年12月16日 下午4:30:13)
 */
public class RedisClient3 {
	
	private static final JedisClientFactory factory = JedisClientFactory.getFactory("redis2");
	private static final int Data12 = 12;// 数据库12
	 
	/**
	   * 向缓存中设置字符串内容
	   * @param key
	   * @param value
	   * @return
	   * 
	   * 2014年12月16日 下午2:18:31
	   * liweihan
	   */
	public static boolean set(String key, String value) {
	  	JedisClient client = factory.getClient();
		try {
		  Jedis jedis = client.getSource();
		  jedis.select(3); //会存到cluster的redis第三个库中[根据权重]
		  //redis.master貌似没有多少用啊
		  jedis.set(key, value);
		  return true;
		} catch (Exception e) {
		  e.printStackTrace();
		  return false;
		}finally{
			client.returnSource();
		}
	}
	
	  /**
	   * 向redis中设置字符串【使用了fastJson】
	   * @param key
	   * @param value
	   * @return
	   * 
	   * 2014年12月16日 下午2:20:47
	   * liweihan
	   */
	  public static boolean set(String key,Object value) {
			JedisClient client = factory.getClient();
		    try {
		      String objectJson = JSON.toJSONString(value);
		      Jedis jedis = client.getSource();
		      jedis.select(Data12);
		      jedis.set(key, objectJson);
		      return true;
		    } catch (Exception e) {
		      e.printStackTrace();
		      return false;
		    }finally{
		      client.returnSource();
		    }
	  }
	  
	  /**
	   * 根据key删除缓存中的对象
	   * @param key
	   * @return
	   * 
	   * 2014年12月16日 下午2:22:32
	   * liweihan
	   */
	  public static boolean del(String key) {
		   JedisClient client = factory.getClient();
		    try {
			  Jedis jedis = client.getSource();
			  jedis.select(Data12);//需要指定那个数据库
		      jedis.del(key); 
		      return true;
		    } catch (Exception e) {
		      e.printStackTrace();
		      return false;
		    }finally{
		      client.returnSource();
		    }
	  }
	  
	  /**
	   * 根据key获取内容
	   * @param key
	   * @return
	   * 
	   * 2014年12月16日 下午2:24:10
	   * liweihan
	   */
	  public static Object get(String key) {
		   JedisClient client = factory.getClient();
		    try {
		      Jedis jedis = client.getSource();
		      jedis.select(Data12);
		      Object value = jedis.get(key);
		      return value;
		    } catch (Exception e) {
		      e.printStackTrace();
		      return false;
		    }finally{
		    	client.returnSource();
		    }
	  }
	  
	  /**
	   * 根据key获取对象
	   * @param key
	   * @param clazz
	   * @return
	   * 
	   * 2014年12月16日 下午2:27:15
	   * liweihan
	   */
	  public static <T> T get(String key ,Class<T> clazz) {
		  JedisClient client = factory.getClient();
		    try {
		    	Jedis jedis = client.getSource();
			      jedis.select(Data12);
		      String value = jedis.get(key);
		      return JSON.parseObject(value, clazz);
		    } catch (Exception e) {
		      e.printStackTrace();
		      return null;
		    }finally{
		    	client.returnSource();
		    }
	  }
	
	public static void main(String[] args) {
		//1.存入字符串
/*		for (int i = 0; i < 20; i++) {
			System.out.println("存入字符串" + set("hanchao"+i, "redis"+i));
		}*/
		
		//1.向redis中保存对象
		System.out.println(" ----------- 从redis中存入对象 --------------");
		Person p1 = new Person();
		p1.setId(1);
		p1.setName("hanchao");
		
		boolean result = set("p1", p1);
		if (result) {
			System.out.println("保存成功");
		} else {
			System.out.println("保存失败");
		}
		
		//2.删除对象
		//System.out.println(del("p1"));
		
		//1.1从redis取对象
		System.out.println(" ----------- 从redis中获取对象 --------------");
		Person person1 = get("p1", Person.class);
		System.out.println("获取的对象:" + person1.getId() + "," + person1.getName());
		
		//2.向redis存入集合
		System.out.println(" ----------- 从redis中存入集合 --------------");
		List<Person> list = new ArrayList<Person>();
		Person p2 = new Person();
		p2.setId(2);
		p2.setName("hanchao2");
		
		list.add(p1);
		list.add(p2);
		
		boolean result2 = set("list", list);
		if (result2) {
			System.out.println("存入list成功!");
		} else {
			System.out.println("存入list失败!");
		}
		
		//2.向redis取集合
		System.out.println(" ----------- 从redis中取集合 --------------");
		//http://hanchaohan.blog.51cto.com/2996417/1584759
		String listStr = (String) get("list");
		System.out.println("list:" + listStr);
		//list:[{"id":1,"name":"hanchao"},{"id":2,"name":"hanchao2"}]
		List<Person> list2 = JSON.parseArray(listStr, Person.class);
		for (Person p : list2) {
			System.out.println("ID:" + p.getId());
			System.out.println("NAME:" + p.getName());
		}
		
		System.out.println("-- 可以判断是linux机器还是windows机器:" + File.separator);
		
	}
}

配置文件:

redis.pool.maxActive=1024
redis.pool.maxIdle=1000
redis.pool.maxWait=1000
redis.pool.testOnBorrow=true
redis.pool.testOnReturn=true
redis.clusters=10.10.52.141:6379:3,10.10.78.208:6379:3
redis.connection.max.tried=10
#redis.master=10.10.78.208:6379:1


转载于:https://my.oschina.net/hanchao/blog/357261

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值