首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    大数据开发工程师面试题以及答案整理(二)

    Redis性能优化,单机增加CPU核数是否会提高性能 1、根据业务需要选择合适的数据类型,并为不同的应用场景设置相应的紧凑存储参数。 2、当业务场景不需要数据持久化时,关闭所有的持久化方式可以获得最佳的性能以及最大的内存使用量。 3、如果需要使用持久化,根据是否可以容忍重启丢失部分数据在快照方式与语句追加方式之间选择其一,不要使用虚拟内存以及diskstore方式。 4、不要让你的Redis所在机器物理内存使用超过实际内存总量的3/5。 我们知道Redis是用”单线程-多路复用io模型”来实现高性能的内存数据服务的,这种机制避免了使用锁,但是同时这种机制在进行sunion之类的比较耗时的命令时会使redis的并发下降。因为是单一线程,所以同一时刻只有一个操作在进行,所以,耗时的命令会导致并发的下降,不只是读并发,写并发也会下降。而单一线程也只能用到一个cpu核心,所以可以在同一个多核的服务器中,可以启动多个实例,组成master-master或者master-slave的形式,耗时的读命令可以完全在slave进行。

    01

    Java面试——Redis

    【1】完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中。 【2】数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的。 【3】采用单线程,避免不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗。 【4】使用多路IO复用模型,非阻塞IO。利用epoll可以同时监察多个流的 IO事件的能力,在空闲的时候,会把当前线程阻塞掉,当有一个或多个流有 IO事件时,就从阻塞态中唤醒,epoll就轮询哪些真正发生了事件的流,并且只依次顺序的处理就绪的流,这种做法就避免了大量的无用操作。多路指的是多个网络连接,“复用”指的是复用同一个线程。

    01
    领券