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的類型,前者獲取到一個Opercation,但是沒有指定操作的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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章