redis在Windows下的操作以及缓存注解的设置

本文详细介绍了如何在SpringBoot应用中使用Redis缓存,包括@Cachable、@CachePut和@CacheEvict注解的配置,以及在实际项目中的应用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

启动redis

  • 首先切换到redis安装目录,进入cmd窗口,输入redis-server.exe redis.windows.conf,开启redis,不要关闭窗口。
  • 再开一个cmd窗口,切换到redis目录下,输入redis-cli -h 127.0.0.1 -p 6379,这样可以连上本地的redis数据库。
  • 如果想要连接远程的redis数据库,需要先将redis目录下的redis.windows.conf中的bind配置修改为0.0.0.0,然后开启cmd,根据ip地址加端口号,进行连接:redis-cli -h 对方电脑的ip地址 -p 端口号。
  • 连接上以后就可以根据日常操作进行修改了。

在springboot环境中使用redis缓存的注解

  • 1、先在启动类上添加注解@EnableCaching开启缓存
  • 2、常用的缓存三个注解是:@Cachable(用于查询),@CachePut(用于新增和更新),@CacheEvict(用于删除)
  • 3、@Cachable:可以在所需方法上加上此注解,进行查询后缓存,再次查询就会去redis中查询。
@Cachable此注解的参数设置:
  • **value、cacheName:**两个等同的参数(cacheName为spring4新增,作为value的别名)也就是两个都可以作为指定缓存存储的集合名,由于spring4中新增了@cacheConfig,因此也可以直接在这个位置上命名好,再引用。
  • **key:**缓存对象存储在Map集合中的key值,非必需,但是当你在方法上传递参数的时候,你要设置key的值与参数的值一样,使用SpEL表达式。
  • **condition:**缓存对象的条件,非必需,也需使用SpEL表达式,只有满足表达式条件的内容才会被缓存,比如:@Cacheable(key = “#p0”, condition = “#p0.length() < 3”),表示只有当第一个参数的长度小于3的时候才会被缓存,若做此配置上面的AAA用户就不会被缓存,读者可自行实验尝试。
  • unless:另外一个缓存条件参数,非必需,需使用SpEL表达式。它不同于condition参数的地方在于它的判断时机,该条件是在函数被调用之后才做判断的,所以它可以通过对result进行判断。
  • keyGenerator:用于指定key生成器,非必需。若需要指定一个自定义的key生成器,我们需要去实现org.springframework.cache.interceptor.KeyGenerator接口,并使用该参数来指定。需要注意的是:该参数与key是互斥的
  • cacheManager:用于指定使用哪个缓存管理器,非必需。只有当有多个时才需要使用
  • cacheResolver:用于指定使用那个缓存解析器,非必需。需通过org.springframework.cache.interceptor.CacheResolver接口来实现自己的缓存解析器,并用该参数指定。
@Override
    @Cacheable(cacheNames = "findAll")
    public List<User> findAll() {
        return userMapper.findAll();
    }
  @Override
    @Cacheable(cacheNames="user", key="#id")
//    @CacheEvict(cacheNames="user", key="#id",allEntries = true)
    public User findById(Integer id) {
        System.out.println("没缓存");
        return userMapper.findById(id);
    }
@CachePut注解参数设置
  • 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,和@Cacheable不同的是,每次都会触发真实的方法调用
  • value,cacheName:缓存的名称
  • key:缓存的key,可以为空,如果指定要按照SpEL表达式编写。
  • condition:缓存的条件,可以为空,使用SpEL编写,返回true或者false,只有为true才进行缓存。
@Override
    @CachePut(cacheNames = "a" )
    public void SaveUser(User user) {
        System.out.println("第一次输入");
        userMapper.SaveUser(user);
    }
@CacheEvict注解参数的配置
  • value,cacheName:缓存的名称。
  • key:缓存的可以,可以为空,如果指定要按照SpEL表达式编写
  • condition:缓存的条件,可以为空,使用SpEL编写,返回true和false,只有true才能进行缓存
  • allEntries:是否情况所有缓存内容,true表示方法调用后立即清空所有缓存。
 @Override
//    @Cacheable(cacheNames="user", key="#id")
    @CacheEvict(cacheNames="user", key="#id",allEntries = true)
    public User findById(Integer id) {
        System.out.println("没缓存");
        return userMapper.findById(id);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值