黑马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突然过期,因为重建耗时长,在这段时间内大量请求落到数据库,带来巨大冲击
解决方案
互斥锁
逻辑过期
相关文章
- 从本体论开始说起——运营商关系图谱的构建及应用
- 如何成为一名数据科学家?
- 从未见过的堂兄杀了人,你的DNA是关键证据
- 20个安全可靠的免费数据源,各领域数据任你挑
- 20个安全可靠的免费数据源,各领域数据任你挑
- 阿里云李飞飞:All in Cloud时代,云原生数据库优势明显
- 基于Hadoop生态系统的一高性能数据存储格式CarbonData(性能篇)
- 大数据告诉你:10年漫威,到底有多少角色
- TigerGraph:实时图数据库助力金融风控升级
- Splunk利用Splunk Connected Experiences和Splunk Business Flow 扩大数据访问
- 大数据开发常见的9种数据分析手段
- 以免在景区看人,我爬了5W条全国景点门票数据...
- 【实战解析】基于HBase的大数据存储在京东的应用场景
- 数据科学家告诉你哪些计算机科学书籍是你应该看的
- Kafka作为大数据的核心技术,你了解多少?
- Spring Boot 整合 Redis 实现缓存操作
- 大数据学习必须掌握的五大核心技术有哪些?
- 基于Antlr在Apache Flink中实现监控规则DSL化的探索实践
- 甲骨文再次被Gartner评为分析型数据管理解决方案魔力象限领导者
- 爬取吴亦凡微博102118条转发数据,扒一扒流量的真假