当前位置:网站首页>Redis的使用
Redis的使用
2022-08-05 05:25:00 【技术的搬运工】
前言
SprintBoot 项目中,用到的 redis 的方式有四种:
- 利用注解
- 利用 RedisTemplate
- 利用 CacheManager
- 利用 Jedis
这里只提供给大家可以使用的几种方式, 关于这四种方式网上的文章很多,这里不再赘述
1、注解方式
主要注解有:
- @Cacheable
- @Caching
- @CacheEvic
这里需要注意一下,@Cacheable 所在的 package 是 spring 的,
有些bug是因为使用了swagger里面的@Cacheable注解导致缓存无效。
import org.springframework.cache.annotation.Cacheable; // 正解的import
import springfox.documentation.annotations.Cacheable; // 错误的import
另外,需要注意同一个类内部调用缓存不生效和不同类调用缓存无法清除等问题,
可以参考以下文章:
SpringCache @Cacheable 在同一个类中调用方法,导致缓存不生效的问题及解决办法
2、RedisTemplate方式
使用这种方式操作redis,需要注意如果缓存的是一个对象,这对象的必须要是可序列化的,即必须要继承Serializable,否则缓存时会报序列化失败。
使用redisTemplate方式的一个好处提供的方法比较多,配置过期时间比较自由,可以发挥redis的诸多功能。
3、CacheManager方式
用由工具类CacheUtils来操作,UserUtils 里面用来 CacheUtils 缓存用户信息。
为了方便使用,我加了一个泛型方法
/**
* 获取缓存,没有则执行表达式,并将结果放入缓存
* @param cacheName
* @param key
* @param supplier
* @param <T>
* @return
*/
public static <T> T get(String cacheName, String key, Supplier<T> supplier) {
Object obj = get(cacheName, key);
if (obj != null) {
return (T) obj;
} else {
T result = supplier.get();
put(cacheName, key, result);
return result;
}
}
4、Jedis方式
Jedis 工具类
package org.linlinjava.litemall.common.utils;
/**
* @title: StringUtils.java
* @package cn.jeeweb.common.util
* @description: Jedis Cache 工具类
*/
public class JedisUtils {
// 省略其他代码
}
边栏推荐
- transport layer protocol
- Email management Filter emails
- Quick Start to Drools Rule Engine (1)
- Native JS takes you to understand the implementation and use of array methods
- uniapp打包次数限制怎么办?只需两步就能解决
- VS Code私有服务器部署(私有化)
- Late night drinking, 50 classic SQL questions, really fragrant~
- ES2020新特性
- NAT experiment
- Pytorch分布式并行处理
猜你喜欢
Chengyun Technology was invited to attend the 2022 Alibaba Cloud Partner Conference and won the "Gathering Strength and Going Far" Award
图像处理、分析与机器视觉一书纠错笔记
LaTeX使用frame制作PPT图片没有标号
NAT experiment
淘宝客APP带自营商城本地生活CPS外卖优惠电影票话费更新渠道跟单生活特权V3
D45_Camera assembly Camera
云计算基础-学习笔记
NB-IOT智能云家具项目系列实站
Teach you simple steps to achieve industrial raspberries pie properly installed RS232 USB drive
多行文本省略
随机推荐
Seven Ways to Center a Box Horizontally and Vertically
盒子模型中过度约束问题及其解决办法
el-progress implements different colors of the progress bar
The cocos interview answers you are looking for are all here!
Collision, character controller, Cloth components (cloth), joints in the Unity physics engine
Drools规则引擎快速入门(一)
What is Alibaba Cloud Express Beauty Station?
Does flink cdc currently support Gauss database sources?
LeetCode practice and self-comprehension record (1)
前置++和后置++的区别
花花省V5淘宝客APP源码无加密社交电商自营商城系统带抖音接口
docker部署完mysql无法连接
In-depth analysis if according to data authority @datascope (annotation + AOP + dynamic sql splicing) [step by step, with analysis process]
单片机原理与应用复习
【考研结束第一天,过于空虚,想对自己进行总结一下】
Media query, rem mobile terminal adaptation
Nacos集群的搭建过程详解
单片机期末复习大题
DevOps流程demo(实操记录)
selenium learning