测试Spring和redis写入和读取

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连接中



猜你喜欢

转载自blog.csdn.net/m0_37942145/article/details/78710108