首页 > 数据库 >java——redis随笔——实战——商户查询缓存

java——redis随笔——实战——商户查询缓存

时间:2023-10-15 11:34:36浏览次数:45  
标签:缓存 return redis Result key java shopById id

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

把key做了下代码优化:

 

    /**
     * 根据id查询商铺信息
     * @param id 商铺id
     * @return 商铺详情数据
     */
    @Override
    public Result queryById(Long id) {

        // key要唯一 就用id
        String key = CACHE_SHOP_KEY + id;

        // 1 从redis查询商铺缓存  以店铺ID为key
        String shopJson = stringRedisTemplate.opsForValue().get(key);

        // 2 判断是否存在
        // null "" "\t\n" 都会被认为是false
        if (StrUtil.isNotBlank(shopJson)) {
            // 3 存在直接返回  JSON格式变回类对象
            Shop shop = JSONUtil.toBean(shopJson, Shop.class);
            return Result.ok(shop);
        }

        // 4 shop不存在 根据id查询数据库
        Shop shopById = iShopService.getById(id);

        // 5 不存在 返回错误
        if (shopById == null){
            return Result.fail("该商铺不存在");
        }

        // 6 存在 写入redis
        stringRedisTemplate.opsForValue().set(key,JSONUtil.toJsonStr(shopById));

        // 7 返回
        return Result.ok(shopById);
    }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

标签:缓存,return,redis,Result,key,java,shopById,id
From: https://www.cnblogs.com/xiaobaibailongma/p/17765442.html

相关文章

  • java项目实践-webapp-mytomcat-day16
    目录1.http协议2.自定义的web框架3.具体实现4.启动1.http协议CS架构建立连接“三次握手”断开连接“四次挥手”三次握手:client:可以与你建立连接吗?server:可以的client:我也可以了四次挥手:client:我要断开server:可以断开server:我要断开client:可以断开双方都有......
  • java学习笔记day03
    java学习笔记day03数据类型public class 数据类型 {  public static void main(String[] args){    //整数类型    byte num1 = 10;    short num2 = 200;    int num3 = 3000;    long num4 = 400000L;    ......
  • JavaWeb-Maven的应用
    目录1.MavenPOM2.pom.xml内容MavenPOMPOM(ProjectObjectModel,项目对象模型)是Maven工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。执行任务或目标时,Maven会在当前目录中查找POM。它读取POM,获取所需的配置信息,然......
  • 从零开发一款图片编辑器(使用html5+javascript)
    最近开发了一个图片编辑器,类似于photoshop的网页版,源码参考自GitHub上,顺便也总结下使用html+js开发一个编辑器需要用到哪些知识点。预览地址:https://ps.gitapp.cngithub地址:https://github.com/photopea/photopea架构设计选型:jquery.js和blueimp-canvas.js都是强大的......
  • JAVA大文件(10G以上)的上传下载实现技术
    在现代互联网应用中,经常需要上传和下载大文件,如视频、音频、数据库备份等等。对于Java开发者来说,处理大文件上传下载是一个非常常见的需求。然而,由于Java内存限制和网络传输速度的限制,处理大文件上传下载需要一些特殊的技术。本文将介绍一种基于流的方式来实现Java大文件的上传和......
  • 深入理解 JavaScript 时间分片:原理、应用与代码示例解析
    JavaScript时间分片(TimeSlicing)是一种优化技术,用于将长时间运行的任务拆分为多个小任务,以避免阻塞主线程,提高页面的响应性和性能。本文将详细解释JavaScript时间分片的原理、应用场景,并通过代码示例帮助读者更好地理解和应用该技术。本文首发于:kelen.cc概念时间分片(TimeSl......
  • Javascript、axios、vue基础命令快速学习
    1.js:JavaScript基础学习JavaScript基础学习简单案例1.点击img1,则展示img1图片默认,点击img2则展示img2图片2.输入框鼠标聚焦onfocus后,显示小写toLowerCase(),失去焦点onblur后显示大写toUpperCase()3.点击全选按钮,所有复选框为被选中状态,点击反选则取消勾选状态JavaScrip......
  • JavaWeb-JDBC增删改查
    目录1.MySQL准备2.JDBC项目3.JDBC新增4.JDBC查询5.JDBC修改6.JDBC删除内容MySQL准备新建表t_personCREATETABLE`t_person`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'主键',`name`varchar(30)NOTNULLCOMMENT'姓名',`birthdate`datetim......
  • Java内存区域
    图示Java1.8以前JDK1.8:说明线程私有的:程序计数器机栈本地方法栈线程共享的:堆方法区直接内存(非运行时数据区的一部分)程序计数器程序计数器程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条......
  • Java基础-初识JDBC
    目录1.JDBC简介2.JDBC项目3.JDBC的导入4.JDBC的使用内容JDBC简介什么是JDBCJDBC的全称是Java数据库连接(JavaDatabaseconnect),它是一套用于执行SQL语句的JavaAPI。应用程序可通过这套API连接到关系数据库,并使用SQL语句来完成对数据库中数据的查询、更新和删除等......