JavaバックエンドSpringBoot第7節:SpringBootでのキャッシュアプリケーション

12528 ワード

JavaバックエンドSpringBoot第7節:SpringBootでのキャッシュアプリケーション
  • キャッシュ構成
  • @CachePutキャッシュにデータを追加
  • @Cacheableキャッシュデータ
  • PS:キャッシュは良いもので、個人的には多重化率が高いことは理解していますが、あまり修正しないデータをキャッシュに入れるのが一番です.
    キャッシュ構成
    まずredis構成を追加
      redis:
        database: 0
        host: 127.0.0.1
        port: 6379
        password: 
        jedis:
          pool:
            max-active: 10
            max-idle: 8
            max-wait: 1000
            min-idle: 0
    

    起動クラスに@EnableCachingを付けてキャッシュをオンにします.主に実装クラスを貼り付けて、いくつかの注釈を言います.
    package com.hyn.spring.service.impl;
    
    import java.util.List;
    import java.util.Optional;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.cache.annotation.CacheEvict;
    import org.springframework.cache.annotation.CachePut;
    import org.springframework.cache.annotation.Cacheable;
    import org.springframework.stereotype.Service;
    
    import com.hyn.spring.entity.UserInfo;
    import com.hyn.spring.repository.UserRepository;
    import com.hyn.spring.service.UserInfoService;
    
    @Service
    public class UserInfoServiceImpl implements UserInfoService{
    	
    	private static final Logger log = LoggerFactory.getLogger(UserInfoServiceImpl.class);
    
        @Autowired
        UserRepository userInfoDao;
    
        @Override
        @CachePut(value = "userinfocache",key="#userInfo.id") //@CachePut              ,       people,   key person id。
        public UserInfo save(UserInfo userInfo) {
            UserInfo u = userInfoDao.save(userInfo);
            log.info(" userinfo id(  cache key):" + u.getId() + "      ");
            return u;
        }
    
        @Override
        @CacheEvict(value = "userinfocache") //@CacheEvict   people   key id   。
        public void remove(Long id) {
            log.info("   userinfo id(  cache key):" + id + "    ");
            userInfoDao.deleteById(id);
        }
    
        @Override
        @Cacheable(value = "userinfocache",key="#userInfo.id") //@Cacheable  key person id     people 。
        public UserInfo findOne(UserInfo userInfo) {
            Optional<UserInfo> u = userInfoDao.findById(userInfo.getId());
            log.info(" userinfo id(  cache key):" + u.get().getId() + "      ");
            return u.get();
        }
        
        @Override
        @Cacheable(value = "alluserinfo") //@Cacheable  key person id     people 。
        public List<UserInfo> findAll() {
        	return userInfoDao.findAll();
        }
        
    }
    
    

    @CachePutキャッシュにデータを追加
    新しいインタフェースにこの注釈@CachePut注釈を付けてデータをキャッシュに入れます.valueはこのデータの名前で、keyはこのデータのIDと理解できます.
    @Cacheableキャッシュデータの取得
    @Cacheableのvalueはどの種類のデータを取るか理解でき、keyはこの種類のデータのidである