为了避免麻烦,先在win10下的redis服务端进行整合,一切完成之后再进行Linux多机多节点整合;
参照了网上很多内容后开始整合,大概结构如下:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
<property name="initialSize" value="${initialSize}"/>
<property name="maxActive" value="${maxActive}"/>
<property name="maxIdle" value="${maxIdle}"/>
<property name="minIdle" value="${minIdle}">property>
<property name="maxWait" value="${maxWait}">property>
bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource">property>
<property name="configLocation" value="classpath:mybatisconfig.xml">property>
<property name="mapperLocations" value="classpath:com/CaoPorn/dao/*.xml">property>
bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.CaoPorn.dao">property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory">property>
bean>
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory">constructor-arg>
bean>
beans>
2.配置spring-redis:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
">
<context:property-placeholder location="classpath:*.properties"/>
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="${redis.maxIdle}" />
<property name="maxTotal" value="${redis.maxActive}" />
<property name="maxWaitMillis" value="${redis.maxWait}" />
<property name="testOnBorrow" value="${redis.testOnBorrow}" />
bean>
<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="hostName" value="${redis.host}">property>
<property name="port" value="${redis.port}">property>
<property name="password" value="${redis.password}">property>
<property name="poolConfig" ref="poolConfig">property>
bean>
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" p:connection-factory-ref="connectionFactory" >
<property name="keySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
property>
<property name="valueSerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
property>
<property name="hashKeySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
property>
bean>
beans>
3、mybatisconfig:
<configuration>
<typeAliases>
<package name="com.CaoPorn.bean"/>
typeAliases>
configuration>
4、redis.properties:
redis.host=127.0.0.1
redis.port=6379
redis.password=199633
redis.maxIdle=300
redis.maxActive=600
redis.maxWait=1000
redis.testOnBorrow=true
package com.CaoPorn.dao;
import java.util.List;
public interface RedisBaiseTakes {
//增
public void add(K key,String value);
public void addObj(H objectKey,K key,V object);
//删
public void delete(K key);
public void delete(List listKeys);
public void deletObj(H objecyKey,K key);
//改
public void update(K key,String value);
public void updateObj(H objectKey,K key,V object);
//查
public String get(K key);
public V getObj(H objectKey,K key);
}
bean层
package com.CaoPorn.bean;
import java.io.Serializable;
public class SeeUser implements Serializable{
private String id;
private String ip;//用户的id
private String seeTime;//用户访问的时间
private int seeCount;//用户访问的次数
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getSeeTime() {
return seeTime;
}
public void setSeeTime(String seeTime) {
this.seeTime = seeTime;
}
public int getSeeCount() {
return seeCount;
}
public void setSeeCount(int seeCount) {
this.seeCount = seeCount;
}
}
controller层:
package com.CaoPorn.controller;
import com.CaoPorn.bean.SeeUser;
import com.CaoPorn.dao.RedisBaiseTakes;
import com.CaoPorn.tools.StringFile;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@Controller
@RequestMapping("test")
public class TestController {
@Resource(name="seeUserRedisTakes")
private RedisBaiseTakes seeUserRedisTakes;
@RequestMapping("/hello.do")
public ModelAndView hello(){
ModelAndView mv = new ModelAndView();
System.out.println("hello see");
seeUserRedisTakes.add("hello1","zxm");
mv.setViewName("../hello");
return mv;
}
@RequestMapping("/hello2.do")
public ModelAndView hello2(HttpServletRequest request){
ModelAndView mv = new ModelAndView();
SeeUser seeUser = new SeeUser();
seeUser.setId("1");
seeUser.setIp(StringFile.getIpAddr(request));
seeUser.setSeeTime(StringFile.getNoewTime("yyyy-MM-dd HH:mm:ss"));
seeUser.setSeeCount(1);
seeUserRedisTakes.addObj("seeUser",seeUser.getId(),seeUser);
request.setAttribute("user",seeUser);
mv.setViewName("../hello");
return mv;
}
@RequestMapping("/hello3.do")
public ModelAndView hello3(HttpServletRequest request){
ModelAndView mv = new ModelAndView();
SeeUser seeUser = (SeeUser) seeUserRedisTakes.getObj("seeUser","1");
if(seeUser!=null){
System.out.println(seeUser.getId()+"======="+seeUser.getIp()+"======"+seeUser.getSeeTime()+"======="+seeUser.getSeeCount());
}
mv.setViewName("hello");
return mv;
}
}
service层:
package com.CaoPorn.service;
import java.util.List;
import java.util.logging.Logger;
import javax.annotation.Resource;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import com.CaoPorn.bean.SeeUser;
import com.CaoPorn.bean.User;
import com.CaoPorn.dao.RedisBaiseTakes;
@Component("seeUserRedisTakes")
public class SeeUserRedisTakes implements RedisBaiseTakes{
@Resource(name="redisTemplate")
private RedisTemplate redisTemplate;
private Logger logger = Logger.getLogger(String.valueOf(SeeUserRedisTakes.class));
public void add(String key, String value) {
if(redisTemplate==null){
logger.warning("redisTemplate 实例化失败");
return;
}else{
redisTemplate.opsForValue().set(key,value);
}
}
public void delete(String key) {
// TODO Auto-generated method stub
}
public void delete(List listKeys) {
// TODO Auto-generated method stub
}
public void deletObj(String objecyKey, String key) {
// TODO Auto-generated method stub
}
public void update(String key, String value) {
// TODO Auto-generated method stub
}
public void updateObj(String objectKey, String key, User object) {
// TODO Auto-generated method stub
}
public String get(String key) {
String value = (String) redisTemplate.opsForValue().get(key);
return value;
}
public SeeUser getObj(String objectKey, String key) {
SeeUser seeUser = (SeeUser) redisTemplate.opsForHash().get(objectKey,key);
return seeUser;
}
public void addObj(String objectKey, String key, SeeUser object) {
if(redisTemplate==null){
logger.warning("redisTemplate 实例化失败");
return;
}else{
redisTemplate.opsForHash().put(objectKey,key,object);
}
}
public void updateObj(String objectKey, String key, SeeUser object) {
// TODO Auto-generated method stub
}
}
再写一个jsp,测试之后打开redis客户端查看