SpringBoot整合SpringData Redis

添加redis的起步依赖:

<!-- 配置使用redis启动器 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

在application.properties中配置redis的连接信息:

#Redis
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=root
#最大连接数
spring.redis.jedis.pool.max-active=30
#最大空闲数
spring.redis.jedis.pool.max-idle=20
#最小空闲连接数
spring.redis.jedis.pool.min-idle=10
#连接时的最大等待毫秒数
spring.redis.jedis.pool.max-wait=3000

注入RedisTemplate测试redis操作

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class RedisTest {

    @Autowired
    private UserDao userDao;
    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    @Test
    public void test() throws JsonProcessingException {
        // 从redis缓存中获得指定的数据
        String userListData = redisTemplate.boundValueOps("user.findAll").get();
        //如果redis中没有数据的话
        if (null == userListData) {
            //查询数据库获得数据
            List<User> users = userDao.findAll();
            //转换成json格式字符串
            ObjectMapper om = new ObjectMapper();
            userListData = om.writeValueAsString(users);
            //将数据存储到redis中,下次在查询直接从redis中获得数据,不用在查询数据库
            redisTemplate.boundValueOps("user.findAll").set(userListData);
            System.out.println("===============从数据库获得数据===============");
        } else {
            System.out.println("===============从redis缓存中获得数据===============");
        }
        System.out.println(userListData);
    }
}

 Operations:

  redisTemplate有两个方法经常用到,一个是opsForXXX一个是boundXXXOps,XXX是value的类型,前者获取到一个Operation,但是没有指定操作的key,可以在一个连接(事务)内操作多个key以及对应的value;后者会获取到一个指定了key的operation,在一个连接内只操作这个key对应的value

  private RedisTemplate redisTemplate;

  ValueOperations valueOperations = redisTemplate.opsForValue();

    ValueOperations :简单字符串类型数据操作
    SetOperations :set类型数据操作
    ZSetOperations :zset类型数据操作
    HashOperations :map类型的数据操作
    ListOperations :list类型的数据操作

    opsForGeo:geo类型的数据操作,应用于地理位置计算

    opsForHyperLogLog:应用于独立信息统计

    opsForCluster:应用于集群

--------------------------------------------------------------------------------------------------------------------------------------------

  BoundValueOperations boundValueOps = redisTemplate.boundValueOps("key");

    boundValueOps

    boundSetOps

    boundZSetOps

    boundHashOps

    boundListOps

    boundGeoOps

posted @ 2020-02-29 20:55  糖不甜,盐不咸  阅读(429)  评论(0编辑  收藏  举报