Redis的数据类型选择
String几乎所有的数据都可以使用 String 来存储。 浪费存储空间,key 也是需要存储空间的 管理、维护成为噩梦,Redis 中存在着大量的 KV 对象 key 冲突的几率变高(不同的业务系统共用一个 Redis 服务) 常用的数据类型及其适用场景 string:应用最为广泛的数据类型,例如:计数器,session 等键值“独立〞的数据 hash:存储结构化(对象)的数据,KV 共同构成一个对象的信息 list:队列、栈、有界队列 set:去重、无序的数据集合,在类似于社交的业务功能上有广泛应用,例如:共同关注、共同喜好、数据去重 sortedset:带有权重的集合,在类似于排行榜业务上有广泛应用,且可以实现范围查找
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字典包...
Redis的数据结构
Redis的数据结构重要:Redis 为什么用跳表而不用平衡树? https://juejin.cn/post/6844903446475177998 https://mp.weixin.qq.com/s?__biz=MzA4NTg1MjM0Mg==&mid=509777776&idx=1&sn=e56f24bdf2de7e25515fe9f25ef57557&mpshare=1&scene=1&srcid=1010HdkIxon3icsWNmTyecI6#rd Redis的对象系统中的每种对象实际上都是基于使用场景选择多种底层数据结构实现的,比如ZSET就是基于【压缩列表】或者【跳跃表+字典】(这也跟之前排序中提到的Sort包实现的思想一样,基于数据规模选择合适的排序算法),体现了Redis对于性能极致的追求。 https://cloud.tencent.com/developer/article/1353762
Redis持久化
对比 AOF 文件的内容是操作命令; RDB 文件的内容是二进制数据。 RDB 快照就是记录某一个瞬间的内存实际数据,而 AOF 文件记录的是命令操作的日志 RDB 恢复数据的效率会比 AOF 高些,因为直接将 RDB 文件读入内存就可以,不需要像 AOF 那样还需要额外执行操作命令的步骤才能恢复数据。 RDB 丢失的数据会更多,因为保存是全量快照,所以频率不能太高否则性能不好,所以会丢失更多数据 AOF 怎么用12345678910111213141516171819// redis.confappendonly yesappendfilename "appendonly.aof"# 同步方式appendfsync everysec# aof重写期间是否同步no-appendfsync-on-rewrite no# 重写触发配置auto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mb# 加载aof时如果有错如何处理aof-load-truncated yes # yes表示如果aof尾部文件...
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知识点汇总
Redis快速回忆核心数据结构 字符串小于1M,成倍扩容,大于1M,就每次扩容1M,最大512M。 哈希 购物车 列表 集合 有序集合 位图 Bitmap虽然基于String类型,但是可以直接操作位 一个字节8位表示一个用户是数据 使用的时候把握住偏移量即可 集成springboot 一般都会自定义,JDK的序列化方式存的数据不能直接查看 核心原理持久化机制持久化命令bgsave 是异步的 save 是同步的 RDB AOF 混合模式 快照的时候,增量的数据使用AOF的方式 分布式锁演进过程本地锁和分布式锁减库存的时候多线程 无法释放锁的情况处理出现异常的话,就无法释放锁 服务器断了,下面的锁还是无法释放 设置超时时间,但是不能不是原子性操作 合并为原子性操作,但是自己的锁可能被别人释放,因为别人的锁可能过期没了 自己的锁被别人删除怎么办解决办法一:值相同的时候才可以删除掉 解决办法二:给锁续命,防止线程还在执行的时候锁就失效 redission 看门狗机制 **看门狗作用:**每隔十...
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 开启脚本市场,管理 - 实验性功能 - 开启脚本市场模块 载入阿里云数据同步脚本,管理 - 脚本市场 - 阿里云数据同步 (云监控) 添加...
Serverless
Serverless是一种构建和管理基于微服务架构的完整流程,允许你在服务部署级别而不是服务器部署级别来管理你的应用部署。它与传统架构的不同之处在于,完全由第三方管理,由事件触发,存在于无状态(Stateless)、暂存(可能只存在于一次调用的过程中)计算容器内。构建无服务器应用程序意味着开发者可以专注在产品代码上,而无须管理和操作云端或本地的服务器或运行时。Serverless真正做到了部署应用无需涉及基础设施的建设,自动构建、部署和启动服务。 国内外的各大云厂商 Amazon、微软、Google、IBM、阿里云、腾讯云、华为云相继推出Serverless产品, Lambda 代码是部署在服务器计算能力之上的,但因为是托管的服务,用户不需要管理服务器,所以从用户角度来看就可以理解为是没有服务器的。Lambda 和 SaaS 在表面上看是有一些相同的地方,很多做 SaaS 的人都认为自己做的是无服务器架构,但是需要强调的是无服务器架构的用户仍然掌握着各种基本工具,可自行搭建服务和软件,而传统意义上的 Saas 则只是把软件在云平台上提供给用户使用。 Lambda 为用户提供了一...
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:这个很...
Shell脚本
Shell脚本一个 shell 脚本就是一个包含一系列命令的普通的文本文件。shell 读取这个文件,然后执行 文件中的所有命令 能看懂 能改 能写 能优化 shell是C语言编写的一个二进制程序,Shell 不仅是一个功能强大的命令行接口,也是一个脚本语言解释器。内核认识二进制,shell是命令解释器, shell 会自动地搜索某些目录。为了最大程度的方便,会把脚本放到这些目录当中。 入门案例脚本文件格式: <font style="color:#3C3C3C;">#!</font>字符序列是一种特殊的结构叫做 shebang。 告诉操作系统将执行此脚本所用的解释器的名字。 每个 shell 脚本都应该把这一文本行 作为它的第一行。 123#!/bin/bash# This is our first script.echo 'Hello World!' 对于脚本文件,有两个常见的权限设置;权限为755的脚本,则每个人都能执行,和权限为700的 脚本,只有文件所有者能够执行。 1chmod 7...