学习Spring Boot:(二十五)使用 Redis 实现数据缓存

摘要:
Min idle:0#控制池中处于空闲状态的Redis实例的最小数量。默认值为0。超时:0#连接超时时间单位为毫秒。默认值为0password:master#密码。根据您的Redis设计,默认值为空。然后添加注释@EnableCaching以打开系统条目启动类上的缓存。如果未启用其他缓存,Redis缓存将自动打开。

前言

由于 Ehcache 存在于单个 java 程序的进程中,无法满足多个程序分布式的情况,需要将多个服务器的缓存集中起来进行管理,需要一个缓存的寄存器,这里使用的是 Redis。

正文

当应用程序要去缓存中读取数据,但是缓存中没有找到该数据,则重新去数据库中获取数据,然后将数据存入缓存中。
还有当我们需要更新或者删除缓存中的数据时候,需要让缓存失效。

cache

配置

在系统配置文件中加入 redis 的连接参数:

spring:
  redis:
    host: 192.168.19.200 # 120.79.208.199 # host ,默认 localhost
    port: 6379 # 端口号,默认6379
    pool:
    # 设置都是默认值,可以按需求设计
      max-active: 8 # 可用连接实例的最大数目,默认值为8;如果赋值为-1,则表示不限制;
      max-idle: 8  # 控制一个pool最多有多少个状态为idle(空闲的)的redis实例,默认值也是8。
      max-wait: -1 # 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。
      min-idle: 0 # 控制一个pool最少有多少个状态为idle(空闲的)的redis实例,默认值为0。
    timeout: 0 # 连接超时时间 单位 ms,默认为0
    password: master # 密码,根据自己的 redis 设计,默认为空

然后在系统入口启动类上面加入打开缓存的注解 @EnableCaching
如果没启用其他缓存,这样就自动打开 redis 缓存。

还可以自定义注册 RedisCacheManager,设置相关参数:

    @Bean
    public CacheManager cacheManager(RedisTemplate redisTemplate) {
        RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate);
        // 设置缓存最大时间 24 h
        redisCacheManager.setDefaultExpiration(24 * 60 * 60);
        return redisCacheManager;
    }

使用

@Service
@CacheConfig(cacheNames = "em")
public class EmployeeServiceImpl implements EmployeeService {
    @Autowired
    private EmployeeDao dao;

    @Override
    @Cacheable(key = "#p0")
    public Employee findOne(Long id) {
        return dao.findOne(id);
    }

    /**
     * 更新缓存中的数据,
     * 由于 redis 是存在外部,不是 ehcache 那样存在于项目进程中,需要我们主动去更新 缓存
     * @param employee
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    @CachePut(key = "#p0.id")
    public Employee update(Employee employee) {
        return dao.save(employee);
    }

    /**
     * 同样主动去删除 cache
     * @param id
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    @CacheEvict(key = "#p0")
    public void delete(Long id) {
        dao.delete(id);
    }
}

注解的使用参考前面的学习Spring Boot:(二十一)使用 EhCache 实现数据缓存

免责声明:文章转载自《学习Spring Boot:(二十五)使用 Redis 实现数据缓存》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇VC Delphi WM_COPYDATA 消息关于STM32软重启的问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协...

CentOS7为php7.2安装php-redis扩展(redis环境搭建二)

安装前检查 安装前查看phpinfo()输出的版本与php -v 的版本是否一致,如果不一致安装成功后,输出phpinfo和php -v 都会找不到redis扩展,本人在此踩过坑 解决php -v查看到版本于phpinfo()打印的版本不一致问题可参考我的另一篇博客:https://www.cnblogs.com/clubs/p/13377676.html...

7--docker-compose详解

目录 一、Docker Compose简介 二、docker compose 安装 与 卸载 1.下载 2.授权 3.检测版本 4.卸载 三、docker compose使用 1.相关概念 2.场景 3.docker-compose模板 4.通过docker-compose运⾏⼀组容器 5. docker-compose 模板⽂件...

java 实现redis缓存

由于项目加载时请求数据量过大,造成页面加载很慢。采用redis作缓存,使二次访问时页面,直接取redis缓存。 1.redis连接参数 2.连接redis,设置库 3.配置文件开启缓存 4.mapper文件配置 上图即为配置连接redis的类,添加在每个需要做缓存的mapper.xml文件中即可。redis缓存效果: 存储在redis中,若执行修改...

Scrapy进阶知识点总结(五)——Settings

1.设置优先级 Scrapy中有不同层次的设置,其类型以及优先级如下(从高到低): 1.命令行命令中指定的设置 2.每个spider中的设置 3.scrapy项目中settings.py设置 4.命令行命令的默认设置 5.scrapy全局的默认设置 1.命令行命令中指定的设置 命令行提供的参数是最优先的参数,覆盖任何其他选项 scrapy crawl...

本地缓存解决方案-Caffeine Cache

1.1 关于Caffeine Cache ​ Google Guava Cache是一种非常优秀本地缓存解决方案,提供了基于容量,时间和引用的缓存回收方式。基于容量的方式内部实现采用LRU算法,基于引用回收很好的利用了Java虚拟机的垃圾回收机制。其中的缓存构造器CacheBuilder采用构建者模式提供了设置好各种参数的缓存对象,缓存核心类LocalCa...