Java后端爱上SpringBoot 第七节:SpringBoot中缓存应用

Java后端爱上SpringBoot 第七节:SpringBoot中缓存应用


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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值