缓存基本思想

1. 缓存的使用场景

1.1 数据库缓存,减轻数据库服务器压力

一般情况下数据存在数据库中,应用程序直接操作数据库。

当访问量上万,数据库压力增大,可以采取的方案有:

  • 读写分离,分库分表
  • 当访问量达到10万、百万,需要引入缓存。
    将已经访问过的内容或数据存储起来,当再次访问时先找缓存,缓存命中返回数据。
    不命中再找数据库,并回填缓存。
    在这里插入图片描述

1.2 提高系统响应

数据库的数据是存在文件里,也就是硬盘。与内存做交换(swap)

在大量瞬间访问时(高并发)MySQL 单机会因为频繁 IO 而造成无法响应。MySQLInnoDB 是有行锁(更新)

将数据缓存在 Redis 中,也就是存在了内存中。内存天然支持高并发访问。可以瞬间处理大量请求。 QPS 到达 11万/S读请求,8万/S些请求

1.3 做Session分离

传统的 session 是由 tomcat 自己进行维护和管理。集群或分布式环境,不同的 tomcat 管理各自的 session。只能在各个 tomcat 之间,通过网络和 IO进行 session 的复制,极大的影响了系统的性能。

  • 各个 Tomcat 间复制 session,性能损耗
  • 不能保证各个 TomcatSession 数据同步

将登录成功后的Session信息,存放在Redis中,这样多个服务器(Tomcat)可以共享Session信息。Redis的作用是数据的临时存储
在这里插入图片描述

1.4 做分布式锁(Redis)

一般讲锁是多线程的锁,是在一个进程中的,多个进程(JVM)在并发时也会产生问题,也要控制时序性,可以采用分布式锁。使用 Redis实现 setNX(命令在指定的 key 不存在时,为 key 设置指定的值)
命令:SETNX KEY_NAME VALUE

1.5 做乐观锁(Redis)

同步锁和数据库中的行锁、表锁都是悲观锁,悲观锁的性能是比较低的,响应性比较差;高性能、高响应(秒杀)采用乐观锁,Redis可以实现乐观锁 watch + incr

2. 什么是缓存

缓存原指 CPU 上的一种高速存储器,它先于内存与 CPU 交换数据,速度很快;现在泛指存储在计算机上的原始数据的复制集,便于快速访问。

在互联网技术中,缓存是系统快速响应的关键技术之一;以空间换时间的一种技术(艺术)

3. 大型网站中缓存的使用

单机架构LAMP(Linux+apache+MySQL+PHP)、JavaEE(SSM),访问量越大,响应力越差,用户体验越差

引入缓存、示意图如下:
在这里插入图片描述
在大型网站中从浏览器到网络,再到应用服务器,再到数据库,通过在各个层面应用缓存技术,大大提升了系统性能和用户体验。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小松の博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值