这里直说基于JedisConnectionFactory和spring提供的RedisTemplate模板实现的简单小例子;
首先导入jar包
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.1.0</version>
</dependency>
这里没什么可说的,然后配置spring整合Redis的配置文件spring-redis.xml:
<!-- jedis 配置 -->
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig" >
<property name="maxIdle" value="100" />
<!-- <property name="maxWaitMillis" value="1000" /> -->
<property name="MaxWait" value="1000" />
<property name="testOnBorrow" value="true" />
</bean >
<!-- redis工厂 -->
<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" >
<property name="poolConfig" ref="poolConfig" />
<property name="port" value="6379" />
<property name="hostName" value="127.0.0.1" />
<property name="password" value="" />
<property name="timeout" value="100000" ></property>
</bean >
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" >
<property name="connectionFactory" ref="connectionFactory" />
<property name="keySerializer" >
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
<property name="valueSerializer" >
<bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
</property>
</bean >
这里要注意<!-- <property name="maxWaitMillis" value="1000" /> -->不同版本的Redis写的不是一样的;
然后加入到spring配置文件中:
<import resource="classpath:spring-redis.xml" />
这样配置就结束了;接下来我们来写以下Redis的util方法:
@Component
public final class RedisUtil {
@Resource
private RedisTemplate<String, Object> redisTemplate;
public boolean set(String key, Object value) {
boolean result = false;
try {
ValueOperations<String, Object> operations = redisTemplate.opsForValue();
operations.set(key, value);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public String get(String key) {
String result = null;
ValueOperations<String, Object> operations = redisTemplate.opsForValue();
result = operations.get(key).toString();
return result;
}
}
这里只写了一种类型:String,还有其他四中数据类型的封装就不在这写了;
这里要注意:redisTemplate必须在xml里面注入进来,否则你@Resource没法获取对象;这里不能用@Autowired,它是加载接口的;
@Component不要拉下,这是spring扫描注入的;
然后在使用的类中加入:
@Resource
private RedisUtil redisUtil;
这样你就这可在这个勒种使用Redis了
@Override
public User findUs(String username, String password) {
// TODO Auto-generated method stub
User user = userDao.findUser(username,password);
System.out.println(user);
redisUtil.set("user", user);
System.out.println("============="+redisUtil.get("user"));
return user;
}
这里要注意,你传递的是一个实体类对象,所以这里实体类必须做处理:
public class User implements Serializable{
private String id;
private String username;
private String password;
private String gender;
实现Serializable接口,否则你无法放入到redis里面;这样一个小例子就结束了;
接下来说下序列化问题,redis传值都要进行序列化才能够实现,那么使用json格式就相当不错:
fastjson-1.2.2.jar
这是需要的jar包
然后我们序列化一个对象:
JSON.toJSONString(new User())
这样的形式,就是转成json就行了;这里只是个例子没有实际意义;
然后我们获取的数据也要再转成对象:
JSONObject jsonObject=JSONObject.parseObject(redisUtil.get("name"));
User stu=(User)JSONObject.toJavaObject(jsonObject, User.class);
这样就结束了;