2021php高级工程师面试题集

本文介绍了Redis的8种内存淘汰策略,包括LRU、LFU、随机淘汰等,并详细解析了MySQL的过期策略,如定期删除和惰性删除。此外,讨论了MySQL主从同步延迟问题及其解决方案,以及数据库性能优化的相关知识点,如选择性加载字段以减少网络传输和索引使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

redis 淘汰机制有哪些

Redis内存不足的缓存淘汰策略提供了8种。
noeviction:当内存使用超过配置的时候会返回错误,不会驱逐任何键
allkeys-lru:加入键的时候,如果过限,首先通过LRU算法驱逐最久没有使用的键
volatile-lru:加入键的时候如果过限,首先从设置了过期时间的键集合中驱逐最久没有使用的键
allkeys-random:加入键的时候如果过限,从所有key随机删除
volatile-random:加入键的时候如果过限,从过期键的集合中随机驱逐
volatile-ttl:从配置了过期时间的键中驱逐马上就要过期的键
volatile-lfu:从所有配置了过期时间的键中驱逐使用频率最少的键
allkeys-lfu:从所有键中驱逐使用频率最少的键
这八种大体上可以分为4中,lru、lfu、random、ttl。
lru:Least Recently Used),最近最少使用
lfu:Least Frequently Used,最不经常使用法
ttl:Time To Live,生存时间
random:随机
默认是noeviction。对于写请求不再提供服务,直接返回错误(DEL请求和部分特殊请求除外
eviction:“逐出;赶出;收回”。
volatile:“不稳定的”。
 

redis淘汰机制算法是什么

 redis有两种过期策略,定期删除和惰性删除

  • 定期删除:redis每个100ms随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。
    • 惰性删除:在获取某个key的时候,redis检查一下,如果该key设置了过期时间则判断该过期时间是否已经过期,如果过期了就直接删掉并不返回任何东西。

select * 和 select 字段在性能上没有什么差别

2、网络IO问题
select * 会查出所有的字段,有些是不需要的,当应用程序和服务器不在同一个局域网时,字段过多会影响网络传输的性能

3、索引问题

select col1 from table;
select * from table;

在col1字段有索引的情况下,mysql是可以不用读data,直接使用index里面的值就返回结果的。
但是一旦用了select *,就会有其他列需要读取,这时在读完index以后还需要去读data才会返回结果。这样就造成了额外的性能开销

mysql 主键索引和普通索引的区别

1、普通索引是最基本的索引类型,没有任何限制,值可以为空,仅加速查询。普通索引是可以重复的,一个表中可以有多个普通索引。

2、主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值;索引列的所有值都只能出现一次,即必须唯一。简单来说:主键索引是加速查询 + 列值唯一(不可以有null)+ 表中只有一个

mysql 主从同步延迟如何解决

2. MySQL数据库主从同步延迟是怎么产生的。

答:当主库的TPS并发较高时,产生的DDL数量超过slave一个sql线程所能承受的范围,那么延时就产生了,当然还有就是可能与slave的大型query语句产生了锁等待。

3. MySQL数据库主从同步延迟解决方案

答:最简单的减少slave同步延时的方案就是在架构上做优化,尽量让主库的DDL快速执行。还有就是主库是写,对数据安全性较高,比如 sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之类的设置,而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog,innodb_flushlog也 可以设置为0来提高sql的执行效率。另外就是使用比主库更好的硬件设备作为slave

golang协程是无序的如何实现有序

php array与golang的切片 数组的差别

php如何实现类型自动转换的 

php的垃圾回收机制

php如何做到订单分布式一致性 订单生成需要请求商品服务 ,红包服务,优惠券服务,三种服务同时成功才能生成订单如何实现

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值