1. 什么是Redis

 Redis是开源的、基于内存的键值对数据库。

2. Redis 的基本操作

 set key value => mset, setbit, hset

 get key => mget(multiple), getbit, hget(hash),  hmgetall

 del key

 exists, type, keys 匹配, incr, decr, append, strlen, lpush, lpop, rpop, rpush, Irang

3. Redis 的 sentinel 上投票选举问题

 介绍:sentinel 模式主要为 Redis 提供了主从技术支持。

 Redis 提供 sentinel 是一个独立的进程,通过向多个 Redis 服务器发送命令而监控多个运行中的 Redis 实例(周期性发送PING),每个实例返回运行状态,如果检测到 master 泵机,将 slave 切换成 master,再通过发布订阅模式通知其他从服务器切换主机(修改配置文件)。

 除此之外,Redis 还可以使用多哨兵模式进行监控,各个哨兵之间还会进行监控。哨兵进程使用流言协议接收 master 是否下线的信息,并使用投票协议来决定是否执行故障迁移以及选用哪个服务器作为主服务器。

 故障切换(failover)是当单一哨兵检测到 master 泵机,发生主观下线。第一个哨兵发现后会向其他哨兵间歇性发送 “is master down by addr <ip><port>”获取响应信息,如果发现的哨兵到达一定数量(quorum预设值),即到达一致,进行failover操作,切换成功后会发生订阅模式,各个邵明把自己监控的从服务器切换主机,发生客观下线

 Failover:failover前等待0-5秒让其他哨兵实例准备。查找slave,选一个状态良好,权重最低的slave为master。该slave提升为master后,等待其他哨兵提升,都成功后,对slave配置文件进行修改,告知slave跟随新的master,一个一个同步。

 Leader 选举:master的选举以及slave的重配置和同步中涉及到重选 leader作为调度,通过更改配置文件中的参数实现配置,在“can-failover”的哨兵中按照runid字典顺序排序,选举最小的哨兵作为leader。

4. Redis 单线程结构优缺点?

 优势:避免线程切换产生切换CPU的时间;避免锁的开销。

 缺点:无法发挥多核CPU的性能;

 

 redis 使用 io 复用的 Epoll 和输入缓冲区把命令按照队列先进先出,让单线程高效处理多个请求。

5. Redis 的缺点导致那些命令在Redis上不可用?

 Keys、hgetall、scan等

6. Redis vs Memcached

 速度快,支持数据类型多,可以持久化数据。

7. Redis集群方案

 1. 代理twemproxy & codis:一致性hash算法转接redis

 2. 自带集群:hash槽,16384个哈希槽,每个key通过CRC16校验后 mod 16394来决定放哪个槽。主从复制,异步,不能保证强一致性

 也可以在自己的业务逻辑层写=。=

Redis 知识整理的更多相关文章

  1. Redis知识整理

    Redis知识整理 转自:https://www.cnblogs.com/rjzheng/p/9096228.html 1.单线程模型 Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返 ...

  2. Redis 知识 整理

    简介 安装 启动 注意事项 使用命令 通用命令 数据结构 字符串(string) 哈希(hash) 队列(list) 集合(set) 有序集合(zset) 位图(bitcount) 事务 订阅与发布 ...

  3. Redis相关知识整理

    Redis相关知识整理 1. Redis和MySQL的区别?a).mysql是关系型数据库,而redis是NOSQL,非关系型数据库.mysql将数据持久化到硬盘,读取数据慢,而redis数据先存储在 ...

  4. [Redis知识体系] 一文全面总结Redis知识体系

    本系列主要对Redis知识体系进行详解.@pdai Redis教程 - Redis知识体系详解 知识体系 学习资料 知识体系 知识体系 相关文章 首先,我们通过学习Redis的概念基础,了解它适用的场 ...

  5. js事件(Event)知识整理

    事件(Event)知识整理,本文由网上资料整理而来,需要的朋友可以参考下   鼠标事件 鼠标移动到目标元素上的那一刻,首先触发mouseover 之后如果光标继续在元素上移动,则不断触发mousemo ...

  6. Kali Linux渗透基础知识整理(四):维持访问

    Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...

  7. Kali Linux渗透基础知识整理(二)漏洞扫描

    Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...

  8. wifi基础知识整理

    转自 :http://blog.chinaunix.net/uid-9525959-id-3326047.html WIFI基本知识整理 这里对wifi的802.11协议中比较常见的知识做一个基本的总 ...

  9. 数据库知识整理<一>

    关系型数据库知识整理: 一,关系型数据库管理系统简介: 1.1使用数据库的原因: 降低存储数据的冗余度 提高数据的一致性 可以建立数据库所遵循的标准 储存数据可以共享 便于维护数据的完整性 能够实现数 ...

随机推荐

  1. 微信公众平台开发教程(三)_OAuth2.0认证

    一.微信授权认证 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 关于网页授权的两种scope的区别说明 1.以snsapi_base为s ...

  2. js时间国际化

    d = new Date(); localTime = d.getTime();localOffset = d.getTimezoneOffset() * 60000; utc = localTime ...

  3. ABP 2.0.2 升到 2.2.1

    1.选择解决方案 右键 管理 nuget 更新 输入abp 这里只升级 abp的包 点升级 2.update-database  可能需要你添加个迁移(这一步可能不需要) 3.Core 项目下面的Au ...

  4. Blender学习

    学习顺序(下面为引用他人的视频或博客) 51个必须知道的blender操作 https://www.bilibili.com/video/av4619930/ Blender常用快捷键一览表 http ...

  5. 2018-2019-20175205 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告

    2018-2019-20175205 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>&l ...

  6. centos7将网卡名字改成eth样式

    ll /etc/sysconfig/grub lrwxrwxrwx 1 root root 17 Jun 12 2016 /etc/sysconfig/grub -> /etc/default/ ...

  7. Qt文档阅读笔记-QGraphicsItem::paint中QStyleOptionGraphicsItem *option的进一步认识

    官方解析 painter : 此参数用于绘图;option : 提供了item的风格,比如item的状态,曝光度以及详细的信息:widget : 想画到哪个widget上,如果要画在缓存区上,这个参数 ...

  8. 一个基于nuxt的基础架子,支持aixos,sass,es6,elementUI

    nuxt官网:Nuxt.js docs github: 项目地址 项目版本说明 package 版本号 "babel-cli" "^6.26.0" " ...

  9. 0x11栈之Editor

    参考链接:https://blog.csdn.net/SSLGZ_yyc/article/details/81700623 对顶栈的思想: 建立两个栈,栈A存储从序列开头到当前光标的位置的一段序列,栈 ...

  10. chrome浏览器导出文件提示病毒扫描失败

    转自https://zhidao.baidu.com/question/758059392558639324.html 1.windows+R,打开运行 2.输入regedit.exe,确定,打开注册 ...