黑马2022最新redis课程笔记知识点(面试用)持续更新
redis入门
redis的常见五种数据类型
String类型
- String类型,类似于java中的String类型,常见使用get,set方法。

- String类型还可以存储json字符串格式。

Hash类型
Hash类型,也叫散列,它的value是一个无序字典,类似于java中HashMap

Hash类型的常用命令:

List类型:
Redis中的List类型与java中的LinkedList相类似,可以看做一个双向链表的结构,即支持正向检索,又支持反向检索。
特征也与java的LinkedList类似
有序
元素可重复
插入和删除速度快
查询速度一般
List类型常用命令

- 使用List模拟栈、队列、阻塞队列

Set类型
Redis的Set结构与Java中的HashSet类似,可以看做是一个value为null的HashMap。因为也是一个hash表,因此具备与HashSet类似的特征:
- 无序
- 元素不可重复
- 查找快
- 支持并集,交集,差集
Set常用命令:

redis实战(黑马点评)
短信验证码的登录注册功能
商家查询的缓存功能
redis缓存:查询的时候先查询redis,redis有直接返回,redis没有再查数据库
1、缓存更新
缓存更新的三种策略
内存淘汰:redis自带的内存淘汰机制
过期淘汰:利用expire命令给数据设置过期时间(TTL)
主动更新:主动完成数据库与缓存的同时更新
主动更新的三种方案

策略选择
低一致性需求:内存淘汰或过期淘汰
高一致性需求:主动更新为主,过期淘汰兜底
Cache Aside模式的选择
更新缓存还是删除缓存?
更新缓存会产生很多无效更新,并存在较大的线程安全问题。
删除缓存本质是延迟更新,没有无效更新,线程安全问题相对较低
先操作数据库还是缓存?
先更新数据,再删除缓存——在满足原子性的情况下,安全问题概率较低
先删除缓存,再更新数据库——安全问题概率较高
如何确保数据库与缓存操作原子性
单体系统——利用事务机制
分布式系统——使用分布式事务
最佳实践
查询数据时:
- 先查询缓存
- 如果缓存命中,直接返回
- 如果缓存未命中,则查询数据库
- 将数据库数据写入缓存
- 返回结果
修改数据库时:
- 先修改数据库
- 然后删除缓存
- 增加事务,确保两者的原子性
2、缓存穿透
产生原因
客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库
解决方案
缓存空对象
对于不存在的数据也在redis、建立缓存,值为空,并设置一个较短的TTl时间

布隆过滤
利用布隆过滤算法,在请求进去redis之前先判断是否存在,如果不存在则直接拒绝请求

其他

3、缓存雪崩
产生原因
在同一时段大量的缓存key同时失效或者redis服务宕机,导致大量请求到达数据库,带来巨大压力。
解决方案

4、缓存击穿(热点key)
产生原因
热点key在某一时间被高并发访问,缓存重建好事较长。
热点key突然过期,因为重建耗时长,在这段时间内大量请求落到数据库,带来巨大冲击
解决方案
互斥锁

逻辑过期

黑马2022最新redis课程笔记知识点(面试用)持续更新的更多相关文章
- 黑马程序员Java基础班+就业班课程笔记全发布(持续更新)
正在黑马学习,整理了一些课程知识点和比较重要的内容分享给大家,也是给自己拓宽一些视野,仅供大家交流学习,大家有什么更好的内容可以发给我 ,现有黑马教程2000G QQ 1481135711 这是我总 ...
- 4W字的后端面试知识点总结(持续更新)
点赞再看,养成习惯,微信搜索[三太子敖丙]关注这个互联网苟且偷生的工具人. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的 ...
- html知识点汇总(持续更新中)
本人从事前端行业三年多,打算从今天开始整理一些关于前端的一些比较经典的知识点,持续更新中...希望能对一些相关知识点有疑问的朋友有一些帮助! HTML篇: 1.常见的行内元素/块级元素/空元素有哪些? ...
- 【Python灰帽子--黑客与逆向工程师的Python编程之道】我的学习笔记,过程.(持续更新HOT)
我的学习笔记---python灰帽子 世界让我遍体鳞伤,但伤口长出的却是翅膀. -------------------------------------------- 前言 本书是由知名安全机构Im ...
- react知识点总结(持续更新。。。)
一.webpack 1. 什么是以及为什么要使用webpack 现在的网页功能越来越丰富,所需要的JavaScript和模块也会很多,为开发更加简洁,出现了以下方法,如模块化,scss,typescr ...
- 关于JavaScript初级的知识点一(持续更新 )
自己刚开始接触JS这是自己一个多月以来的一些总结和回顾. 一.什么是js? js是一种弱类型的脚本语言,是HTML的3大组成部分之一.HTML标签 CSS样式 JS脚本. 二.js的5种基本数据类型 ...
- Java工程师面试题,整理自网络与博主各种笔试面试,持续更新
1.面向对象的特征有哪些方面? 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口. 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应.简单的说就是用同 ...
- jQuery中易混淆知识点总结(持续更新)
find()与children() <body> <ul class="level-1"> <li class="item-i"& ...
- MySQL数据库知识点整理 (持续更新中)
一.修改用户密码 格式(在命令行下输入):mysqladmin -u 用户名 -p旧密码 password 新密码 1. 给root添加密码ab12: mysqladmin -uroot -pass ...
随机推荐
- Spring Boot整合模板引擎jsp
jsp也算是一种模板引擎吧.整合jsp前,先说一下运行SpringBoot项目的几种方式 1. 运行SpringBoot项目的几种方式 1.1 使用内嵌Tomcat运行项目 在IDE中右键运行启动类, ...
- 好客租房42-react组件基础综合案例-渲染列表无数据并优化
渲染列表评论 1判断列表数据的长度是否为0 2如果为0 则渲染暂无评论 //导入react import React from 'react' import ReactDOM from 'react- ...
- Git 不识别文件名字母大小写变化
问题 今天为一个项目撰写持续构建计划,撰写 Jenkinsfile 之后进行构建时报错: [2022-05-23 16:54:21] unable to prepare context: unable ...
- Typora详细教程以及下载
发现一篇非常不错的 Typora 教程,分享给大家. 原文链接:https://www.cnblogs.com/hyacinthLJP/p/16123932.html 作者:MElephant T ...
- [BJOI2014]想法
参考 P4581传送门 题意:给DAG,问每个点可以由多少个叶子到达. 思路: 随机化!!(题面有提示) 这道题利用在一个范围内随机的数期望均分范围的性质. 直接每个叶子在\([0,Max\_Rand ...
- 修改mysql数据库存储路径
最近一段比较忙,所以一直没有及时的更新总结一下测试路上遇到的问题,今天先来分享一下如何修改mysql存储路径(场景:在自己电脑上搭建的服务器上安装mysql,二.在公司自己的服务器上搭建mysql数据 ...
- 技术分享 | Appium 用例录制
原文链接 下载及安装 下载地址: https://github.com/appium/appium-desktop/releases 下载对应系统的 Appium 版本,安装完成之后,点击 " ...
- docker和docker compose安装使用、入门进阶案例
一.前言 现在可谓是容器化的时代,云原生的袭来,导致go的崛起,作为一名java开发,现在慌得一批.作为知识储备,小编也是一直学关于docker的东西,还有一些持续继承jenkins. 提到docke ...
- BUUCTF-乌镇峰会种图
乌镇峰会种图 16进制拖到底一看便知
- WPF第三方控件,只能输入数字型数据
话不多说,根据最近项目需求,为了减少输入验证等相关代码量,需要此控件 先上效果图 默认样式是这样,自己可以根据需求修改外形,但我更喜欢它自带的简洁版 有人可能会问怎么实现的呢?其实很简单,我们设置它的 ...