美文网首页redis学习
redis学习之 spring集成(一)

redis学习之 spring集成(一)

作者: 出来混要还的 | 来源:发表于2019-08-29 12:59 被阅读0次

1、jar包

<dependency>
  <groupId>org.springframework.data</groupId>
  <artifactId>spring-data-redis</artifactId>
  <version>1.7.2.RELEASE</version>
</dependency>
<dependency>
  <groupId>redis.clients</groupId>
  <artifactId>jedis</artifactId>
  <version>2.9.0</version>
</dependency>

2、JavaBean 配置

<bean id="poolConfig" class=" redis.clients.jedis.JedisPoolConfig">
  <!-- 最大空闲数 -->
  <property name="maxIdle" value="50" />
  <!-- 最大连接数 -->
  <property name="maxTotal" value="100" />
  <!-- 最大等待时间 -->
  <property name="maxWaitMillis" value="20000" />
</bean>

<bean id="connectionFactory" class=" org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
  <property name="hostName" value="localhost" />
  <property name="port" value="6379" />
  <!-- <property name="password" value="localhost"/> -->
  <property name="poolConfig" ref="poolConfig" />
</bean>
  
<bean id="jdkSerializationRedisSerializer" class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"></bean>
  
<bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
  
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
  <property name="connectionFactory" ref="connectionFactory" />
  <property name="defaultSerializer" ref="stringRedisSerializer" />
  <property name="keySerializer" ref="stringRedisSerializer" />
  <property name="valueSerializer" ref="jdkSerializationRedisSerializer" />
</bean>

3、使用redisTemplate存取值

注意事项:
由于配置文件中使用的是jdkSerializationRedisSerializer,所以entity必须实现序列化

  1. 实体类
public class Role implements Serializable {

    private Integer roleId;

    private String roleName;
    // 省略getter setter 
}
  1. 调用和存取
@Controller
public class TestController {

  @Autowired
  private RedisTemplate redisTemplate;

  @RequestMapping("/test")
  public void test() {
    Role role = new Role();
    role.setRoleId(1);
    role.setRoleName("admin");
    // 存值
    redisTemplate.opsForValue().set("role_1", role);
    // 取值
    Role role2 = (Role) redisTemplate.opsForValue().get("role_1");
    System.out.println(role2.getRoleName());
  }
}
  1. 使用同一连接的写法
@Controller
public class TestController {

  @Autowired
  private RedisTemplate redisTemplate;

  @RequestMapping("/test")
  public void test() {
    Role role = new Role();
    role.setRoleId(1);
    role.setRoleName("admin");
    // 同一连接
    SessionCallback callBack = new SessionCallback<Role>() {

      @Override
      public Role execute(RedisOperations operations) throws DataAccessException {
        operations.boundValueOps("role_1").set(role);
        return (Role) operations.boundValueOps("role_1").get();
      }
    };
    // 取值
    Role role2 = (Role) redisTemplate.execute(callBack);
    System.out.println(role2.getRoleName());
  }
}

相关文章

网友评论

    本文标题:redis学习之 spring集成(一)

    本文链接:https://www.haomeiwen.com/subject/ylhiectx.html