`
xinklabi
  • 浏览: 1561538 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

Java操作redis之一(对象保存、Pool设置、sharding)

 
阅读更多
  • 源代码下载: http://download.csdn.net/detail/jiangtao_st/7623113

    1、Maven配置

     

    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

     

    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 分片管理

     

    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、 单元测试、保存对象、写入对象

     

     

    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.}
  •  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics