一、从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