zoukankan      html  css  js  c++  java
  • Redis原理知识点集锦

    1、Redis有哪些数据结构?

    字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。

    高级数据结构

    HyperLogLog:基数统计

    GEO:地理位置

    PUB/SUB:订阅发布

    2、Redis是单进程单线程的吗?

    是的。Redis是基于内存的单进程单线程KV数据库,基于C语言编写,不比单进程多线程的Memcached差。快的原因:

    (1)完全基于内存。(2)数据结构简单、对数据的操作也简单。

    (3)使用多路复用I/O模型(多个网络连接复用同一个线程)。利用select、poll、epoll同时观察多个网络流。Redis实现了一个轻量级的对select、poll、epoll进行调用的通用接口,linux下默认实现为epoll。

    3、假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?

    keys + 正则表达式。会阻塞服务器

    scan  模糊查询。不会阻塞服务器

    4、如果有大量的key需要设置同一时间过期,一般需要注意什么?

    key过期时间太集中会导致系统在那个时间卡顿,因此一般在时间上加一个随机值,使其分散。

    5、Redis如何做持久化?

    (1)bgsave做镜像全量持久化,耗时长,停机时会导致大量数据丢失,因此要配合aof。fork & cow。redis通过fork创建子进程来进行bgsave操作,父子进程共享数据段,父进程继续提供读写服务,写脏的页面逐渐和子进程分离开来。

    (2)aof做增量持久化,与磁盘的同步取决于sync属性的配置,可以写一条同步一次。

    6、Redis的同步机制?

    主从刚连接时做全量同步,在全量同步后开始做增量同步。

    全量同步:在连接后,从服务器发出同步请求,主服务器执行BGSave生成快照,将快照发送给从服务器,同时将这段时间执行的指令缓存起来,从服务器接收快照后,丢弃所有旧数据,载入快照,主服务器将缓冲区的命令发送给从服务器执行。

    增量同步:主服务器执行的命令都会发送给从服务器执行。

    原文链接:https://blog.csdn.net/L_BestCoder/article/details/79374101

  • 相关阅读:
    java项目路径获取
    String.getBytes()和new String()(string与byte[]的转换)
    Android生成一维码
    Android PullToRefresh (GridView 下拉刷新上拉加载)
    Android PullToRefresh (ListView GridView 下拉刷新) 使用详解
    Android 二维码扫描框 加四个角及中间横线自动下滑
    android 百度地图定位开发2
    android 百度地图定位开发1
    广播发送者&广播接收者介绍
    电脑配置 eclipse 环境变量
  • 原文地址:https://www.cnblogs.com/billmiao/p/9872169.html
Copyright © 2011-2022 走看看