1.当然是安装redis,具体的安装过程网上搜
2出现如下安装成功
.
3.在applicationContext.xml中配置
<!-- redis连接池 -->
</bean>
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="50"></property>
<property name="maxTotal" value="100"></property>
<property name="maxWaitMillis" value="2000"></property>
</bean>
<!-- Spring提供的连接工厂redis,Spring提供四种工厂模型,现在选择一种 -->
<bean id="ConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="hostName" value="localhost"></property>
<property name="port" value="6379"></property>
<property name="poolConfig" ref="poolConfig"></property>
</bean>
<!--valueSerializer值序列化器 -->
<bean id="JdkSerializationRedisSerializer" class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"></bean>
<!--keySerializer值序列化器 -->
<bean id="StringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
<!--创建RedisTemplate对象 -->
<bean id="RedisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="ConnectionFactory" ref="ConnectionFactory"></property>
<property name="keySerializer" ref="StringRedisSerializer"></property>
<property name="valueSerializer" ref="JdkSerializationRedisSerializer"></property>
</bean>
注意
commons-pool 1.x 下的包并没有org.apache.commons.pool2.impl这个东西!
导入commons-pool2.x
作者用的是Spring-data-redis用的是1.7版本 Spring是4.3.2版本避免版本不兼容
以及jedis的javabAPI
测试
注意对象可序列化
public class Role implements Serializable {
//序列化的版本号
private static final long serialVersionUID = 1L;
private int id;
private String roleName;
private String note;
没写set get
main方法中测试,
String resoures="applicationContext.xml";
ApplicationContext ctx=new ClassPathXmlApplicationContext(resoures);
RedisTemplate redisTemplate= ctx.getBean(RedisTemplate.class);
Logger log=Logger.getLogger(Test.class);
Role role1=new Role();
role1.setId(2);
role1.setNote("你好");
role1.setRoleName("杨宇");
redisTemplate.opsForValue().set("role1", role1);
Role role= (Role)redisTemplate.opsForValue().get("role1");
System.out.println(role.getRoleName());
log.info(role.getNote());
注意以上使用都是基于redisTemplate,基于对连接池的操作,并不能保证每次使用redisTemplate都是对同一个redis的操作
解决使用SessionCallback 或者RedisCallback
一般使用SessionCallback 这个接口,这样就可以把所有的操作命令放在同一个Redis连接中