当前位置: 首页 > news >正文

体面厂的分手应该体面

大家好,我是鸭鸭!

昨天鸭鸭正准备摸鱼,就看到海康威视要缩减研发区域的消息。

图片

32 个研发区域要缩减到 12 个?按目前小道消息流传的赔偿方案,10月走的话能拿 N+2 ,但临近年底,今年年终奖怕是没戏。

鸭鸭翻了翻最新消息,海康威视已经出来辟谣了,表示我们不存在大规模裁员,只是优化总部及重点销售城市的研发力量,因此相应调整了部分区域岗位设置。

优化嘛,大家都懂的。

海康威视这次“优化”不知道是不是出于近年营收和净利润增速放缓的原因,目前看来,可能涉及到上千名员工。

生活不易,鸭鸭叹气。

来看看今天的面试题,转换一下心情吧!

Redis 中有哪些内存淘汰策略?

回答重点

Redis 的内存淘汰策略一共有 8 种。8 种里面可以细分为两大类,即开启数据淘汰和不开启数据淘汰两大类,然后开启数据的那一类又可以进行细分,分为基于过期时间的淘汰策略以及全部数据的淘汰策略。

不淘汰数据(默认):

  • noeviction:当运行内存超过最大设置内存的时候,不会淘汰数据,而是直接返回报错禁止写入

设置了过期时间的数据淘汰:

  • volatile-random:随机淘汰掉设置了过期时间的 key
  • volatile-ttl:优先淘汰掉较早过期的 key
  • volatile-lru(redis3.0之前默认策略):淘汰掉所有设置了过期时间的,然后最久未使用的 key
  • volatile-lfu(redis4.0后新增):与上面类似,不过是淘汰掉最少使用的 key

所有数据的数据淘汰:

  • allkeys-random:随机淘汰掉任意的 key
  • allkeys-lru:淘汰掉缓存中最久没有使用的 key
  • allkeys-lfu(redis4.0后新增):淘汰掉缓存中最少使用的 key

在这里插入图片描述

扩展知识

不同淘汰策略适用场景

  • noeviction:适用于所有数据都被持久化或避免丢失任何数据的场景。
  • allkeys-lru:适用于希望保证最常访问的数据在内存中的场景。如电商促销活动中,某些商品会在短时间内被频繁访问,此时不会被淘汰。
  • allkeys-lfu:适用于希望保证访问频率最高的数据在内存中的场景。如社交媒体或直播类应用中,某些热点内容访问次数高,不能被淘汰。
  • allkeys-random:适用于对数据没有严格的优先级需求。
  • volatile-lru:同allkeys-lru,仅只关心设置了过期时间的键。
  • volatile-random:同allkeys-random,仅只关心设置了过期时间的键。
  • volatile-ttl:适用于对实时性较敏感的场景,比如存储用户会话等。
  • volatile-lfu:同allkeys-lfu,仅只关心设置了过期时间的键。

noeviction 演示

通过 config set maxmeory 先将其内存大小修改至 2 字节,然后设置一个超过 2 字节的字符串值 99999,其会报一个 OOM 的错误,并且不允许写入。

在这里插入图片描述

不过需要注意一个点,虽然其不支持写入数据,但是已有的数据并不会删除,其还是可以进行查询和删除操作,如下图所示,这里演示了 keys * 指令,发现其执行结果正常。

在这里插入图片描述

这里补充一个知识点,如果不设置最大内存大小或者设置最大内存大小为 0 的话,在 64 位操作系统下不限制内存大小,在 32 位操作系统下最多使用 3 GB 内存。

内存淘汰配置

可以通过修改 Redis 配置文件(redis.conf)中的 maxmemory-policy 参数来设置不同的内存淘汰策略(配置后需要重启 redis,且后续重启后配置不会丢失)。

例如:

maxmemory-policy allkeys-lru

或者通过 Redis 命令动态设置(立即生效,不需要重启,但是重启后就失效了):

CONFIG SET maxmemory-policy allkeys-lru

更多程序员面试题,欢迎来面试鸭~


http://www.mrgr.cn/news/50686.html

相关文章:

  • 基于Springboot+Vue的商城积分系统(含源码数据库)
  • 在Openshift(K8S)上通过EMQX Operator部署Emqx集群
  • 实景三维赋能自然资源精细化管理创新
  • 详解STL之 AVL tree --- “额外平衡条件的”二叉搜索树
  • Javascript扩展符号(...)使用说明
  • 腾讯图标点选模型识别
  • 10.3.1 QGIS多边形类型注释(Annotation)的应用与二次开发实现
  • 关于移动通信网络中各个组成部分的基础入门
  • 探索前端世界的奇妙库——带你领略奇奇怪怪的编程乐趣
  • 雷池社区版配置遇到问题不要慌,查看本文解决
  • Java面试宝典-WEB学习
  • Windows server 2022datacenter版本的j激活过程
  • 数据质量差的代价是什么?
  • TestNG二开总结 - (3) 开发自己的listener TestListenerAdapter
  • 系统思考—健身系统
  • 深度解析归并排序(Merge Sort)
  • Ubuntu如何显示pcl版本
  • C++ 游戏开发:从基础到进阶
  • comprehensive_tools之添加菜单
  • 老年霸总短剧深受年轻人喜爱,Soul App把握Z世代多元社交需求