热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Redis企业应用场景

先操作数据库,再删缓存。客户端请求的数据的数据不在数据库中,这样缓存永远也不能生效,请求一直到数据库层,一般可能是黑客攻击。做好数据的基础校验。同一时刻存在大量的key同事失效或r

文章转自华为云社区,作者:kaliarch;原文链接:https://bbs.huaweicloud.com/blogs/352910


Redis 企业应用场景


一 短信登录

基于Redis实现共享session登录



  • 选择合适的数据结构

  • 选择合适的key

  • 选择合适的存储粒度


二 数据缓存


2.1 缓存更新策略



  • 内存淘汰:利用Redis内置的内存淘汰机制,当内存不足时自动淘汰部分数据,下次查询时更新数据。

  • 超时剔除:给数据添加TTL时间,到期后自动删除。

  • 主动更新:编写代码,修改数据的时候同时更新缓存。

先操作数据库,再删缓存。


2.2 缓存问题

2.2.1 缓存穿透

概念



  • 客户端请求的数据的数据不在数据库中,这样缓存永远也不能生效,请求一直到数据库层,一般可能是黑客攻击。

解决方案



  • 缓存空对象:实现简单,维护方便,但有额外的内存消耗,可能短时间数据不一致。

  • 布隆过滤器:根据算法缓存索引,如果不存在则不存在,返回存储也有一定程度不存在的可能,内存占用小,没有对于的key,存在误判

  • 增加ID的复杂度,避免被猜到ID的规律。

  • 做好数据的基础校验。

  • 用户权限。

  • 热点参数的限流。

2.2.2 缓存雪崩

概念



  • 同一时刻存在大量的key同事失效或redis宕机,导致大量请求到达数据库。

解决方案



  • 给不同的key的ttl添加随机值

  • 利用redis集群提升高可用性

  • 给缓存业务添加降级限流策略

  • 给业务添加多级缓存


2.3 缓存击穿

概念



  • 缓存击穿问题也称为热点key问题,一个被高并发访问并且缓存重建业务较复杂的key突然失效,无数的请求访问会瞬间给数据库带来巨大压力。

解决方案



  • 互斥锁

  • 逻辑过期


三 消息队列实现秒杀


3.1 全局唯一ID生成策略



  • UUID

  • Redis自增

  • snowflake算法

  • 数据库自增


3.2 并发线程安全


3.3 乐观锁

版本法

CAS法:基于数据逻辑进行判断。


四 分布式锁

多进程可见,并且互斥的锁


4.1 特征



  • 多进程可见

  • 互斥

  • 高可用

  • 高性能

  • 安全性


4.2 实现分布式锁

获取锁



  • 互斥:确保只有一个线程获取锁(set nx ex,获取锁的时候存入线程ID)

释放锁



  • 手动释放:释放的时候判断是否与当前线程ID一致,如果不一致则不释放。

  • 超时释放:获取锁时添加超时时间



推荐阅读
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了 MySQL 的查询处理流程,包括从客户端连接到服务器、查询缓存检查、语句解析、查询优化及执行等步骤。同时,深入探讨了 MySQL 中的乐观锁机制及其在并发控制中的应用。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 配置Windows操作系统以确保DAW(数字音频工作站)硬件和软件的高效运行可能是一个复杂且令人沮丧的过程。本文提供了一系列专业建议,帮助你优化Windows系统,确保录音和音频处理的流畅性。 ... [详细]
  • 本文深入探讨了 Redis 的两种持久化方式——RDB 快照和 AOF 日志。详细介绍了它们的工作原理、配置方法以及各自的优缺点,帮助读者根据具体需求选择合适的持久化方案。 ... [详细]
  • 本文探讨了Java编程的核心要素,特别是其面向对象的特性,并详细介绍了Java虚拟机、类装载器体系结构、Java类文件和Java API等关键技术。这些技术使得Java成为一种功能强大且易于使用的编程语言。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
author-avatar
手机用户2502934681
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有