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引用
在这里插入图片描述
2、Spring配置
(1)启用缓存注解功能:
<cache:annotation-driven cache-manager=“SpringRedisCacheManager"/>
注:注解在controller中使用就配置在springMVC配置文件中,service中使用就配置在spring的配置文件中
(2)配置Redis连接信息:
在这里插入图片描述
Properties配置文件
在这里插入图片描述

(3)配置ObjectMapper ,注入SpringDataRedis和RedisCacheManager:
在这里插入图片描述

3、代码中使用注解

@Cacheable 作用和配置方法:
根据方法的请求参数对其结果进行缓存。根据Key进行判断,如已在缓存中,则不执行方法,直接返回结果
在这里插入图片描述
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 不同的是,它每次都会触发真实方法的调用
在这里插入图片描述
cacheNames:存储注解方法调用结果的缓存名称。
key:缓存的 key,可以为空(建议指定)。如果指定要按照 SpEL 表达式
编写,如果不指定,则默认按照方法的所有参数进行组合。
cacheManager:指定使用的cacheManager。
condition:缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者
false,只有为 true 才进行缓存

@CacheEvict 作用和配置方法:
根据一定的条件对缓存进行清空
在这里插入图片描述
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注解方式使用,感谢。

创作不易,大家帮忙关注一下公众号,感谢。

在这里插入图片描述

  • 32
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值