java三大框架组合使用_java三大框架项目和Redis组合使用

已知一个已有的Struts+Spring+Hibernate项目,以前使用MySQL数据库,现在想把Redis也整合进去。

1. 相关Jar文件

下载并导入以下3个Jar文件:

commons-pool2-2.4.2.jar、jedis-2.3.1.jar、spring-data-redis-1.3.4.RELEASE.jar。

2. Redis配置文件

在src文件夹下面新建一个redis.properties文件,设置连接Redis的一些属性。

redis.host=127.0.0.1

redis.port=6379

redis.default.db=1

redis.timeout=100000

redis.maxActive=300

redis.maxIdle=100

redis.maxWait=1000

redis.testOnBorrow=true

再新建一个redis.xml文件程序如下:

< ?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:p="http://www.springframework.org/schema/p"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

classpath:redis.properties

class="redis.clients.jedis.JedisPoolConfig">

class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">

class="org.springframework.data.redis.core.StringRedisTemplate"

p:connectionFactory-ref="jedisConnectionFactory"

< /beans>

3. Redis类

新建一个com.school.redisclient包,结构如下:

31ad4a3b0ed9f20c15aff82353362aa9.png

接口IRedisService:

public interface IRedisService {

public void set(K key, V value, long expiredTime);

public V get(K key);

public Object getHash(K key, String name);

public void del(K key);

}

抽象类AbstractRedisService,主要是对RedisTemplate进行操作:

public abstract class AbstractRedisService implements IRedisService {

@Autowired

private RedisTemplate redisTemplate;

public RedisTemplate getRedisTemplate() {

return redisTemplate;

}

public void setRedisTemplate(RedisTemplate redisTemplate) {

this.redisTemplate = redisTemplate;

}

@Override

public void set(final K key, final V value, final long expiredTime) {

BoundValueOperations valueOper = redisTemplate.boundValueOps(key);

if (expiredTime <= 0) {

valueOper.set(value);

} else {

valueOper.set(value, expiredTime, TimeUnit.MILLISECONDS);

}

}

@Override

public V get(final K key) {

BoundValueOperations valueOper = redisTemplate.boundValueOps(key);

return valueOper.get();

}

@Override

public Object getHash(K key, String name){

Object res = redisTemplate.boundHashOps(key).get(name);

return res;

}

@Override

public void del(K key) {

if (redisTemplate.hasKey(key)) {

redisTemplate.delete(key);

}

}

}

实现类RedisService:

@Service("redisService")

public class RedisService extends AbstractRedisService {

}

工具类RedisTool:

public class RedisTool {

private static ApplicationContext factory;

private static RedisService redisService;

public static ApplicationContext getFactory(){

if (factory == null){

factory = new ClassPathXmlApplicationContext("classpath:redis.xml");

}

return factory;

}

public static RedisService getRedisService(){

if (redisService == null){

redisService = (RedisService) getFactory().getBean("redisService");

}

return redisService;

}

}

4. 查询功能的实现

新建一个Action:RClasQueryAction,返回Redis里面所有的课程数据。

@SuppressWarnings("serial")

public class RClasQueryAction extends ActionSupport {

RedisService rs = RedisTool.getRedisService();

List claslist = new ArrayList();

Clas c;

public String execute(){

if (rs != null){

System.out.println("RedisService : " + rs);

getAllClas();

}

ServletActionContext.getRequest().setAttribute("claslist", claslist);

return SUCCESS;

}

private void getAllClas(){

claslist = new ArrayList();

int num = Integer.parseInt(rs.get("clas:count"));

for (int i=0; i

String cid = "clas:" + (i+1);

c = new Clas();

int id = Integer.parseInt(String.valueOf(rs.getHash(cid, "ID")));

c.setId(id);

System.out.println("ID:" + id);

String name = (String) rs.getHash(cid, "NAME");

c.setName(name);

System.out.println("NAME:" + name);

String comment = (String) rs.getHash(cid, "COMMENT");

c.setComment(comment);

System.out.println("COMMENT:" + comment);

claslist.add(c);

}

}

}

Struts的设置和jsp文件就不用说了啊,大家都会。

5. Redis数据库

Redis数据库里面的内容(使用的是Redis Desktop Manager客户端):

448d72c920ade0d34f7b09273e49e3c4.png

最后是运行结果:

当然,这只是实现了从Redis查询数据,还没有实现将Redis作为MySQL的缓存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值