Spring Boot 整合redis

整合redis

  • 實體類須要序列化
  • 額外配置依賴
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-reis</artifactId>
</dependency>
複製代碼
  • 經過配置文件配置
#配置redis
spring.redis.host=192.168.243.129
spring.redis.port=6379
spring.redis.database=0
spring.redis.password=bisnow

#配置cache
spring.cache.cache-names=c1

複製代碼
  • 啓動器開啓緩存自動配置
@SpringBootApplication
@EnableCaching
public class RediscacheApplication {
複製代碼
  • 此處模擬數據庫操做
@Service
// 配置緩存名稱,不是必須的,能夠在每一次啓動時指定
@CacheConfig(cacheNames = "c1")
public class UserService {
    /** * @Cacheable 將當前方法的返回值緩存起來 * 緩存的key就是方法的參數,方法返回值是value * * 若是多個參數,同時做爲key(必須都知足才能取出緩存) * 多參數指定某個參數爲key 須要手動配置 * @Cacheable(key = "id") 表示只用id做爲key * @param id * @return */
    @Cacheable(key = "#id")
    public User getUserById(Long id,String username){
        System.out.println(id);
        User user = new User();
        user.setId(id);
        return user;
    }
    /** * 刪除 * allEntries 默認爲false,表示根據key刪除而不是全刪除緩存 * beforeInvocation 默認爲false 表示先刪除數據,後清除緩存 * @param id */
    //這個註解通常加在刪除方法上,表示同步刪除緩存中的數據
    @CacheEvict(allEntries = false,beforeInvocation = false)
    public void deleteById(Long id){
        //在這裏執行刪除操做,去數據庫中刪除
        //正常的邏輯:首先去數據庫中刪除,而後去緩存中刪除
    }

    /** * 更新 * @CachePut 這個註解通常用在修改方法上 * 表示修改數據庫數據的同時也修改緩存 * 更新方法必須有返回值 * geng * @param id * @return */
    @CachePut
    public User updateById(Long id){
        User user = new User();
        user.setId(99L);
        user.setUsername("李四");
        return user;
    }
}

複製代碼
  • 測試類
@RunWith(SpringRunner.class)
@SpringBootTest
public class RediscacheApplicationTests {
    @Autowired
    UserService userService;

    @Test
    public void test1(){
        User userById = userService.getUserById(99L,"");
        System.out.println("userbyid >>> 1:" +userById);
        User userById2 = userService.getUserById(99L,"");
        System.out.println("uuerbyid >>> 2:" + userById2);
    }

    @Test
    public void test2(){
        User userById1 = userService.getUserById(99L,"");
        System.out.println("uuerbyid >>> 1:" + userById1);
        userService.deleteById(99L);
        User userById2 = userService.getUserById(99L,"");
        System.out.println("uuerbyid >>> 2:" + userById2);
    }

    @Test
    public void test3(){
        User userById = userService.getUserById(99L,"");
        System.out.println("userbyid >>> 1:" +userById);
        userService.updateById(99L);
        User userById2 = userService.getUserById(99L,"");
        System.out.println("uuerbyid >>> 2:" + userById2);
    }
}
複製代碼
相關文章
相關標籤/搜索