一:Rides支持哪些数据类型

答案:1:string    2: List (列表  ) 按照插入顺序排序    3:Hash (哈希)  4:set  Set是string类型的无序集合  5:zset(sorted set:有序集合)

zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。

二:什么是Redis持久化?Redis有哪几种持久化方式?优缺点是什么?

持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。

Redis 提供了两种持久化方式:RDB(默认) 和AOF

RDB:

rdb是Redis DataBase缩写

功能核心函数rdbSave(生成RDB文件)和rdbLoad(从文件加载内存)两个函数

AOF:

Aof是Append-only file缩写

每当执行服务器(定时)任务或者函数时flushAppendOnlyFile 函数都会被调用, 这个函数执行以下两个工作

aof写入保存:

WRITE:根据条件,将 aof_buf 中的缓存写入到 AOF 文件

SAVE:根据条件,调用 fsync 或 fdatasync 函数,将 AOF 文件保存到磁盘中。

存储结构:

内容是redis通讯协议(RESP )格式的命令文本存储。

比较

1、aof文件比rdb更新频率高,优先使用aof还原数据。

2、aof比rdb更安全也更大

3、rdb性能比aof好

4、如果两个都配了优先加载AOF

三:redis通讯协议(RESP ),能解释下什么是RESP?有什么特点?

RESP 是redis客户端和服务端之前使用的一种通讯协议;

RESP 的特点:实现简单、快速解析、可读性好

四:Redis 有哪些架构模式?讲讲各自的特点

1:单体模式  2:主从模式  3:集群模式

使用过Redis分布式锁么,它是怎么实现的?

先拿setnx来争抢锁,抢到之后,再用expire给锁加一个过期时间防止锁忘记了释放。

如果在setnx之后执行expire之前进程意外crash或者要重启维护了,那会怎么样?

set指令有非常复杂的参数,这个应该是可以同时把setnx和expire合成一条指令来用的!

使用过Redis做异步队列么,你是怎么用的?有什么缺点?

一般使用list结构作为队列,rpush生产消息,lpop消费消息。当lpop没有消息的时候,要适当sleep一会再重试。

缺点:

在消费者下线的情况下,生产的消息会丢失,得使用专业的消息队列如rabbitmq等。

能不能生产一次消费多次呢?

使用pub/sub主题订阅者模式,可以实现1:N的消息队列。

什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?

缓存穿透

一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB)。一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。

如何避免?

1:对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该key对应的数据insert了之后清理缓存。

2:对一定不存在的key进行过滤。可以把所有的可能存在的key放到一个大的Bitmap中,查询时通过该bitmap过滤。

缓存雪崩

当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,会给后端系统带来很大压力。导致系统崩溃。

如何避免?

1:在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线程查询数据和写缓存,其他线程等待。

2:做二级缓存,A1为原始缓存,A2为拷贝缓存,A1失效时,可以访问A2,A1缓存失效时间设置为短期,A2设置为长期

3:不同的key,设置不同的过期时间,让缓存失效的时间点尽量均匀。

Rides的常用知识点相关推荐

  1. javaScript常用知识点有哪些

    javaScript常用知识点有哪些 一.总结 一句话总结:int = ~~myVar, // to integer | 是二进制或, x|0 永远等于x:^为异或,同0异1,所以 x^0 还是永远等 ...

  2. ES6常用知识点概述

    前言 国庆假期已过一半,来篇干货压压惊. ES6,并不是一个新鲜的东西,ES7.ES8已经赶脚了.但是,东西不在于新,而在于总结.每个学前端的人,身边也必定有本阮老师的<ES6标准入门>或 ...

  3. list python 访问 键值对_基础|Python常用知识点汇总(中)

    字符串字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串.1.创建字符串 str1 = 'Hello World!' str2 = "Hello W ...

  4. matplotlib一些常用知识点的整理,

    本文作为学习过程中对matplotlib一些常用知识点的整理,方便查找. 强烈推荐ipython 无论你工作在什么项目上,IPython都是值得推荐的.利用ipython --pylab,可以进入Py ...

  5. oracle 常用知识点整理

    转 :  oracle 常用知识点 原文链接:http://blog.csdn.net/weijiaxiaobao/article/details/51323573 Oracle 是一个庞大的系统,里 ...

  6. php常用技术与thinkphp5,thinkPHP5框架路由常用知识点汇总

    本文实例讲述了thinkPHP5框架路由常用知识点.分享给大家供大家参考,具体如下: 一.路由的模式 普通模式(默认pathinfo,不解析路由) 'url_route_on' => false ...

  7. 【C++】-- C++11基础常用知识点(下)

    上篇: [C++]-- C++11基础常用知识点(上)_川入的博客-CSDN博客 目录 新的类功能 默认成员函数 可变参数模板 可变参数 可变参数模板 empalce lambda表达式 C++98中 ...

  8. Webpack 常用知识点总结

    Webpack 常用知识点总结 webpack 是一个模块打包器.webpack 的主要目标是将 javaScript 文件打包在一起,打包后的文件用于在浏览器中使用,但它也能够胜任转换(transf ...

  9. 敏捷ACP 常用关键词整理 敏捷ACP 常用知识点整理

    敏捷ACP 常用关键词整理   敏捷ACP 常用知识点整理 一.MoSCoW 1.MoSCoW : 读作"莫斯科",适用于故事优先级的排序,首次出现在 3-13敏捷产品实践:产品待 ...

最新文章

  1. 解决margin-top没有效果
  2. php self this parent
  3. java date 转integer_java 中Date的各种格式转换
  4. FreeEIM 是班级的学习委员
  5. Valgrind快速入门指南
  6. linux入门怎么学?
  7. WinForm小程序系列:注册表阅读器
  8. 如何在云服务器使用docker快速部署jupyter web服务器(Nginx+docker+jupyter+tensorflow)
  9. SVG-Android开源库——SVG生成Vector资源文件的编辑预览工具
  10. unity 企鹅砸小猪 笔记1
  11. 区块链技术将有可能彻底颠覆音乐行业,思想启迪+P2Ptech,end
  12. Git图形化操作:Revert(恢复)本地的修改到上一个版本
  13. python:安装pycaret2.2.3(pytorch版本为1.7.1)
  14. 迪杰斯特拉模板-刘汝佳紫书
  15. nmap超快高效扫描端口
  16. 突然觉得人类的进化是人类自主意愿…
  17. iOS 动画之翻页动画实现
  18. CSS重置默认样式reset.css代码模板
  19. 新时代 新创意 新场景 新消费 2021“设计+”珠宝首饰创新设计展将于10月17日开幕
  20. 初步了解区块链技术落地——FISCO BCOS 快速搭建区块链

热门文章

  1. 老板给你画过的那些大饼,吃的香吗?
  2. 【需求专题】如何写好需求——INCOSE需求编写指南(1)
  3. 1.万人直播架构与CDN网络
  4. python基础 推导式
  5. zd394071264的专栏,有很多很好很相近的东西
  6. mysql1414_MySQL Error Code:1414
  7. 图像像素到字符的转换--python实现
  8. 【模型训练】YOLOv7道路交通标志检测
  9. git shanchu stash_git stash命令
  10. java怎么获取数组下标是偶数_如何获取数组下标为偶数的下标所对应的数组内的值...