• redis的数据结构有那些
    • 字符串 String
    • 字典:Hash
    • 列表:List
    • 集合:set
    • 有序集合:sortedSet
  • 如果大量的key设置在同一时间过期,一般需要注意什么
    • 大量的key过期时间过于集中,到了过期的那个时间点,redis可能会出现短暂的卡顿现象。一般在过期时间上加上随机数值。使过期时间分散一些。
  • Redis Save 与bgsave的区别
    • save命令:执行一个同步操作的命令,将当前redis实例的所有数据快照以RDB文件的形势保存到硬盘;保存是阻塞主进程,客户端无法连接redis,等save命令执行完后,主进程才开始工作,
    • bgsave:命令执行后立即返回ok,然后redis fork出一个新的子进程,原来的redis进程继续处理客户端请求,而子进程负责将数据保存到硬盘,然后退出;
  • redis如何做持久化
    • RDB:在指定的时间内,将内存中的数据快照写入硬盘实际操作是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储;
      • RDB的常用配置
        • save 900 1 #在900秒之后,如果至少有1个key发生变化,则dump内存快照
        • save 900 10 #在900秒之后,如果至少有10个key发生变化,则dump内存快照
        • save 600 1 #在600秒之后,如果至少有一个key发生变化,则dump内存快照
    • AOF:以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,
      • AOF持久化配置
        • appendfsync always #每次有数据修改发生时,都会写入AOF文件。
        • appendfsync everysec #每秒钟同步一次,默认配置
        • appendfsync no #从不同步,数据不会被持久化
    • bgsave做镜像全量持久化,aof做增量持久化;bgsave耗时比较长,停机时间长,从而导致在停机的时候会导致大量的数据丢失,所以需要aof配合来使用。在redis重启的时,会使用bgsave持久化文件重新构建内存,再使用aof重放近期操作的指令来完整恢复重启之前的状态。
      bgsave的原理:
      • fork:redis通过创建子进程来进行bgsave操作,
      • cow:copy on write。子进程创建后,父子进程共享数据段,父进程提供读写服务,写脏的页面数据会主键和子进程分离开来
  • Redis集群原理
    • 在redis的每一个节点上,有一个插槽(slot),可以理解为是一个可以存储两个数值的一个变量,这个变量的取值范围使0~16383。当对整个集群进行操作的的时候,存储的key会通过CRC16(key) mod 16384,得到的值就是这个key存储的slot。然后就去查找这个slot对应的redis节点。同样的,redis查询也是按照这种算法来确定redis节点的。
    • 插槽的数量计算: 13684 / redis集群节点数量。当需要redis节点需要扩展的时候,slot需要重新进行迁移。
 
 

Redis面试点的更多相关文章

  1. 使用redis构建可靠分布式锁

    关于分布式锁的概念,具体实现方式,直接参阅下面两个帖子,这里就不多介绍了. 分布式锁的多种实现方式 分布式锁总结 对于分布式锁的几种实现方式的优劣,这里再列举下 1. 数据库实现方式 优点:易理解 缺 ...

  2. Ignite性能测试以及对redis的对比

    测试方法 为了对Ignite做一个基本了解,做了一个性能测试,测试方法也比较简单主要是针对client模式,因为这种方法和使用redis的方式特别像.测试方法很简单主要是下面几点: 不作参数优化,默认 ...

  3. mac osx 安装redis扩展

    1 php -v查看php版本 2 brew search php|grep redis 搜索对应的redis   ps:如果没有brew 就根据http://brew.sh安装 3 brew ins ...

  4. Redis/HBase/Tair比较

    KV系统对比表 对比维度 Redis Redis Cluster Medis Hbase Tair 访问模式    支持Value大小 理论上不超过1GB(建议不超过1MB) 理论上可配置(默认配置1 ...

  5. Redis数据库

    Redis是k-v型数据库的典范,设计思想及数据结构实现都值得学习. 1.数据类型 value支持五种数据类型:1.字符串(strings)2.字符串列表(lists)3.字符串集合(sets)4.有 ...

  6. redis 学习笔记(2)

    redis-cluster 简介 redis-cluster是一个分布式.容错的redis实现,redis-cluster通过将各个单独的redis实例通过特定的协议连接到一起实现了分布式.集群化的目 ...

  7. redis 学习笔记(1)

    redis持久化 snapshot数据快照(rdb) 这是一种定时将redis内存中的数据写入磁盘文件的一种方案,这样保留这一时刻redis中的数据镜像,用于意外回滚.redis的snapshot的格 ...

  8. python+uwsgi导致redis无法长链接引起性能下降问题记录

    今天在部署python代码到预生产环境时,web站老是出现redis链接未初始化,无法连接到服务的提示,比对了一下开发环境与测试环境代码,完全一致,然后就是查看各种日志,排查了半天也没有查明是什么原因 ...

  9. nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)

    本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...

随机推荐

  1. Linux了解知识点

    Linux知识点   1.linux系统内核最早由芬兰大学生linus Torvalds开发. 2.Linux主要用于服务器端和嵌入式两个领域. 3.Linux的特点:开放性.多用户.多任务.良好的用 ...

  2. 2003server r2 + sql 2000 sp4 环境配置

    由于工作需求需要配置一个windows 2003 server r2 + sql 2000 sp4的环境: 一.2003server准备系统: msdn 下载 分清x86还是x64 一共有两个cd准备 ...

  3. No Spring WebApplicationInitializer types detected on classpath 问题的一种解决办法

    今天在idea中编译部署工程,tomcat报了这个错误: No Spring WebApplicationInitializer types detected on classpath 导致前端页面访 ...

  4. Python3.x在linux下print中文问题

    由于python3内部以Unicode实现,在默认非utf-8的Linux上print中文会报错UnicodeEncodeError. 由于系统默认非unicode,python3又以unicode实 ...

  5. React Native 填坑之神奇的报错,已解决

    下面对报错进行一下详细描述: 在debug时,点着点着,就会发生: 1.手机显示如下 : Attempted to transition from state `RESPONDER_INACTIVE_ ...

  6. 【安富莱二代示波器教程】第6章 示波器设计—双通道ADC驱动

    第6章        示波器设计—双通道ADC驱动 本章节为大家讲解示波器的ADC驱动,采用STM32自带ADC实现.关于STM32F429的ADC,可以说处处有地雷,不小心就踩上了,如果简单的使用, ...

  7. JVM性能调优监控命令jps、jinfo、jstat、jmap+jhat、jstack使用详解

    JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jinfo.jstat.jmap+jhat.jstack等小巧的工具,本博客希望能起抛砖 ...

  8. 选择 25k 的 996 还是 18k 的 965

    阅读本文大概需要 3.7 分钟. 文中部分内容来源:http://h5ip.cn/hSDk 最近的 996.ICU 话题持续在火爆,一般热点新闻的热度持续时间为一星期,这次是程序们的集体发声导致,戳中 ...

  9. [Swift]LeetCode572. 另一个树的子树 | Subtree of Another Tree

    Given two non-empty binary trees s and t, check whether tree t has exactly the same structure and no ...

  10. 花点时间顺顺Git(下)

    ### 进入正文前插个楼,因为vim的操作下面会频繁用到 vim的操作 1.输入i进入插入模式,对上一条commit信息的内容进行修改 2.按下ESC键,退出编辑模式,切换到命令模式. 3.保存修改并 ...