Redis知识点汇总
Redis快速回忆核心数据结构 字符串小于1M,成倍扩容,大于1M,就每次扩容1M,最大512M。 哈希 购物车 列表 集合 有序集合 位图 Bitmap虽然基于String类型,但是可以直接操作位 一个字节8位表示一个用户是数据 使用的时候把握住偏移量即可 集成springboot 一般都会自定义,JDK的序列化方式存的数据不能直接查看 核心原理持久化机制持久化命令bgsave 是异步的 save 是同步的 RDB AOF 混合模式 快照的时候,增量的数据使用AOF的方式 分布式锁演进过程本地锁和分布式锁减库存的时候多线程 无法释放锁的情况处理出现异常的话,就无法释放锁 服务器断了,下面的锁还是无法释放 设置超时时间,但是不能不是原子性操作 合并为原子性操作,但是自己的锁可能被别人释放,因为别人的锁可能过期没了 自己的锁被别人删除怎么办解决办法一:值相同的时候才可以删除掉 解决办法二:给锁续命,防止线程还在执行的时候锁就失效 redission 看门狗机制 **看门狗作用:**每隔十...
Serverless
Serverless是一种构建和管理基于微服务架构的完整流程,允许你在服务部署级别而不是服务器部署级别来管理你的应用部署。它与传统架构的不同之处在于,完全由第三方管理,由事件触发,存在于无状态(Stateless)、暂存(可能只存在于一次调用的过程中)计算容器内。构建无服务器应用程序意味着开发者可以专注在产品代码上,而无须管理和操作云端或本地的服务器或运行时。Serverless真正做到了部署应用无需涉及基础设施的建设,自动构建、部署和启动服务。 国内外的各大云厂商 Amazon、微软、Google、IBM、阿里云、腾讯云、华为云相继推出Serverless产品, Lambda 代码是部署在服务器计算能力之上的,但因为是托管的服务,用户不需要管理服务器,所以从用户角度来看就可以理解为是没有服务器的。Lambda 和 SaaS 在表面上看是有一些相同的地方,很多做 SaaS 的人都认为自己做的是无服务器架构,但是需要强调的是无服务器架构的用户仍然掌握着各种基本工具,可自行搭建服务和软件,而传统意义上的 Saas 则只是把软件在云平台上提供给用户使用。 Lambda 为用户提供了一...
SLS指标监控
视图预览阿里云 SLS 指标展示,包括服务状态,日志流量,操作次数,总体 QPS 等。 版本支持操作系统支持:Linux 前置条件 服务器 <安装 Datakit> 服务器 <安装 Func 携带版> 阿里云 RAM 访问控制账号授权 RAM 访问控制 登录 RAM 控制台 https://ram.console.aliyun.com/users 新建用户:人员管理 - 用户 - 创建用户 保存或下载 AccessKey ID 和 AccessKey Secret 的 CSV 文件 (配置文件会用到) 用户授权 (云监控只读/时序指标数据权限) 安装配置说明: 示例 Linux 版本为:CentOS Linux release 7.8.2003 (Core) 通过一台服务器采集所有阿里云 SLS 数据 部署实施脚本市场 登录 Func,地址 http://ip:8088 开启脚本市场,管理 - 实验性功能 - 开启脚本市场模块 载入阿里云数据同步脚本,管理 - 脚本市场 - 阿里云数据同步 (云监控) 添加...
SLB指标监控
视图预览阿里云 SLB 指标展示,包括后端 ECS 实例状态,端口连接数,QPS,网络流量,状态码等 版本支持操作系统支持:Linux 前置条件 服务器 <安装 Datakit> 服务器 <安装 Func 携带版> 阿里云 RAM 访问控制账号授权 RAM 访问控制 登录 RAM 控制台 https://ram.console.aliyun.com/users 新建用户:人员管理 - 用户 - 创建用户 保存或下载 AccessKey ID 和 AccessKey Secret 的 CSV 文件 (配置文件会用到) 用户授权 (只读访问所有阿里云资源的权限) 安装配置说明: 示例 Linux 版本为:CentOS Linux release 7.8.2003 (Core) 通过一台服务器采集所有阿里云 SLB 数据 部署实施脚本市场 登录 Func,地址 http://ip:8088 开启脚本市场,管理 - 实验性功能 - 开启脚本市场模块 **依次添加 **三个脚本集 观测云集成 (核心包) 观测云集成 (阿里云-云...
RocketMQ源码
RocketMQ源码 4.7.1版本 将源码导入IDEA后,需要先对源码进行编译。编译指令 clean install -Dmaven.test.skip=true broker:这个里面存放的就是RocketMQ的Broker相关的代码,这里的代码可以用来启动Broker进程 client:这个里面就是RocketMQ的Producer、Consumer这些客户端的代码,生产消息、消费消息的代码都在里面 common:这里放的是一些公共的代码 dev:这里放的是开发相关的一些信息 distribution:这里放的就是用来部署RocketMQ的一些东西,比如bin目录 ,conf目录,等等 example:这里放的是RocketMQ的一些例子 ,抄代码的地方 filter:这里放的是RocketMQ的一些过滤器的东西 logappender和logging:这里放的是RocketMQ的日志打印相关的东西 namesvr:这里放的就是NameServer的源码 openmessaging:这是开放消息标准,这个可以先忽略 remoting:这个很...
Redis监控
视图预览阿里云 Redis 标准版指标展示,包括CPU 使用率,内存使用率,磁盘读写,网络流量,每秒访问次数等 版本支持操作系统支持:Linux 前置条件 服务器 <安装 Datakit> 服务器 <安装 Func 携带版> 阿里云 RAM 访问控制账号授权 RAM 访问控制 登录 RAM 控制台 https://ram.console.aliyun.com/users 新建用户:人员管理 - 用户 - 创建用户 保存或下载 AccessKey ID 和 AccessKey Secret 的 CSV 文件 (配置文件会用到) 用户授权 (只读访问所有阿里云资源的权限) 安装配置说明: 示例 Linux 版本为:CentOS Linux release 7.8.2003 (Core) 通过一台服务器采集所有阿里云 Redis 标准版数据 部署实施脚本市场 登录 Func,地址 http://ip:8088 开启脚本市场,管理 - 实验性功能 - 开启脚本市场模块 **依次添加 **三个脚本集 观测云集成 (核心包) 观测云...
Redis的数据类型选择
String几乎所有的数据都可以使用 String 来存储。 浪费存储空间,key 也是需要存储空间的 管理、维护成为噩梦,Redis 中存在着大量的 KV 对象 key 冲突的几率变高(不同的业务系统共用一个 Redis 服务) 常用的数据类型及其适用场景 string:应用最为广泛的数据类型,例如:计数器,session 等键值“独立〞的数据 hash:存储结构化(对象)的数据,KV 共同构成一个对象的信息 list:队列、栈、有界队列 set:去重、无序的数据集合,在类似于社交的业务功能上有广泛应用,例如:共同关注、共同喜好、数据去重 sortedset:带有权重的集合,在类似于排行榜业务上有广泛应用,且可以实现范围查找
SpringBean实例化之前做点事情
SpringBean 实例化需求,实现一个视频解码器,可以实现各种视频格式的解码 第一种方法:先去实现各个解码器,然后 if.else 判断使用哪种解码器 使用 BeanPostProcessor 优化第二种方法:使用 BeanPostProcessor 构造解码器索引,再从索引中拿到匹配的 测试运行: BeanFactoryPostProcessor BeanFactoryPostProcessor 是在 Spring 容器加载 Bean 定义XML 文件之后, Bean 实例化之前执行 BeanFactoryPostProcessor 的执行顺序在 BeanPostProcessor 之前 BeanFactoryPostProcessor 与 BeanPostProcessor 都是服务于 Bean 的生命周期中的,只是使用场景和作用略有不同 第三方类是单例的,但是想变为原型的,怎么操作?
Redis核心数据类型的底层编码(C源码)(重要)
Redis K-V 底层设计原理:字典hashtablekey:string val:string、hash、list、set、sorted set map 就是字典,还要支持海量数据的存储,查找和插入删除(hashtable) hashtable 里面 hash(key) % hashtable.size ,最后的得到的就是[0, hashtable.size - 1] hash碰撞的时候,线性探测或者链表法。Redis 使用的是链表法 注意这个hashtable里面的value的类型是五种常见类型谁都可以放,因为最后都是使用指针指向的,value的包装类里面会执行是什么数据类型。 redisDb–dict–dictht–dictEntry–redisObject Redis 渐进式rehash及动态扩容机制如图所示, 扩容时机:在使用的容量是大小的一样的时候就会扩容, 扩容大小:扩容的时候变为原来的2倍, 渐进式迁移:新建数组之后,数据迁移的时候,一个链表上的数据是一个桶为单位转移的,不能一下全部转移会导致单线程阻塞,所以有了渐进式rehash的设计,dict字典包...
SpringBoot定时任务不定时执行了
两个注解@EnableScheduling:使得@Scheduled生效 @Scheduled:标注在方法上 @Scheduled 注解fixedDelay任务结束与开始之间的间隔 fixedRate两次任务的开始的间隔,不管任务是不是执行结束 initialDelay:配合性的,可以和上面两个配合使用,第一次执行的延迟时间 cron:Linux 系统中定时任务的效果,更加灵活设置时间 基本使用 此时运行的时候,第二个任务其实是不会执行的 原理 如果不指定 scheduler ,就默认使用单线程的 scheduler,所以上面的就会阻塞,第二个定时任务拿不到线程 配置定时任务的线程池 配置文件中指定定时任务线程数 spring.task.scheduling.pool.size 自定义定时任务的线程池,编写 ScheduleConfig
