- 什么是数据库缓存
Mysql等一些常见的关系型数据库的数据都存储再磁盘当中,在高并发的场景下,业务应用对Mysql产生的增、删、改、查的操作造成巨大的I/O开销和查询压力,这无疑对数据库和服务器都是一张巨大的压力,为了解决此类问题,缓存数据库的概念应运而生。
- 数据库缓存的作用
- 极大的解决数据库服务器的压力
- 提高应用数据的响应速度
- 常见的缓存形式
- 内存缓存
为了避免I/O开销,我们一般通常采用内存缓存 - 文件缓存
- 内存缓存
- 为什么要使用缓存
缓存数据是为了让客户端很少甚至不访问数据库服务器进行数据的查询,高并发下,能最大程度的降低对数据库服务器的访问压力。
用户请求 --->数据查询--->链接数据库并查询数据--->将数据缓存起来--->显示给客户端
用户再次请求或者新用户请求--->数据查询--->直接从缓存中获取数据--->显示给客户端
- 缓存场景的选择
通常来说,一些我们不经常改变的数据比较适合使用缓存
- 使用Memcache进行缓存
- Memcache工作原理
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像,视屏,文件以及数据库检索的结果等。简单的说就是将数据调到内存,然后从内存中读取,从而大大提高读取速度。 - Memcache的工作流程
先检查客户端的请求数据是否在Memcache中,如果有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在Memcache中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到Memcache中
- Memcache工作原理
- Redis 与 Memcache 的区别
- 性能其实相差不大
- 持久化必须使用Redis,Memcache没有办法进行持久化
- 要用到一些复杂数据结构的模拟就要使用到Redis,因为Redis提供的数据类型更加丰富
- Redis在2.0版本后增加了自己的VM特性,突破物理内存的限制;Memcache可以修改最大可用内存,采用LRU算法
- Memcache 在并发场景下,用cas保证一致性,Redis事物支持比较弱,只能保证事物中某个操作连续执行