redis学习之 spring集成(一)

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 
    }
    
  2. 调用和存取

    @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());
      }
    }
    
  3. 使用同一连接的写法

    @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());
      }
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值