spring boot 事务开启 logback

@EnableTransactionManagement

@Tansaction

locback配置:

logging:
  pattern:
    console: info:%level %msg%n
    level:
      root: warn
      com.kaikeba.jspdemo.dao: debug

 

或者在resources中加入logging.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <logger name="org.springframework.web" level="INFO"/>
</configuration>

spring boot 中使用redis:使用的两类场景,DB中相关表发生更新,redis缓存中存放的相关数据要清除,第二种设置过期时效

高并发下产生穿透(设置默认空值) 和雪崩(人为设置)大堆缓存同时进入 设置时效就可能产生热点缓存(双重检测锁)防止高并发下对数据库产生压力。

https://www.cnblogs.com/fengli9998/p/8630513.html对穿透比较详细描述

必须的步骤

1.pom中加入springboot和redis的整合依赖

2配置文件中配置redis

3.由于要查询的实体类对象缓存到redis,redis要求实体类必须序列化。

rides高可用集群:如何做到高可用哨兵机制

使用注解方式

1.在工程启动类加

@EnableCaching

2.在查询方法前添加@Cacheable 在增删改前加@CacheEvict

3.在主配置中注册缓存空间名

缓存雪崩大量的缓存在同一时间同时到期

@EnableCaching
public class UserServiceImpl implements UserService {
    @Autowired
    public UserDao userDao;

    @Autowired
    private RedisTemplate<Object, Object> redisTemplate;

    @CacheEvict(value = "realTimeCache", allEntries = true)
    @Override
    public void sava(User employee) {
        userDao.insertUser(employee);
    }

    @Cacheable(value = "realTimeCache", key = "'user_'+#id")
    @Override
    public User findOne(int id) {
        return userDao.findUserById(id);
    }
    //使用双重检测锁

    @Override
    public Integer findUserCount() {
        //获取redis操作对象
        BoundValueOperations<Object, Object> ops = redisTemplate.boundValueOps("count");
        Object count = ops.get();
        //双重检测锁主要
        if (count == null) {
            synchronized (this) {
                count = ops.get();
                if (count == null) {
                    count = userDao.findCount();
                    DateTimeFormatter s =  DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss");

                    System.out.println(LocalDateTime.now().format(s)+"d"+userDao.findCount() + "dddddd");
                    //将查询的数据写入到redis中,并设置到期时效
                    ops.set(count, 10, TimeUnit.SECONDS);
                }
            }
        }
        //从缓存中读取数据
        return (Integer) count;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值