专栏首页Java患者JAVA面试锦囊(九)

JAVA面试锦囊(九)

● 说一下使用索引的一些技巧?

(1) 对于创建的多列索引(复合索引),不是使用的第一部分就不会使用索引。

(2) 对于使用like的查询,查询如果是’%xx’不会使用到索引。而’xx%’会使用到索引。

(3) 如果条件中有or,必须所有字段都必须单独使用时能使用索引,从可以走索引。

(4) 如果列类型是字符串,那一定要在条件中间数据使用引号引用起来,否则不会走索引。

(5) 如果mysql估计使用全表扫描要比索引快,则不使用索引(如表中只有一条数据)。

● 介绍下主从同步和读写分离?

一台数据库支持的最大并发连接数是有限的,如果用户并发访问太多,一台服务器满足不了要求就可以集群处理,MySQL的集群处理技术最常用的就是读写分离

主从同步:数据库最终会把数据持久化到磁盘,如果集群必须确保每个数据库服务器的数据是一致的。能改变数据库数据的操作都往主数据库去写,而其他的数据库从主数据库上同步数据。

读写分离:使用负载均衡来实现写的操作都往主数据去,而读的操作都往从的服务器去。

● 有没有使用过redis?

Redis是一个key-value的数据库。先存到内存中,会根据一定的策略持久化到磁盘,即使断电也不会丢失数据,支持的数据类型比较多。主要用了做缓存数据库和web集群中用来做中央缓存存放session

● redis有哪些使用场景?

缓存:把经常需要查询且很少修改的数据,放到读速度较快的空间(内存),以便下次访问 减少时间,减轻压力,减少访问时间。

计数器:redis中的计算器时原子性的内存操作,可以解决库存溢出问题,进销存系统库存溢出。

session缓存服务器:web集群式作为session缓存服务器。

● redis存储对象的方式?

Json字符串:需要把对象转化为json字符串,当作字符串处理,直接使用set、get来设置或者获取。优点是设置和获取比较简单。缺点没有提供专门的方法,需要把对象转换为json,可能存在性能问题。

字节:需要做做序列化,就是把对象序列化为字节保存。如果是存储百万级的大数据对象,建议采用存储序列化对象的方式。

如果是少量的数据级对象,建议使用json转换成String方式。

● 说说redis数据淘汰机制?

在redis中,允许用户设置最大使用内存大小server.maxmemory。在内存限定的情况是很有用的。譬如,在一台8g机子上部署4个redis服务点,每个服务点分配1.5G的内存大小,减少内存紧张的情况,由此获取更为稳健的服务。

Redis内存数据集大小上升到一定的时候,就会施行数据淘汰机制,redis提供6中数据淘汰机制

(1) volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰。

(2) volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选要过期的数据淘汰。

(3) volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰。

(4) allkeys-lru:从数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰。

(5) allkeys-random:从数据集(server.db[i].expires)中任意选择数据淘汰。

(6) no-enviction:禁止驱逐数据。

Redis驱逐某个键值对后,会删除这个数据并,并将这个数据变更消息发布到本地(AOF持久化)和从机(主从连接)。

本文分享自微信公众号 - Java患者(gh_3a16ffdedb6a),作者:茶谪仙

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 为什么要使用MyCat?

    数据库中间件,所谓中间件,是一类连接软件组件和应用的计算机软件,以便软件各部件之间的通信。

    用户7386338
  • MySQL索引底层(一)索引底层原理

    在操作系统中,我们执行一个指令去磁盘取数据,那么他会从磁盘取出4KB数据,这个4KB就是一个局部单位,而这4KB数据就是你的指令中取出的数据周围的数据,因为操作...

    用户7386338
  • HTTP向HTTPS演化的过程

    HTTP它出现的比较早,现在已经有HTTP/2.0了,但是使用最普遍的还是HTTP/1.1。

    用户7386338
  • 设计数据库:你不会想要做的7件事

    没有人告诉你这个原因的原因有两个:无知或冷漠。他们要么不知道它是坏的,要么他们不在乎。

    February
  • 设计数据库:7件你不想做的事情

    嗯,我关心糟糕的设计,因为我通常承担着让查询运行得很快并克服糟糕设计的限制的重担。作为一名数据专业人员,在过去的15年里,我见证了(并构建了)我的数据库设计分享...

    程序你好
  • 用零知识证明解决投票安全

    我们经常会遇到需要给别人投票的情况,比如有些公司会组织员工给领导做反向打分,但是往往员工都不敢“真心实意”的打分,为什么呢?归根结底是害怕所谓的匿名不是真匿名...

    qudamahcui
  • MySQL常见问题

    mysql数据库做分页用limit关键字,它后面跟两个参数startIndex和pageSize

    步履不停凡
  • Helm 3预览:探索我们的未来 - 第5部

    这是Helm 3预览:探索我们的未来博客文章7部中的第5部,讨论关于Chart依赖项以及Helm 2和Helm 3的差异。(查看我们之前关于发布管理的第4部。)

    CNCF
  • C语言——for循环和while循环的效率区别——类似哨兵思想

    在for循环中每次循环都需要对i进行是否越界的判断,而while循环查找只要对比一次即可,避免了查找过程中每次比较后都要判断查找位置是否越界的小技巧,看似与原先...

    用户4645519
  • 谷歌自动重建果蝇完整大脑

    今天,谷歌与霍华德 • 休斯医学研究所 (HHMI) 和剑桥大学合作,发布了一项深入研究果蝇大脑的重磅成果 —— 自动重建整个果蝇的大脑。他们使用数千个谷歌云 ...

    物流IT圈

扫码关注云+社区

领取腾讯云代金券