当前位置:网站首页>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 {
// 省略其他代码
}
边栏推荐
猜你喜欢

自营商城提高用户留存小技巧,商城对接小游戏分享

淘宝客APP带自营商城本地生活CPS外卖优惠电影票话费更新渠道跟单生活特权V3

NB-IOT智能云家具项目系列实站

selenium学习

From "dual card dual standby" to "dual communication", vivo took the lead in promoting the implementation of the DSDA architecture

LaTeX使用frame制作PPT图片没有标号

System basics - study notes (some command records)

获取预训练模型的网络输入尺寸

NAT experiment

LaTeX uses frame to make PPT pictures without labels
随机推荐
The future of cloud gaming
lingo入门——河北省第三届研究生建模竞赛B题
Some basic method records of commonly used languages in LeetCode
NACOS配置中心设置配置文件
H5 的浏览器存储
Four ways to obtain Class objects through reflection
Vim tutorial: vimtutor
人人AI(吴恩达系列)
vs2017关于函数命名方面的注意事项
vscode笔记
云计算基础-学习笔记
Email management Filter emails
BIO, NIO, AIO practical study notes (easy to understand theory)
scikit-image图像处理笔记
uniapp打包次数限制怎么办?只需两步就能解决
Matplotlib绘图笔记
Transformer interprets and predicts instance records in detail
unity 将Text批量替换为TextMeshProUGUI
LeetCode中常用语言的一些基本方法记录
System basics - study notes (some command records)