20221121

1、为什么不使用AVL树而使用红黑树?

2、Redis的内存淘汰策略?

        2.1、过期策略

        定期删除:

                Redis 会将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定期遍历这个字典来删除到期的 key。Redis 默认会每秒进行十次过期扫描(100ms一次),过期扫描不会遍历过期字典中所有的 key,而是采用了一种简单的贪心策略。1.从过期字典中随机 20 个 key;2.删除这 20 个 key 中已经过期的 key;3.如果过期的 key 比率超过 1/4,那就重复步骤 1;Redis默认是每隔 100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。注意这里是随机抽取的。为什么要随机呢?你想一想假如 redis 存了几十万个 key ,每隔100ms就遍历所有的设置过期时间的 key 的话,就会给 CPU 带来很大的负载。

        惰性删除

               所谓惰性策略就是在客户端访问这个key的时候,redis对key的过期时间进行检查,如果过期了就立即删除,不会给你返回任何东西。定期删除可能会导致很多过期key到了时间并没有被删除掉。所以就有了惰性删除。假如你的过期 key,靠定期删除没有被删除掉,还停留在内存里,除非你的系统去查一下那个 key,才会被redis给删除掉。这就是所谓的惰性删除,即当你主动去查过期的key时,如果发现key过期了,就立即进行删除,不返回任何东西.

        为什么需要内存淘汰策略?

                有了过期策略的后,就很容易理解为什么需要淘汰策略了,因为不管是定期采样删除还是惰性删除都不是一种完全精准的删除,就还是会存在key没有被删除掉的场景,所以就需要内存淘汰策略进行补充。   

        内存淘汰策略?

                1. noeviction:当内存使用超过配置的时候会返回错误,不会驱逐任何键

                2. allkeys-lru:加入键的时候,如果过限,首先通过LRU算法驱逐最久没有使用的键

                3. volatile-lru:加入键的时候如果过限,首先从设置了过期时间的键集合中驱逐最久没有使用的键

                4. allkeys-random:加入键的时候如果过限,从所有key随机删除

                5. volatile-random:加入键的时候如果过限,从过期键的集合中随机驱逐

                6. volatile-ttl:从配置了过期时间的键中驱逐马上就要过期的键

                7. volatile-lfu:从所有配置了过期时间的键中驱逐使用频率最少的键

                8. allkeys-lfu:从所有键中驱逐使用频率最少的键 

                Redis 采用近似的LRU算法以及在LRU的基础上发展来的LFU算法来进行内存淘汰。

3、System.out.println(new Integer(1000) == 1000) 输出true还是false?

int a = 100;
System.out.println(new Integer(100) == a); // true 自动才拆箱
System.out.println(new Integer(128) == 128); // true 自动才拆箱
System.out.println(new Integer(1000) == new Integer(1000)); // false 内存地址不同
Integer aa = 100; // 等价于 Integer aa = Integer.valueOf(100);
Integer bb = 100;
System.out.println(aa == bb); // true -127 - 128 走缓存
Integer cc = 129;
Integer dd = 129;
System.out.println(cc == dd); // false -127 - 128 缓存
System.out.println(aa == a); // 自动拆箱

4、并行和并发的区别?

        并发的关键是你有处理多个任务的能力,不一定要同时。并行的关键是你有同时处理多个任务的能力。个人认为它们最关键的点就是:是否是『同时』。

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值