一、写在前

知识学了就忘!不用就忘!我太健忘!特此记录!用于复习打卡!Redis干就完事了!

二、来辣!

  1. Redis做异步队列:一般list结构做队列,rpush生产消息,lpop消费消息,当lpop没有消息的时候,要适当sleep一会儿;如果不sleep,就用blpop,会阻塞;生产一次消费多次,使用pub/sub主题订阅模式,可以实现1:N的消息队列,缺点:消费者下线的时候,消息会丢。

  2. 延时队列:使用sortedset,拿时间戳作为score,消息内容作为key调用zadd来生产消息,消费者用zrangebyscore指令获取N秒前的数据轮询处理。

  3. Redis分布式锁:拿setnx来争抢锁,抢到之后再用expire给缩加一个过期时间防止锁忘记释放。如果在setnx之后,expire之前进程意外crash或者重要维护了,咋办:锁永远得不到释放,咋办:set指令有复杂的参数,可以把setnx和expire合成一条指令执行哒。

  4. memched与redis区别:redis支持string,list,set,zset,hash,HyperLogLog,Geo,Pub/Sub。memcached支持简单字符串;redis更快;redis支持持久化。

  5. redis没有使用一致性hash,而是引入哈希槽的概念:redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放哪个槽,集群的每一个节点负责一部分hash槽。

  6. redis集群方案什么情况下会导致整个集群不可用:三个节点的集群,在没有复制模型的情况下,如果B节点挂了,整个集群会因为缺少5501-11000这个范围的槽而不可用。

  7. 为什么这么快:完全基于内存;数据结构简单,对数据操作简单;采用单线程,避免不必要的上下文切换和竞争条件,也不存在多进程和多线程导致的切换而消耗CPU,不存在加锁释放锁操作,也不会死锁;使用I/O复用模型,非阻塞IO;自己构建了VM机制,一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。

  8. 场景:计数器;缓存;session缓存;全页缓存(FPC);消息队列(发布订阅);分布式锁(setnx或RedLock);set交集、并集找共同好友;zset可以实现有序,排行榜等功能。

  9. RDB:默认,将内存中的数据以快照方式保存到硬盘,产生dump.rdb文件。优点:只有一个文件,方便持久化;容灾性好,一个文件可以保存到安全的磁盘。性能最大化,fork子进程完成写,主进程继续处理命令,IO最大化,主进程没有任何IO,高性能。缺点:安全性低,如果持久化之间挂了,丢一部分数据。

  10. AOF:append-only file。两种方式同时开启,恢复数据会先用AOF。优点:数据安全,可以配置appendfsync属性,有always,每进行一次命令就记录一次;通过append模式写文件,即时中途宕机,可以通过redis-check-aof工具解决一致性问题;rewrite模式,(文件过大时会对命令进行合并重写),没有rewrite之前,可以删除某些命令,(比如误操作的flushall)。缺点:文件大,恢复慢;数据集大的时候,比rdb启动效率低。

  11. 当做缓存时如何扩容:使用一致性哈希实现动态的扩容缩容。

  12. 当做持久化存储使用,必须使用固定的keys-to-nodes映射关系,节点的数量一旦确定就不能变。

  13. 过期键的删除策略:1)定时过期:每个设置过期时间的key都要创建一个定时器,到过期时间就会立即清除。立即清除,对内存友好。但会占用大量的cpu资源,影响响应时间和吞吐量。2)惰性过期:当访问的时候,才去判断是否已过期,过期就清除。可最大化节省cpu资源,对内存不友好;但是极端情况下,可能出现大量过期的key未被清理,占用大量内存。3)定期过期:折中方案,每隔一定时间,会扫描一定数量的expires字典中一定数量的key,并清除其中过期的。(expires字典会保存所有设置了过期时间的key的过期时间数据,其中,key是指向键空间中某个键的指针,value是该键的毫秒精度的UNIX时间戳表示的过期时间。键空间是指redis中存储的所有键。)默认同时使用了惰性过期和定期过期。

  14. expire设置过期时间,persist设置永久有效。

  15. 内存淘汰策略:(用于缓存的内存不足时,怎么处理新写入且需要额外申请空间的数据)。1)noevication,禁止淘汰,写入会报错。2)allkeys-lru:全键空间内,移除最近最少使用的(常用)。3)allkeys-random:随机移除。4)volatile-lru:设置了过期的键空间中,移除最近最少使用的。5)volatile-random:随机移除。6)volatile-ttl:设置了过期的键空间中,优先移除有更早过期时间的key。

  16. 内存优化:合理利用集合类型,小的k/v可以以更紧凑的方式存放,尽可能使用散列表(hashes),散列表使用的内存小。尽可能将数据抽象到一个散列表,比如用户,的名称,密码等所有信息存储到一个散列表。

  17. 事务:事务中的所有命令都会被序列化,就是一次性、顺序性、排他性的执行一个队列中的一系列命令。三个阶段:事务开始MULTI-命令入队-事务执行EXEC。执行过程中,如果服务端收到EXEC、DISCARD、WATCH、MULTI之外的请求,会把请求放入对列中排队。WATCH命令是一个乐观锁,可以为redis事务提供CAS行为。可以监控一个或多个键,一旦其中有一个键被修改、删除,之后的事务不会被执行,监控一直持续到EXEC命令。MULTI用于开启事务,总是返回OK,开启后,可以继续向服务器发送任意多行命令,不会立即执行,被放队列,当EXEC被调用时才执行。EXEC用于执行事务块内的命令,返回所有事务块中命令的返回值,按命令执行的先后顺序排序,当操作被打断,返回空值。DISCARD可以清空事务列表,并放弃执行事务,并且客户端会从事务状态中退出。UNWATCH可以取消watch对所有key的监控。

  18. redis的事务总是支持ACID中的一致性和隔离性,其他不支持。当运行在_AOF_持久化模式下,且appendfsyn选项为always时,事务也具有 耐久性。

  19. 单条命令是原子性执行的,基于Lua脚本,可以保证脚本内命令一次性、顺序执行完成。但是事务不保证原子性,且没有回滚。事务的任意命令执行失败,其余命令也会继续执行。

三、写在后

只是简要知识点概括,看到就能回忆起相关内容为最妙~~直接评论打卡,开整!!!

Redis--回顾提要的更多相关文章

  1. Redis回顾

    之前有两篇文章着重介绍了redis集群的搭建和redis与spring的整合,一个月过去了,现在有些忘记了,今天又拿过来稳固一下,发现有很多的东西都忘记了. 资料汇总下载 首先安装ruby环境 安装过 ...

  2. 大数据入门第十五天——HBase整合:云笔记项目

    一.功能简述 1.笔记本管理(增删改) 2.笔记管理 3.共享笔记查询功能 4.回收站 效果预览: 二.库表设计 1.设计理念 将云笔记信息分别存储在redis和hbase中. redis(缓存):存 ...

  3. $Django 路飞之显示视频,Redis存购物车数据,优惠卷生成表,优惠卷的一个领取表。(知识小回顾)

    知识小回顾之json序列化问题 精髓:支持python的几种数据类型(注意不是对象,不能放对象),其次是tuple变list. ensure_ascii:默认值True,如果dict内含有non-AS ...

  4. $Django redis内存数据库 (知识回顾cmd切换目录)

    知识小回顾 #切换盘 C:\Users\WangDong>f: F:\> #切换文件 F:\>cd redis F:\redis> #返回上一级 F:\DJ\dj8>cd ...

  5. python开发学习-day10(select/poll/epoll回顾、redis、rabbitmq-pika)

    s12-20160319-day10 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...

  6. 第2节 storm实时看板案例:10、redis的安装使用回顾

    2.redis的持久化机制: redis支持两种持久化机制:RDB  AOF RDB:多少秒之内,有多少个key放生变化,将redis当中的数据dump到磁盘保存,保存成一个文件,下次再恢复的时候,首 ...

  7. [项目回顾]基于Redis的在线用户列表解决方案

    迁移:基于Redis的在线用户列表解决方案 前言: 由于项目需求,需要在集群环境下实现在线用户列表的功能,并依靠在线列表实现用户单一登陆(同一账户只能一处登陆)功能: 在单机环境下,在线列表的实现方案 ...

  8. Memcached与Redis对比,Redis基础笔记回顾

    Memcached 1.为什么要把数据存入内存?快 2.Memcached和Redis的区别 (1)Memcached缓存.Redis数据库,Memcached不支持持久化到磁盘 (2)Redis提供 ...

  9. redis linux安装过程回顾

    1,官网wget http://download.redis.io/releases/redis-3.2.9.tar.gz 2,解压 tar zxf redis-3.2.9.tar.gz 后进入解压后 ...

  10. 13 110内容回、111内容回顾、redis操作

    redis加入路飞项目

随机推荐

  1. 齐博x1齐博首创钩子的使用方法

    齐博X1有两套钩子体系,第一套是基于TP思路设计的.跟外面的大同小异.现在重点讲一下第二套我们首创的使用方法. 首先说一下如何埋钩子,这个跟TP思路的钩子类似,就是在页面的任何地方加入如下代码即可如下 ...

  2. pytorch 环境配置

    一.下载Anaconda 二.添加清华镜像 # 添加清华镜像 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anac ...

  3. 关系抽取--Relation Extraction: Perspective from Convolutional Neural Networks

    一种使用CNN来提取特征的模型,通过CNN的filter的大小来获得不同的n-gram的信息,模型的结构如下所示: 输入 输入使用word2vec的50维词向量,加上 position embeddi ...

  4. ML-决策树

    信息增益 香农熵: 指混乱程度,越混乱,值越大 信息增益(information gain): 在划分数据集前后信息发生的变化称为信息增益(香农熵的差) 基尼不纯度也可度量集合的无序程度 香农熵的计算 ...

  5. CSS 动画一站式指南

    CSS 动画一站式指南 目录 CSS 动画一站式指南 1. CSS 动画 1.1 变换 1.1.1 变换属性介绍 1.1.2 变换动画实践 1.2 过渡 1.2.1 过渡属性介绍 1.2.2 过渡动画 ...

  6. 加速乐逆向 cookies 参数

    简介 加速乐用于解决网站访问速度过慢及网站反黑客问题. 爬取使用该技术网站时需要携带特定的cookies参数(有的是__jsl_clearance_s,有的__jsl_clearance),本项目以一 ...

  7. ajax-Xhr

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 万字详解JVM,让你一文吃透

    摘要:本文将带大家详细地了解关于JVM的一些知识点. 本文分享自华为云社区<[JVM]关于JVM,你需要掌握这些 | 一文彻底吃透JVM系列>,作者: 冰 河 . JDK 是什么? JDK ...

  9. 设置CMD命令的初始目录

    本文提供两种方式,第一种通过打开桌面上的快捷方式实现,第二种可以通过 CMD 命令直接进入. 快捷方式 "开始 ---> 程序 ---> 附件",右键单击 " ...

  10. jquery 中的 $(“#”) 与 js中的document.getElementById(“”) 的区别

    以前没注意过,认为jquery 中的 $("#") 与 document.getElementById("") 是一回事,指的是同一个东西. 这次项目开发在使用 ...