Day06 每日必会

简介: cascasva

说下常见的Redis数据结构吧

1字符串(String):最基本的数据结构,可以存储字符串、整数或者浮点数。
2哈希(Hash):类似于关联数组,可以存储多个键值对,适合存储对象的属性。
3列表(List):双向链表结构,支持从两端进行元素的插入和删除,适合做队列或者栈。
4集合(Set):无序且不重复的元素集合,支持集合间的交集、并集和差集等操作。
5有序集合(Sorted Set):类似于集合,但每个元素都会关联一个分数,可以按照分数进行排序。
6地理空间索引(Geospatial Index):用于存储地理位置信息的数据结构,支持附近位置的搜索等功能。

Redis的持久化了解吗

了解过的面试官,主要是AOF和RDB,AOF是一种存储命令的持久化方式,可以借助于rewriteaof命令进行重写压缩以提高性能,而RDB存储的是一个二进制文件,两者一般是配合使用的,避免数据丢失。
并且持久化也跟刷盘机制有关,如果是always就不会丢失数据,everysecond最多丢一秒,如果是none交给系统就可能丢的多了。

Redis的三剑客

1缓存雪崩(Cache Avalanche):指在某个时间段内,大量缓存数据同时失效,导致大量请求直接访问数据库,造成数据库压力剧增,甚至引起数据库宕机。缓存雪崩通常是由于缓存数据设置了相同的过期时间,导致在同一时间大量缓存同时失效引起的。
解决方法:可以在设置缓存时,给缓存数据的过期时间增加一个随机值,避免大量缓存同时失效;另外,可以使用热点数据预加载、限流等方式来缓解缓存雪崩的影响。
1缓存穿透(Cache Penetration):指恶意请求或者不存在的数据频繁访问缓存,由于缓存中不存在该数据,每次请求都会直接访问数据库,导致数据库压力增大。
解决方法:可以在缓存中对于不存在的数据设置一个空值,或者使用布隆过滤器等方式来过滤恶意请求,避免直接访问数据库。
1缓存击穿(Cache Breakdown):指针对某一热点数据,由于缓存数据过期或者被删除,导致大量请求直接访问数据库,造成数据库压力增大。
解决方法:可以在缓存失效时,使用互斥锁或者分布式锁来避免大量请求同时访问数据库,同时可以提前异步加载热点数据到缓存中,避免缓存失效时直接访问数据库。

理论专项
MySQL
索引数据结构
SQL优化
哪些场景会索引失效
如何定位慢查询
回表
覆盖索引
索引下推


相关文章
|
4月前
|
Java Go 开发者
IDEA开发常用的快捷键
IntelliJ IDEA常用快捷键汇总:涵盖代码生成(如main、sout)、编辑(复制、删除、重命名)、导航(跳转、查找)、格式化、代码阅读及版本控制等高频操作,提升开发效率。熟练掌握可显著优化编码体验,是Java开发者必备技能。
456 1
|
4月前
|
Oracle Java 关系型数据库
Java命名规范
Java命名规范涵盖包、类、方法、变量等命名规则。包名全小写,类名首字母大写采用驼峰法,接口常用形容词,抽象类以Abstract/Base开头,异常类以Exception结尾,方法名小写驼峰,常量全大写用下划线分隔,枚举值按常量规范命名,提升代码可读性与一致性。
623 0
|
5月前
|
Arthas 运维 监控
|
4月前
内部类
内部类是定义在类中的类,分为成员、静态、局部和匿名四种。成员内部类属于外部类成员,可被权限修饰符修饰;静态内部类仅访问外部静态成员;局部内部类定义在方法内;匿名内部类用于简化接口或父类的实现,常用于一次性场景,提升代码简洁性。(238字)
150 1
|
4月前
泛型
泛型用于解决数据类型不确定的问题,提升程序通用性与安全性。使用时需注意:只能用引用类型,支持类型擦除,默认为Object。可用于类、方法、接口,常见形式如`ArrayList<E>`,通过`<T>`声明类型参数,实现灵活复用与编译期检查,避免运行时错误。(238字)
163 1
|
5月前
|
C++
C++变量作用域
C++变量作用域分为局部、全局、块和类作用域。局部变量在函数内定义,仅内部可用;全局变量在所有函数外定义,整个程序可访问;块作用域变量存在于代码块内;类作用域变量属于类成员。同名时,内层作用域覆盖外层。全局变量自动初始化,局部变量需手动初始化。
251 1
|
5月前
|
负载均衡 Dubbo 应用服务中间件
|
5月前
|
Java 开发工具 数据安全/隐私保护
|
5月前
|
监控 NoSQL 数据可视化
|
5月前
|
SQL 前端开发 Java

热门文章

最新文章