Redis缓存注解方式

Redis介绍:
底层用C语言开发的开源的NoSql(非关系型)缓存数据库
Redis 是一个key-value数据库,将数据缓存内存中,支持持久化到本地磁盘
支持五种数据类型:
string(字符串)、散列表(哈希类 key value)
list(链表)、set(集合)、zset(sorted set --有序集合)
特点:

  1. 应对高并发的读写需求
  2. 数据量大的情况,储存效率高,读取效率高
  3. 主从同步 (避免单点故障,造成数据丢失)
    从节点配置文件加上:slaveof +ip,通过master server持久化的rdb文件实现,master server(主服务)先进行快照,然后将rdb文件传给slave (从服务)server,从那个服务 根据rdb文件重建内存表。
    4.Redis 2.0也增加了VM(虚拟内存)特性,类似于操作系统,把常用应用程序放到虚拟内存 中,不常用的写到磁盘中实现冷热数据分离(例:网站注册100万用户,可能只有十几万的活跃用户,全部存放到内存中,效率低,浪费资源,所以需要把一些资源持久化到本地磁盘)。
    5.支持的存储类型多
    Redis支持两种方式的持久化:
    总的目的:把数据保存到硬盘.
    RDB持久化方案: 隔一段时间,去往硬盘里写如一些数据,是redis默认的存储方式(推荐使用)
    优点: 性能消耗的比较小,速度快
    缺点: 容易丢失数据

AOF持久化方案:实时的把数据保存到硬盘中去.
优点: 不容易丢失数据
缺点: 性能差,给客户的体验度不好.

Redis注解使用
1、Maven引用
Redis缓存注解方式
2、Spring配置
(1)启用缓存注解功能:
<cache:annotation-driven cache-manager=“SpringRedisCacheManager"/>
注:注解在controller中使用就配置在springMVC配置文件中,service中使用就配置在spring的配置文件中
(2)配置Redis连接信息:
Redis缓存注解方式
Properties配置文件
Redis缓存注解方式

(3)配置ObjectMapper ,注入SpringDataRedis和RedisCacheManager:
Redis缓存注解方式

3、代码中使用注解

@Cacheable 作用和配置方法:
根据方法的请求参数对其结果进行缓存。根据Key进行判断,如已在缓存中,则不执行方法,直接返回结果
Redis缓存注解方式
cacheNames:存储注解方法调用结果的缓存名称。
key:缓存的 key,可以为空(建议指定)。如果指定要按照 SpEL 表达式
编写,如果不指定,则默认按照方法的所有参数进行组合。
cacheManager:指定使用的cacheManager。
condition:缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者
false,只有为 true 才进行缓存
@Cacheable(cacheNames=“userTemp1”, key = “‘UserId_’ + #id”,condition = “#id<=110”)
判断id值,如果id值小于110,在queryFullNameById方法执行成功后,缓存在redis中。

@CachePut 作用和配置方法:
根据方法的请求参数对其结果进行缓存,和 @Cacheable 不同的是,它每次都会触发真实方法的调用
Redis缓存注解方式
cacheNames:存储注解方法调用结果的缓存名称。
key:缓存的 key,可以为空(建议指定)。如果指定要按照 SpEL 表达式
编写,如果不指定,则默认按照方法的所有参数进行组合。
cacheManager:指定使用的cacheManager。
condition:缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者
false,只有为 true 才进行缓存

@CacheEvict 作用和配置方法:
根据一定的条件对缓存进行清空
Redis缓存注解方式
cacheNames:存储注解方法调用结果的缓存名称。
key:缓存的 key,可以为空(建议指定)。如果指定要按照 SpEL 表达式编写,如果不指定,则缺省按照方法的所有参数进行组合。
cacheManager:指定使用的cacheManager。
condition:缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存。
allEntries:是否清空所有缓存内容。
beforeInvocation:是否在方法执行前就清空。

4、过期时间设置方法
目的:设置Redis过期时间清理Redis中冗余数据。
在Spring注入时,可以对每个CacheName进行过期时间的配置。
<bean id=“redisCacheManager” class=“org.springframework.data.redis.cache.RedisCacheManager”
<constructor-arg name=“redisOperations” ref=“redisTemplate” /
<property name=“usePrefix” value=“true”/
<property name=“defaultExpiration” value="${redis.expiration}"/
<property name=“expires”
<map
<entry key=“demoCache” value=“100”/
<entry key=“demoCache2” value=“5000” /
</map
</property
</bean

defaultExpiration:表示这个SpringCacheManager中的统一过期时间,如果某个CacheName没有单独配置过期时间的话,过期时间就从这里取。defaultExpiration的默认值是0,表示永不过期。
Expires:中可对CacheName进行过期时间的单独配置。key对应的值便是CacheNames,value则是指定的过期时间。
如果没有进行过期时间配置的CacheName,该CacheName对应的数据都是永久有效的。
过期时间的单位都是秒
以上就是redis注解方式使用,感谢。