0
点赞
收藏
分享

微信扫一扫

IV-day17-Redis&Aop技术整合/Redis数据持久化,Redis事务处理

半夜放水 2022-01-12 阅读 73

1.@EnableCaching注解,@Cacheable注解,@CachePut注解

1.@EnableCaching
//开启AOP方式的缓存应用
2.@Cacheable
	/**
     * 由此注解描述的方法为切入点方法,此方法执行时,底层会通过AOP机制
     * 先从缓存取数据,缓存有则直接返回,缓存没有则查数据,最后将查询的数据
     * 还会向redis存储一份
     * @param id
     * @return
     */
    @Cacheable(value = "menuCache",key = "#id")//使用方法参数的id作为key
    @Override
    public Menu selectById(Long id) {
        log.info("Get Data from Database");
        return menuMapper.selectById(id);
    }
3.@CachePut
	/**
     * @CachePut 注解描述的方法同样是要给缓存切入点方法
     * 主要用于更新缓存中的数据
     * @param menu
     * @return
     */
    @CachePut(value = "menuCache",key = "#menu.id")//value是方法的返回值
    @Override
    public Menu updateMenu(Menu menu) {
        menuMapper.updateById(menu);
        return menu;
    }

2.Redis数据持久化

2.1持久化方式

Redis中为了保证在系统宕机(类似进程被杀死)情况下,能更快的进行故障恢复,设计了两种数据持久化方案,分别为rdbaof方式。

2.2配置准备工作

redis.io官方:

https://redis.io/topics/config/

2.3Rdb方式持久化

Rdb方式是通过手动(save-阻塞式,bgsave-异步)或周期性方式保存redis中key/value的一种机制,Rdb方式一般为redis的默认数据持久化方式,系统启动时会自动开启这种方式的持久化机制。
实验1:

实验2:

实验3:

2.4Aof方式数据持久化

Aof方式是通过记录写操作日志的方式,记录redis数据的一种持久化机制,这个机制默认是关闭的
AOF方式持久化实践:

3.Redis事务

事务是一个业务,也可以看成是一个逻辑工作单元,是为了保证业务的完整,数据的正确而推出的一种控制机制,原则上来讲,事务必须要满足ACID四个特性(原子性,一致性,隔离性,持久性),在多个事务
在并发执行,为更好保证事务的四个特性的实现,通常会对事务加锁,Redis为了性能,采用了乐观锁方式进行事务控制,它使用watch命令监视给定的key,当exec(提交事务)的时候,如果监视的key从调用watch后发生过变化,则整个事务会失败。也可以调用watch多次监视多个key。注意watch的key是对整个连接有效的,如果连接断开,监视和事务都会被自动清除。当然exec,discard,unwatch命令都会清除连接中的所有监视。
Redis保证一个事务中的所有命令要么都执行,要么都不执行(原子性)。如果在发送EXEC命令前客户端断线了,则Redis会清空事务队列,事务中的所有命令都不会执行。而一旦客户端发送了EXEC命令,所有的命令就都会被执行,即使此后客户端断线也没关系,因为Redis中已经记录了所有要执行的命令。

3.1基本指令

multi:开启事务
exec:提交事务
discard:取消事务
redis事务太简单,没有回滚,只有取消。
当出现错误指令时,事务也会自动取消。
watch:监控,如果监控的值发生变化,则提交事务时会失败 /watch ticket 乐观锁,对值进行观察,改变则事务失败。
unwatch:取消监控

4.总结

Redis中的save和bgsave有什么不同?

RDB持久化机制有哪些优点?

RDB持久化机制有哪些缺点?

如何理解AOF方式中的rewrite操作?

AOF持久化机制有哪些优点?

AOF持久化机制有哪些缺点?

如何选择redis的持久化方式?

为什么AOP方式应用redis?

优势-简单,劣势-不灵活。

Spring工程中CacheManager作用是什么?

管理缓存,定义缓存配置及实现,也可以定制。

为什么要持久化?

更好的保证数据的可靠性,防止数据断电丢失。

生产环境下如何应用Rdb和Aof的持久化方式?

两种都要配置。

举报

相关推荐

0 条评论