码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Redis的使用


    前言

    SprintBoot 项目中,用到的 redis 的方式有四种:

    1. 利用注解
    2. 利用 RedisTemplate
    3. 利用 CacheManager
    4. 利用 Jedis 

    这里只提供给大家可以使用的几种方式, 关于这四种方式网上的文章很多,这里不再赘述

     1、注解方式

    主要注解有:

    1. @Cacheable
    2. @Caching
    3. @CacheEvic 

    这里需要注意一下,@Cacheable 所在的 package 是 spring 的,

    有些bug是因为使用了swagger里面的@Cacheable注解导致缓存无效。 

     import org.springframework.cache.annotation.Cacheable;    // 正解的import

    import springfox.documentation.annotations.Cacheable;       // 错误的import

    另外,需要注意同一个类内部调用缓存不生效和不同类调用缓存无法清除等问题,

    可以参考以下文章:

    发现@CacheEvict注解不生效问题探索

    SpringCache @Cacheable 在同一个类中调用方法,导致缓存不生效的问题及解决办法

    2、RedisTemplate方式  

     使用这种方式操作redis,需要注意如果缓存的是一个对象,这对象的必须要是可序列化的,即必须要继承Serializable,否则缓存时会报序列化失败。

    使用redisTemplate方式的一个好处提供的方法比较多,配置过期时间比较自由,可以发挥redis的诸多功能。

     3、CacheManager方式 

    用由工具类CacheUtils来操作,UserUtils 里面用来 CacheUtils 缓存用户信息。

    为了方便使用,我加了一个泛型方法

     /**

         * 获取缓存,没有则执行表达式,并将结果放入缓存

         * @param cacheName

         * @param key

         * @param supplier

         * @param

         * @return

         */

        public static T get(String cacheName, String key, Supplier 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 {

        // 省略其他代码

    }

  • 相关阅读:
    世上没有白走的路,白走的路是在试错|MAC中import的maven工程无法识别java程序以及依赖包无法加载等问题的解决办法
    春招面试准备笔记——NMS(非极大值抑制)算法
    C与C++的区别
    Vue语法模板续篇
    Spring之IOC(一)
    打开VsCode经常弹出:尝试在目标目录创建文件时发生一个错误:拒绝访问:重试 跳过这个文件(不推荐),关闭安装程序
    【分享 10 个日常使用的脚本】
    【项目】数据库事务与MQ发送一致性
    PyTorch 二维多通道卷积运算方式
    OS | 【四 文件管理】强化阶段大题解构
  • 原文地址:https://blog.csdn.net/IT_Boy_/article/details/126076836
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号