redis使用场景
- 缓存热点数据
- 分布式锁
- 存储token
- 存储短信验证码
- 计数器
- 全局唯一数
- 排行榜
- 限流
- 购物车
- 关注粉丝
缓存失效
- 缓存穿透
- 缓存空结果
- 布龙过滤器
- 缓存击穿
- 全局锁
- 设置永不过期
- 缓存雪崩
- 设置高可用集群
- 设置不同的过期时间
- 本地二级缓存,限流加降级
数据一致性
- 延时双删
集群最大部署多少个主节点
- 16384
string的存储内存多大
- 512m
list/set/hash/zset最多可以放多少个体元素
- 2^32-1/42亿
redis内存用完怎么办
- 修改redis.conf/maxmemory=0无内存限制
spring容器中的bean是线程安全的吗
- 不是
spring容器中的bean保证线程安全
- prototype
- 不可变的成员变量
- 将可变变量保持到threadlocal中
什么情况下会触发spring事物回滚
- 出现运行时异常
spring事物失效场景
- 同一个service中,方法a标注事物注解,方法b没有
- 标注事物的 private方法
- 异常类型错误
- 方法类上没加@transactional
- 多线程调用
- 异常被try-catch
- 手动抛出了别的异常
- 事物方法所在的bean未被spring容器管理
- 方法的事物传播类型不支持事物
- 表的数据引擎不支持事物,myisam
springbean的生命周期
- 解析xml配置或者注解的类。得到beandefinition
- 通过beandefinition反射创建bean
- 对bean对象进行属性填充
- 回调实现aware接口
- 调用beanpostprocessor的初始化前方法
- 调用init初始化方法
- 调用beanpostprocessor的初始化后方法
- 将创建好的bean对象放入map中
- 业务中使用bean对象就从map中获取
- spring容器中关闭时调用disposablebean的destroy方法销毁bean对象