redis 使用方式

一、从redis 获取数据

        

if(redisFactory.isEnable()){
            //按key做查找
            String redisKey1 = RedisUtils.JAVA + RedisUtils.LIST + RedisUtils.JI_CHU_SHU_JU + "AUTO;MODELPAGE;" + "BASEDATA;" + modelId ;
            redisKey1 = StringUtils.upperCase(redisKey1);
            if(redisFactory.getRedisOperator().exists(redisKey1)){
                String redisResult = redisFactory.getRedisOperator().get(redisKey1);
                Gson gson = new GsonBuilder().create();
                OverviewCarModelForm spb  = gson.fromJson(redisResult,OverviewCarModelForm.class);
                return spb;
            }
        }

verviewCarModelForm.class 是存储是所用的组装Formbean 类。


二、业务

查出页面要展示的所有数据,组装成Formbean 例如webForm 存入redis。

例子

//图片数量
		long picCount=getCarPhotoSeriesService().getSeriesPicCountForBrand(carSeriesMongo.getId());
		webForm.setPicCount(picCount);


三、存储数据

if(redisFactory.isEnable()){
            Gson gson = new GsonBuilder().create();  
            String redisKey1 = RedisUtils.JAVA + RedisUtils.LIST + RedisUtils.JI_CHU_SHU_JU + "AUTO;MODELPAGE;" + "BASEDATA;" + modelId ;
            redisKey1 = StringUtils.upperCase(redisKey1);
            redisFactory.getRedisOperator().setex(redisKey1, RedisUtils.TIME_3, gson.toJson(webForm));
        }


       

四,调用方法1

public class RedisFactory {

	private ShardedJedisPool shardedJedisPool;
	
	private JedisPool jedisPool;
	
	private ShardedRedisOperator shardedRedisOperator;
	
	private RedisOperator redisOperator;
	
	private boolean enable = true;

	public ShardedJedisPool getShardedJedisPool() {
		return shardedJedisPool;
	}

	public void setShardedJedisPool(ShardedJedisPool shardedJedisPool) {
		this.shardedJedisPool = shardedJedisPool;
	}

	public JedisPool getJedisPool() {
		return jedisPool;
	}

	public void setJedisPool(JedisPool jedisPool) {
		this.jedisPool = jedisPool;
	}

	public ShardedRedisOperator getShardedRedisOperator() {
		if(shardedRedisOperator == null) {
			shardedRedisOperator = new ShardedRedisOperator(shardedJedisPool);
		}
		return shardedRedisOperator;
	}

	public void setShardedRedisOperator(ShardedRedisOperator shardedRedisOperator) {
		this.shardedRedisOperator = shardedRedisOperator;
	}

	public RedisOperator getRedisOperator() {
		if(redisOperator == null) {
			redisOperator = new RedisOperator(jedisPool);
		}
		return redisOperator;
	}

	public void setRedisOperator(RedisOperator redisOperator) {
		this.redisOperator = redisOperator;
	}

	public boolean isEnable() {
		return enable;
	}

	public void setEnable(boolean enable) {
		this.enable = enable;
	}

}

五,调用方法2

public class RedisUtils {
	/**
	 * redis的key值组成结构:
	 * 示例:J;H;A;CAR_BRNAD;BRANDID_2,BRANDNAME_5B%54%
	 * J表示语言分类,J为java,N为.net
	 * H表示数据类型,S-string,H-hash,L-list,SET-set,Z-zset(sorted set).
	 * A表示redis存取类别,A为以数据库内容存取;B为树,排行榜,热门列表;C为业务页面内容存取
	 * CAR_BRAND,表名,当上级目录为A(即为以数据库内容存取)时,此处为表名,当上级目录为C时,此处为URL
	 * BRANDID_2 参数
	 */
	
	/**
	 * 语言分类
	 */
	public static final String JAVA = "J;";
	public static final String NET = "N;";
	public static final String PHP = "P;";
	
	/**
	 * 数据类型
	 */
	public static final String STRING = "S;";
	public static final String HASH = "H;";
	public static final String LIST = "L;";
	public static final String SET = "SET;";
	public static final String ZSET = "Z;";
	
	/**
	 *存取类别
	 */
	public static final String JI_CHU_SHU_JU = "A;";
	public static final String JI_HE = "B;";
	public static final String YE_MIAN_TE_YOU = "C;";
	public static final String TONG_JI = "D;";
	public static final String QI_TA = "E;";
	
	//过期时间
	public static final int TIME_1 = 5 * 60;
	public static final int TIME_2 = 10 * 60;
	public static final int TIME_3 = 30 * 60;
	public static final int TIME_4 = 2 * 60 * 60;
	public static final int TIME_5 = 5 * 60 * 60;
	public static final int TIME_6 = 24 * 60 * 60;
	public static final int TIME_SECONDS_1 = 10;
	public static final int TIME_SECONDS_2 = 60;
	
	public static final String shujuku = "A;";
	public static final String paihanghang = "B;";
	public static final String yewu = "C;";
	
	
}

六,redis_config

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<context:property-placeholder location="classpath:jdbc.properties" />
	<!-- POOL配置 -->    
	<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">        
	    <property name="maxActive" value="${redis.pool.maxActive}" />  
	    <property name="maxIdle" value="${redis.pool.maxIdle}" />  
	    <property name="maxWait" value="${redis.pool.maxWait}" />  
	    <property name="testOnBorrow" value="${redis.pool.testOnBorrow}" />    
	</bean>    
	<!-- jedis shard pool配置 -->    
	<bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool">        
		<constructor-arg index="0" ref="jedisPoolConfig" />        
		<constructor-arg index="1"> 
			<list>    
				<bean class="redis.clients.jedis.JedisShardInfo">              
					<constructor-arg index="0" value="${redis.ip}" />  
					<constructor-arg index="1" value="${redis.port}" type="int" /> 
				</bean>             
			</list>        
		</constructor-arg>  
		
	</bean>
	<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
		<constructor-arg index="0" ref="jedisPoolConfig"/>
		<constructor-arg index="1" value="${redis.ip}"/>
		<constructor-arg index="2" value="${redis.port}"/>
	</bean>

	<bean id="redisFactory" class="com.chexun.redis.RedisFactory">
		<property name="shardedJedisPool" ref="shardedJedisPool" />
		<property name="jedisPool" ref="jedisPool" />
	</bean>

</beans>

七,jdbc.properties

#mongo properties
#mongodb.host=IP
#mongodb.port=27017
#mongodb.apname=productlib
#mongodb.username=dbtest
#mongodb.password=mongo_test#
  
mongodb.host=Ip
mongodb.port=27017
mongodb.apname=productlib
mongodb.username=dbtest
mongodb.password=mongo_test#

mongodb_read.host=IP
mongodb_read.port=27017
mongodb_read.apname=productlib
mongodb_read.username=dbtest
mongodb_read.password=mongo_test#

mongodb_write.host=IP
mongodb_write.port=27017
mongodb_write.apname=productlib
mongodb_write.username=dbtest
mongodb_write.password=mongo_test#
  
  
#mongo online
#mongodb.host=IP
#mongodb.port=27017
#mongodb.apname=productlib
#mongodb.username=
#mongodb.password=
  
#最大分配的对象数   
redis.pool.maxActive=1024
#最大能够保持idel状态的对象数   
redis.pool.maxIdle=200
#当池内没有返回对象时,最大等待时间   
redis.pool.maxWait=1000
#当调用borrow Object方法时,是否进行有效性检查   
redis.pool.testOnBorrow=true
#当调用return Object方法时,是否进行有效性检查   
redis.pool.testOnReturn=true
#IP   
#redis.ip=IP
redis.ip=IP
#Port   
redis.port=6379


#生产环境   productlib  product201203311056lib
#local
#driver=oracle.jdbc.OracleDriver
#driverUrl=jdbc:oracle:thin:@IP:1521:carinfo
#userp=cmstest2
#passwordp=cmstest2
#alias=cmstest2
#prototypeCount=5
#maximumConnectionCount=50
#minimumConnectionCount=10
#trace=true
#verbose=true

#online
driver=oracle.jdbc.OracleDriver
driverUrl=jdbc:oracle:thin:@IP:1521:ora10g
userp=productlib
passwordp=
alias=productlib
prototypeCount=5
maximumConnectionCount=100
minimumConnectionCount=10
trace=true
verbose=true






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟令杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值