Redis实战篇---添加缓存(店铺类型添加缓存需求)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

一、Redis添加缓存

原先:

优化:

二、为店铺查询添加缓存

三、

java 复制代码
@Service
public class ShopTypeServiceImpl extends ServiceImpl<ShopTypeMapper, ShopType> implements IShopTypeService {


            @Autowired
            private StringRedisTemplate stringRedisTemplate;

            @Override
            public Result queryTypeList() {
                //1.在redis当中查询商铺类型列表缓存是否存在
                String key = RedisConstants.CACHE_SHOP_TYPE_KEY;
                List<String> shopTypeListJson = stringRedisTemplate.opsForList().range(key, 0, -1);
                //2.存在直接返回
                if(CollectionUtil.isNotEmpty(shopTypeListJson)){
                    //将所有的jsonList转化为对象list,并排序
                    List<ShopType> shopTypeList = shopTypeListJson.stream()
                            .map(str-> JSONUtil.toBean(str, ShopType.class))
                            .sorted(Comparator.comparingInt(ShopType::getSort))
                            .collect(Collectors.toList());
                    return Result.ok(shopTypeList);
                }
                //3. 不存在,查询数据库使用mp提供的接口
                List<ShopType> shopTypeList = query().orderByAsc("sort").list();

                //4.数据库中不存在, 返回错误
                if (CollectionUtil.isEmpty(shopTypeList)){
                    return Result.fail("商铺类型列表为空!");
                }
                shopTypeListJson = shopTypeList.stream().sorted(Comparator.comparingInt(ShopType::getSort))
                        .map(shopType -> JSONUtil.toJsonStr(shopType))
                        .collect(Collectors.toList());

                //5.保存到Redis当中
                stringRedisTemplate.opsForList().rightPushAll(key, shopTypeListJson);
                //6.返回信息
                return Result.ok(shopTypeList);
            }
        }

总结

添加缓存能从系统性能、资源消耗、用户体验等多个维度带来显著优化,核心是通过 "将高频访问的数据暂存到快速存储介质",减少对底层慢设备(如数据库、硬盘)的直接依赖

相关推荐
仍然.6 小时前
Redis---缓存
数据库·redis·缓存
Aloudata6 小时前
LookML 语义模型 vs 企业级独立语义层:BI 建模语言能否承担企业语义底座?
数据库·人工智能·数据分析·数据资产·dataagent
细嗅蔷薇@6 小时前
排序和分⻚(order by 、limit)
数据库·oracle
wdfk_prog7 小时前
LWIP教程 09:从 `tcp_slowtmr()` 到 Fast Retransmit——TCP 超时重传与重复 ACK
服务器·网络·数据库·网络协议·tcp/ip
逸模7 小时前
BIM在连锁餐饮装修中的应用:不只是画三维图
大数据·数据库·人工智能·物联网·建模
梦想平凡7 小时前
棋牌游戏技术实战(五):从对局事件重新执行规则,核对棋盘和最终状态
数据库·游戏·oracle
白露与泡影7 小时前
Oracle AI Database 26ai RAC 部署步骤、关键命令与一键脚本
数据库·人工智能·oracle
天天喝旺仔7 小时前
MySQL 索引原理与慢查询优化实战:从 B+ 树到执行计划调优
数据库·sql·mysql·性能优化
骇客野人8 小时前
微服务多级缓存架构设计
缓存·微服务·架构
liulilittle8 小时前
Linux 下 select 测试函数
linux·服务器·网络·数据库·c++·select·c