redis的基本操作

1.配置文件 (redis.properties)

#redis的基本设置
redis.host=192.168.246.128
redis.post=6379
redis.timeout = 0
redis.maxIdle=300

2.整合redis

package com.zy.redis;


import java.util.ArrayList;
import java.util.List;


import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.annotation.Scope;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;


import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedisPool;


@Configuration
@ComponentScan("com.zy.redis")
@PropertySource("classpath:/redis.properties")
public class ConfigApp {

@Value("${redis.host}")
private   String host;
@Value("${redis.maxIdle}")
private  int maxIdle;
@Value("${redis.post}")
private   int post;
@Value("${redis.timeout}")
private int timeout;

@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfigure(){
return new PropertySourcesPlaceholderConfigurer();
}

//JedisPoolConfig的配置
@Bean
public  JedisPoolConfig jedisPoolConfig(){
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(maxIdle);
jedisPoolConfig.setTestOnBorrow(true);
jedisPoolConfig.setTestOnReturn(true);
jedisPoolConfig.setMaxWaitMillis(1000);
return jedisPoolConfig;
}

@Bean 
public List<JedisShardInfo> jedisShardInfo(){
List<JedisShardInfo> jedisShardInfos = new ArrayList<JedisShardInfo>();
JedisShardInfo jedisShardInfo = new JedisShardInfo(
host,post,timeout );
jedisShardInfos.add(jedisShardInfo);
return jedisShardInfos;
}
//redis连接池的设置
@Bean
@Scope("singleton")
public  ShardedJedisPool shardedJedisPool(){
ShardedJedisPool shardedJedisPool = new ShardedJedisPool(jedisPoolConfig(),jedisShardInfo());
return shardedJedisPool;
}

}

3.redis 公共方法的封装

package com.zy.redis;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;


@Service
public class RedisServiceImpl  {
private static final Logger log = LoggerFactory.getLogger(RedisServiceImpl.class);

@Autowired
private ShardedJedisPool shardedJedisPool;
/**
* 获取ShardedJedis实例
* @return
*/
public ShardedJedis  getRedisClient(){
try {
ShardedJedis  shardJedis  = shardedJedisPool.getResource();
return shardJedis;
} catch (Exception e) {
log.error("getRedisClent error", e);
}
return null;
}

public void returnResource(ShardedJedis shardedJedis) {
        shardedJedisPool.returnResource(shardedJedis);
    }


    public void returnResource(ShardedJedis shardedJedis, boolean broken) {
        if (broken) {
            shardedJedisPool.returnBrokenResource(shardedJedis);
        } else {
            shardedJedisPool.returnResource(shardedJedis);
        }
    }


}

4.使用ShardedJedis封装相应的方法

package com.zy.redis;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


import redis.clients.jedis.ShardedJedis;
@Service
public class RedisClient {
private static final Logger log = LoggerFactory.getLogger(RedisClient.class);  
@Autowired  
    private RedisServiceImpl redisService;
public void disconnect() {  
         ShardedJedis shardedJedis = redisService.getRedisClient();  
         shardedJedis.disconnect();  
     } 
 
  /** 
      * 设置值 
      */  
     public String set(String key, String value) {  
         String result = null;  
   
         ShardedJedis shardedJedis = redisService.getRedisClient();  
         if (shardedJedis == null) {  
             return result;  
         }  
         boolean flag = false;  
         try {  
             result = shardedJedis.set(key, value);  
         } catch (Exception e) {  
             log.error(e.getMessage(), e);  
             flag = true;  
         } finally {  
             redisService.returnResource(shardedJedis, flag);  
         }  
         return result;  
     }  
     
     /**
      * 获取值
      */
     public String get(String key){
    String result = "";
    ShardedJedis shardedJedis = redisService.getRedisClient();
    if(shardedJedis==null){
    return null; 
    }
    Boolean flag = Boolean.FALSE;
     
    try {
result =  shardedJedis.get(key);
} catch (Exception e) {
log.error(e.getMessage(), e);  
            flag = true; 
}finally {  
            redisService.returnResource(shardedJedis, flag);  
        }  
return result;
     }
     /**
      * 设置在某段时间内失效  time表示为多少秒
      */
     public void exprire(String key,int time){
    ShardedJedis shardedJedis = redisService.getRedisClient();
    if(shardedJedis!=null){
    Boolean flag = Boolean.FALSE;
    try {
shardedJedis.expire(key, time);
} catch (Exception e) {
e.printStackTrace();
flag=Boolean.TRUE;
}finally{
redisService.returnResource(shardedJedis, flag); 
}
    }
     }
     
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值