本文作者:kris

面试官:能说一说MySQL缓存池吗?-mysql缓存技术

kris 2025-01-20 03:06:05 1
面试官:能说一说MySQL缓存池吗?-mysql缓存技术摘要: mysql有缓存为什么还要使用redis?虽然MySQL具有自己的查询缓存机制,但它的性能并不理想,而且在大规模应用中会出现命中率低的情况。相比之下,Redis具有更高效的内存存储...

mysql有缓存为什么还要使用redis?

虽然MySQL具有自己的查询缓存机制,但它的性能并不理想,而且在大规模应用中会出现命中率低的情况。

相比之下,Redis具有更高效的内存存储和查询速度,可以大幅提升数据读取的速度和响应时间,尤其适用于高并发、大规模的应用场景。

此外,Redis还支持更丰富的数据类型和更灵活的数据操作,能够满足更多复杂的业务需求,因此在实际应用中,往往会选择同时使用MySQL和Redis,以充分发挥它们各自的优势,提高整体的系统性能和用户体验。

怎么把mysql的数据缓存进redis?

1,redis是一种内存性的数据存储服务,所以它的速度要比mysql快。

2,redis只支持String,hashmap,set,sortedset等基本数据类型,但是不支持联合查询,所以它适合做缓存。

面试官:能说一说MySQL缓存池吗?-mysql缓存技术

图片来源:网络

3,有时候缓存的数据量非常大,如果这个时候服务宕机了,且开启了redis的持久化功能,重新启动服务,数据基本上不会丢。

4,redis可以做内存共享,因为它可以被多个不同的客户端连接。

5,做为mysql等数据库的缓存,是把部分热点数据先存储到redis中,或第一次用的时候加载到redis中,下次再用的时候,直接从redis中取。

6,redis中的数据可以设置过期时间expire,如果这个数据在一定时间内没有被延长这个时间,那个一定时间之后这个数据就会从redis清除。所以,redis只是用来缓存数据库中经常被访问的数据,可以增加访问速度和并发量。而mysql只是提供一种数据备份和数据源的作用。

php redis做mysql的缓存,怎么异步redis同步到mysql数据库?

正常情况下是没有问题的,

但是有人用恶意脚本进行刷奖,也就是同一个人发起大量请求,1秒可能一两百的请求甚至更多,而且不只一个人刷奖。

问题出在1这一步

举个例子,假设每人只能抽一次奖,因为请求太快,同一人的a,b两个请求几乎同时来,a走完抽奖逻辑了,并且在抽奖表中插入记录的过程时,因为mysql的性能的问题,b去走1这一步是读不到表中的记录的,因为a的插入根本没有完成。所以b请求会再走一次抽奖逻辑。造成同一人抽奖两次,然后再插入抽奖表。

我关心的是能否a插入抽奖表的瞬间,b就能判断出抽奖表有数据。

所以我觉得问题是mysql写入的不够快,读取的不够快,所以我要采用redis做一层快速缓存。

我们做的抽奖是单一奖品百分之百中奖,只限制奖品数量,所以必须保证每人只能抽一次,而且尽量在程序层面去解决。

文章版权及转载声明

作者:kris本文地址:https://www.damoyx.com/p/25030.html发布于 2025-01-20 03:06:05
文章转载或复制请以超链接形式并注明出处大漠游侠网

阅读
分享