|
- 源代码下载: http://download.csdn.net/detail/jiangtao_st/7623113
1、Maven配置
view sourceprint?
01.<dependency>
02.<groupId>redis.clients</groupId>
03.<artifactId>jedis</artifactId>
04.<version>2.5.0</version>
05.</dependency>
06.<dependency>
07.<groupId>com.alibaba</groupId>
08.<artifactId>fastjson</artifactId>
09.<version>1.1.41</version>
10.</dependency></span>
2、Properties 配置文件
redis.pool.maxActive=100
redis.pool.maxIdle=20
redis.pool.maxWait=3000
redis.ip=localhost
redis.port=6379
3、代码具体实现的Client
view sourceprint?
001./**
002.*
003.* <p>
004.* Redis客户端访问
005.* </p>
006.*
007.* @author 卓轩
008.* @创建时间:2014年7月11日
009.* @version: V1.0
010.*/
011.public class RedisClient {
012.
013.public static JedisPool jedisPool; // 池化管理jedis链接池
014.
015.static {
016.
017.//读取相关的配置
018.ResourceBundle resourceBundle = ResourceBundle.getBundle("redis");
019.int maxActive = Integer.parseInt(resourceBundle.getString("redis.pool.maxActive"));
020.int maxIdle = Integer.parseInt(resourceBundle.getString("redis.pool.maxIdle"));
021.int maxWait = Integer.parseInt(resourceBundle.getString("redis.pool.maxWait"));
022.
023.String ip = resourceBundle.getString("redis.ip");
024.int port = Integer.parseInt(resourceBundle.getString("redis.port"));
025.
026.JedisPoolConfig config = new JedisPoolConfig();
027.//设置最大连接数
028.config.setMaxTotal(maxActive);
029.//设置最大空闲数
030.config.setMaxIdle(maxIdle);
031.//设置超时时间
032.config.setMaxWaitMillis(maxWait);
033.
034.//初始化连接池
035.jedisPool = new JedisPool(config, ip, port);
036.}
037.
038./**
039.* 向缓存中设置字符串内容
040.* @param key key
041.* @param value value
042.* @return
043.* @throws Exception
044.*/
045.public static boolean set(String key,String value) throws Exception{
046.Jedis jedis = null;
047.try {
048.jedis = jedisPool.getResource();
049.jedis.set(key, value);
050.return true;
051.} catch (Exception e) {
052.e.printStackTrace();
053.return false;
054.}finally{
055.jedisPool.returnResource(jedis);
056.}
057.}
058.
059./**
060.* 向缓存中设置对象
061.* @param key
062.* @param value
063.* @return
064.*/
065.public static boolean set(String key,Object value){
066.Jedis jedis = null;
067.try {
068.String objectJson = JSON.toJSONString(value);
069.jedis = jedisPool.getResource();
070.jedis.set(key, objectJson);
071.return true;
072.} catch (Exception e) {
073.e.printStackTrace();
074.return false;
075.}finally{
076.jedisPool.returnResource(jedis);
077.}
078.}
079.
080./**
081.* 删除缓存中得对象,根据key
082.* @param key
083.* @return
084.*/
085.public static boolean del(String key){
086.Jedis jedis = null;
087.try {
088.jedis = jedisPool.getResource();
089.jedis.del(key);
090.return true;
091.} catch (Exception e) {
092.e.printStackTrace();
093.return false;
094.}finally{
095.jedisPool.returnResource(jedis);
096.}
097.}
098.
099./**
100.* 根据key 获取内容
101.* @param key
102.* @return
103.*/
104.public static Object get(String key){
105.Jedis jedis = null;
106.try {
107.jedis = jedisPool.getResource();
108.Object value = jedis.get(key);
109.return value;
110.} catch (Exception e) {
111.e.printStackTrace();
112.return false;
113.}finally{
114.jedisPool.returnResource(jedis);
115.}
116.}
117.
118.
119./**
120.* 根据key 获取对象
121.* @param key
122.* @return
123.*/
124.public static <T> T get(String key,Class<T> clazz){
125.Jedis jedis = null;
126.try {
127.jedis = jedisPool.getResource();
128.String value = jedis.get(key);
129.return JSON.parseObject(value, clazz);
130.} catch (Exception e) {
131.e.printStackTrace();
132.return null;
133.}finally{
134.jedisPool.returnResource(jedis);
135.}
136.}
137.
138.
139.}
4、Sharding 分片管理
view sourceprint?
001./**
002.*
003.* <p>
004.* Sharding Redis Client 工具类
005.* </p>
006.*
007.* @author 卓轩
008.* @创建时间:2014年7月11日
009.* @version: V1.0
010.*/
011.public class ShardingRedisClient {
012.
013.private static ShardedJedisPool shardedJedisPool;
014.
015.static {
016.// 读取相关的配置
017.ResourceBundle resourceBundle = ResourceBundle.getBundle("redis");
018.int maxActive = Integer.parseInt(resourceBundle.getString("redis.pool.maxActive"));
019.int maxIdle = Integer.parseInt(resourceBundle.getString("redis.pool.maxIdle"));
020.int maxWait = Integer.parseInt(resourceBundle.getString("redis.pool.maxWait"));
021.
022.String ip = resourceBundle.getString("redis.ip");
023.int port = Integer.parseInt(resourceBundle.getString("redis.port"));
024.
025.//设置配置
026.JedisPoolConfig config = new JedisPoolConfig();
027.config.setMaxTotal(maxActive);
028.config.setMaxIdle(maxIdle);
029.config.setMaxWaitMillis(maxWait);
030.
031.//设置分片元素信息
032.JedisShardInfo shardInfo1 = new JedisShardInfo(ip,port);
033.JedisShardInfo shardInfo2 = new JedisShardInfo(ip,port);
034.List<JedisShardInfo> list = new ArrayList<JedisShardInfo>();
035.list.add(shardInfo1);
036.list.add(shardInfo2);
037.shardedJedisPool = new ShardedJedisPool(config, list);
038.}
039.
040.
041./**
042.* 向缓存中设置字符串内容
043.* @param key key
044.* @param value value
045.* @return
046.* @throws Exception
047.*/
048.public static boolean set(String key,String value) throws Exception{
049.ShardedJedis jedis = null;
050.try {
051.jedis = shardedJedisPool.getResource();
052.jedis.set(key, value);
053.return true;
054.} catch (Exception e) {
055.e.printStackTrace();
056.return false;
057.}finally{
058.shardedJedisPool.returnResource(jedis);
059.}
060.}
061.
062./**
063.* 向缓存中设置对象
064.* @param key
065.* @param value
066.* @return
067.*/
068.public static boolean set(String key,Object value){
069.ShardedJedis jedis = null;
070.try {
071.String objectJson = JSON.toJSONString(value);
072.jedis = shardedJedisPool.getResource();
073.jedis.set(key, objectJson);
074.return true;
075.} catch (Exception e) {
076.e.printStackTrace();
077.return false;
078.}finally{
079.shardedJedisPool.returnResource(jedis);
080.}
081.}
082.
083./**
084.* 删除缓存中得对象,根据key
085.* @param key
086.* @return
087.*/
088.public static boolean del(String key){
089.ShardedJedis jedis = null;
090.try {
091.jedis = shardedJedisPool.getResource();
092.jedis.del(key);
093.return true;
094.} catch (Exception e) {
095.e.printStackTrace();
096.return false;
097.}finally{
098.shardedJedisPool.returnResource(jedis);
099.}
100.}
101.
102./**
103.* 根据key 获取内容
104.* @param key
105.* @return
106.*/
107.public static Object get(String key){
108.ShardedJedis jedis = null;
109.try {
110.jedis = shardedJedisPool.getResource();
111.Object value = jedis.get(key);
112.return value;
113.} catch (Exception e) {
114.e.printStackTrace();
115.return false;
116.}finally{
117.shardedJedisPool.returnResource(jedis);
118.}
119.}
120.
121.
122./**
123.* 根据key 获取对象
124.* @param key
125.* @return
126.*/
127.public static <T> T get(String key,Class<T> clazz){
128.ShardedJedis jedis = null;
129.try {
130.jedis = shardedJedisPool.getResource();
131.String value = jedis.get(key);
132.return JSON.parseObject(value, clazz);
133.} catch (Exception e) {
134.e.printStackTrace();
135.return null;
136.}finally{
137.shardedJedisPool.returnResource(jedis);
138.}
139.}
140.
141.}
5、 单元测试、保存对象、写入对象
view sourceprint?
01./**
02.*
03.* <p>
04.* 测试独立redis 客户端
05.* </p>
06.*
07.* @author 卓轩
08.* @创建时间:2014年7月11日
09.* @version: V1.0
10.*/
11.public class SimpleClient {
12.
13.@Test
14.public void userCache(){
15.
16.//向缓存中保存对象
17.UserDO zhuoxuan = new UserDO();
18.zhuoxuan.setUserId(113445);
19.zhuoxuan.setSex(1);
20.zhuoxuan.setUname("卓轩");
21.zhuoxuan.setUnick("zhuoxuan");
22.zhuoxuan.setEmail("zhuoxuan@mogujie.com");
23.//调用方法处理
24.boolean reusltCache = RedisClient.set("zhuoxuan", zhuoxuan);
25.if (reusltCache) {
26.System.out.println("向缓存中保存对象成功。");
27.}else{
28.System.out.println("向缓存中保存对象失败。");
29.}
30.}
31.
32.
33.@Test
34.public void getUserInfo(){
35.
36.UserDO zhuoxuan = RedisClient.get("zhuoxuan",UserDO.class);
37.if(zhuoxuan != null){
38.System.out.println("从缓存中获取的对象," + zhuoxuan.getUname() + "@" + zhuoxuan.getEmail());
39.}
40.
41.}
42.
43.
44.
45.}
-
|
|