启动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")
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
@CacheEvict(cacheNames="user", key="#id",allEntries = true)
public User findById(Integer id) {
System.out.println("没缓存");
return userMapper.findById(id);
}