有时候如果网站并发访问高, 一 个缓存如果失效, 可能出现多个进程同时查询DB, 同时 设置缓存的情况, 如果并发 确实很大, 这也可能造成DB压力过大, 还有缓存频繁更新的 问题 。 一 般处理方案是在查DB的时候进行加锁, 如果 KEY不存在, 就加锁, 然后查DB入缓存, 然后解锁;其他进程如果发现有锁就等待, 然后等解锁后再查缓存或者进
有时候如果网站并发访问高, 一 个缓存如果失效, 可能出现多个进程同时查询DB, 同时 设置缓存的情况, 如果并发 确实很大, 这也可能造成DB压力过大, 还有缓存频繁更新的 问题 。 一 般处理方案是在查DB的时候进行加锁, 如果 KEY不存在, 就加锁, 然后查DB入缓存, 然后解锁;其他进程如果发现有锁就等待, 然后等解锁后再查缓存或者进
入DB查询
Redis原理
1、为什么要使用缓存?
出于性能和并发的要求
我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存。这样, 后面的请求就去缓存中读取,使得请求能够迅速响应。
在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用 redis做一个缓冲操作,让请求先访问到redis,而不是直接访问数据库。
MySQL执行SQL的并发一般是1500QPS左右,而使用高效的缓存的话, Redis可以达到10W+的QPS。
2、讲一讲常用的缓存数据库(不限于
Redis)?
Redis
Redis
1、特点:
Redis 是一个基于内存的高性能键值存储系统(基于C编写)
它支持多种数据结构,包括字符串、哈希、列表、集合和有序集合。支持数据持久化、支持分布式、支 持事务等。
2、适用场景:
做缓存、实现消息队列、实现计数器、实现业务排行榜等。
MongoDB
1、特点:
MongoDB 是一个文档型数据库(BSON,JSON的拓展)
MongoDB的数据设计跟关系型数据库很类似(可以进行对应)。还支持类似于SQL的复杂查询。
2、适用场景:
内容管理系统(MongoDB的灵活数据模型使其非常适合存储和管理各种类型的内容,如文章、图片、 视频等)
实时分析和大数据处理(MongoDB支持复杂查询和聚合操作,它可以存储和处理大规模的日志数据、 用户行为数据,然后进行实时数据分析以及大数据处理)