Java面试八股文:Memcached面试题专场(持续更新中......)

当 web 程序需要访问后端数据库获取数据时会优先访问Memcached 内存缓存,如果缓存中有数据就直接获取返回前端服务及用户,如果没有数据(没有命中),在由程序请求后端的数据库服务器,获取到对应的数据后,除了返回给前端服务及用户数据外,还会把数据放到 Memcached 内存中进行缓存,等待下次请求被访问,Memcache 内存始终是数据库的挡箭牌,从而大大的减轻数据库的访问压力,提高整个网站架构的响应速度,提升了用户体验。需要前端 web 程序配合,只缓存热点的数据,即缓存经常被访问的数据。
摘要由CSDN通过智能技术生成

🍍全套Java金三银四面试题持续更新🍍

文末自取,建议关注收藏 不然下次找不到哟~

目录

1、Memcached 是什么,有什么作用?

memcached 服务在企业集群架构中有哪些应用场景?

一 、 作为数据库的前端缓存应用

二、作业集群的 session 会话共享存储。

2、Memcached 服务分布式集群如何实现?

3、Memcached 服务特点及工作原理是什么?

4、简述Memcached 内存管理机制原理?

Slab Allocation 的主要术语

集群架构方面的问题

5、memcached 是怎么工作的?

6、memcached 最大的优势是什么?

7、memcached 和MySQL 的 query cache 相比, 有什么优缺点?

8、memcached 和服务器的local cache(比如 PHP 的APC、mmap 文件等)相比,有什么优缺点?

9、memcached 的cache 机制是怎样的?

10、memcached 如何实现冗余机制?

11、memcached 如何处理容错的?

12、如何将 memcached 中 item 批量导入导出?

13、如果缓存数据在导出导入之间过期了,您又怎么处理这些数据呢?

14、memcached 是如何做身份验证的?

15、memcached 的多线程是什么?如何使用它们?


1、Memcached 是什么,有什么作用?

Memcached 是一个开源的,高性能的内存绶存软件,从名称上看 Mem 就是内存的意思,而Cache 就是缓存的意思。Memcached 的作用: 通过在事先规划好的内存空间中临时绶存数据库中的各类数据, 以达到减少业务对数据库的直接高并发访问, 从而达到提升数据库的访问性能,加速网站集群动态应用服务的能力。

memcached 服务在企业集群架构中有哪些应用场景?

一 、 作为数据库的前端缓存应用

a、完整缓存(易),静态缓存
例如: 商品分类(京东),以及商品信息,可事先放在内存里,然后再对外提供数据访问,这种先放到内存,我们称之为预热,(先把数据存缓存中),用户访问时可以只读取 memcached 缓存, 不读取数据库了。
b、执点缓存(难)
需要前端 web 程序配合,只缓存热点的数据,即缓存经常被访问的数据。先预热数据库里的基础数据, 然后在动态更新, 选读取缓存, 如果缓存里没有对应的数据, 程序再去读取数据库, 然后程序把读取的新数据放入缓存存储。
特殊说明 :
如果碰到电商秒杀等高并发的业务,一定要事先预热,或者其它思想实现,例如:称杀只是获取资格,而不是瞬间秒杀到手商品。
那么什么是获取资格?
就是在数据库中,把 0 标成 1.就有资格啦。再慢慢的去领取商品订单。 因为秒杀过程太长会占用服务器资源。如果数据更新,同时触发缓存更新,防止给用户过期数据。 对于持久化缓存存储系统,例如:redis,可以替代一部分数据库的存储, 一些简单的数据业务,投票,统计,好友关注,商品分类等。nosql= not only sql

二、作业集群的 session 会话共享存储。

Memcached 服务在不同企业业务应用场景中的工作流程
当 web 程序需要访问后端数据库获取数据时会优先访问Memcached 内存缓存,如果缓存中有数据就直接获取返回前端服务及用户,如果没有数据(没有命中),在由程序请求后端的数据库服务器,获取到对应的数据后,除了返回给前端服务及用户数据外,还会把数据放到 Memcached 内存中进行缓存,等待下次请求被访问,Memcache 内存始终是数据库的挡箭牌,从而大大的减轻数据库的访问压力,提高整个网站架构的响应速度,提升了用户体验。
当程序更新,修改或删除数据库中已有的数据时,会同时发送请求通知Memcached 已经缓存的同一个 ID 内容的旧数据失效,从而保证 Memcache中数据和数据库中的数据一致。
如果在高并发场合,除了通知 Memcached 过程的缓存失效外,还会通过相关机制,使得在用户访问新数据前,通过程序预先把更新过的数据推送到memcache 中缓存起来,这样可以减少数据库的访问压力,提升 Memcached中缓存命中率。
数据库插件可以再写入更新数据库后,自动抛给 MC 缓存起来,自身不Cache.

2、Memcached 服务分布式集群如何实现?

特殊说明:Memcached 集群和 web 服务集群是不一样的,所有 Memcached 的数据总和才是数据库的数据。每台 Memcached 都是部分数据。(一台 memcached 的数据, 就是一部分 mysql 数据库的数据)
a、程序端实现
程序加载所有 mc 的 ip 列表, 通过对 key 做 hash (一致性哈希算法)
例如:web1 (key)===>对应 A,B,C,D,E,F,G…..若干台服务器。(通过哈希算法实现)
b、负载均衡器
通过对 key 做 hash (一致性哈希算法)
一致哈希算法的目的是不但保证每个对象只请求一个对应的服务器, 而且当节点宕机,缓存服务器的更新重新分配比例降到最低。

3、Memcached 服务特点及工作原理是什么?

a、完全基于内存缓存的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值