当前位置: 首页 > news >正文

厦门哪里做网站建网站备案需要的材料

厦门哪里做网站,建网站备案需要的材料,电商网站特点,网站开发维护工作在做 web 产品是#xff0c;都会有这么一个需求#xff1a; 记录用户在网站或 APP 上的点击行为数据#xff0c;来分析用户行为。这里的数据一般包括用户 ID、行为类型#xff08;如浏览、登录、下单等#xff09;、行为发生的时间戳。 userID, type, timeStamp 与之类似都会有这么一个需求 记录用户在网站或 APP 上的点击行为数据来分析用户行为。这里的数据一般包括用户 ID、行为类型如浏览、登录、下单等、行为发生的时间戳。 userID, type, timeStamp 与之类似物联网项目需要周期性的统计设备的实时状态包括包括设备 ID、压力、温度、湿度以及对应的时间错 deviceId, pressure, temperature, humidity, timestamp 这些与发生时间相关的一组数据就是时间序列数据。这些数据的特点是没有严格的关系模型记录的信息可以表示成键和值的关系如一个设备 ID 对应一条记录所以并不需要专门用关系型数据库来保存。而 Redis 的键值数据模型正好可以满足这里的数据存取需求。 时间序列数据的读写特点 时间序列数据通常是持续高并发写入的例如需要连续记录数万个设备的实时状态值。同时时间序列数据被记录后通常就不变了因为它就是代表一个设备在某个时刻的状态值。 所以这种数据的写入特点很简单就是插入数据快这就要求我们选择的数据类型在进行数据插入时复杂度要低尽量不要阻塞。你可能第一时间会想到用 Redis 的 String、Hash 类型来保存因为它们插入复杂度都是 O(1)但是我们之前说过String 类型在记录小数据时元素局的内存开销比较大不太适合保存大量数据。 在查询时间序列数据时既有对单条记录的查询也有对某个时间范围内的数据查询。除此之外还有一些更复杂的查询比如对某个时间范围内的数据做聚合计算。这里的聚合计算就是对符合查询条件的所有数据做计算包括计算均值、最大/最小值、求和等。例如统计某个时间段内的设备温度最大值来判断设备是否有故障发生。 用一次词概括时间序列数据的“读”就是查询模式多。 我们来分析下 针对时间序列数据的“写要快”Redis 的高性能写特性直接就可以满足了而针对“查询模式多”的特点单点查询、范围查询、聚合计算Redis 提供了两种方案分别是基于 Hash 和 Sorted Set 实现以及基于 RedisTimeSeries 模块实现。 基于 Hash 和 Sorted Set 保存时间序列数据 Hash 和 Sorted Set 组合方式有一个明显的好处它们是 Redis 内在的数据类型代码成熟度和性能文档。所以基于这两个数据类型保存时间序列系统稳定性是可以预期的。 第一个问题为什么保存时间序列数据要同时使用这两类数据呢 因为 Hash 类型有一个特点它可以实现对单键的快速查询。这就满足了时间序列数据的单建值查询需求。我们可以把时间戳作为 Hash 集合的 key把设备的状态作为 Hash 集合的 value。 可以看下用 Hash 集合记录设备的温度值的示意图 当我们想要查询某个时间点或者是多个时间点上的温度数据时直接使用 HGET 命令或者 HMGET 命令就可以分别获得 Hash 集合中的一个 key 或 多个 key 的 value 值了。 例如用 HGET 命令查询 202401010905 这个时刻的温度值使用 HMGET 查询 202401010905、202401010907、202401010908 这三个时刻的温度值 HGET device:temperature 202401010905 25.1HMGET device:temperature 202401010905 202401010907 202401010908 25.9 25.1 25.3用哈希类型来实现单键的查询很简答。但是Hash 类型不支持对数据进行范围查询。 因为 Hash 类型的底层结构是哈希表并没有对数据进行有序索引。所以要对 Hash 集合进行范围查询的话就要扫描 Hash 集合中所有的数据在把这些数据取到客户端进行排序。很显然这样的效率很低。 为了能同时支持按时间戳范围的查询可以用 Sorted Set 来保存时间序列数据因为它可以根据元素的权重分数来排序。把时间戳作为 Sorted Set 集合的元素分数把时间点上记录的数据作为元素本身。 还是以设备温度的时间序列数据为例进行解释。下图显示了用 Sorted Set 集合保存的结果 使用 ZRANGEBYSCORE 命令按照输入的最大时间戳和最小时间戳来查询这个时间范围内的温度值了。如下所示 ZRANGEBYSCORE device:temperature 202401010907 202401010910 25.9 24.9 25.2 25.1注意sorted set 使用时间戳作为 score温度作为 member 的问题 温度大概率会出现相同的这个时候 ZADD 后会覆盖掉原有的数据。 现在我们知道同时使用 Hash 和 Sorted Set可以满足单个时间点和一个时间范围内的数据查询需求了。 第二个问题如何保证写入 Hash 和 Sorted Set 是一个原子操作。 原子操作就是指执行多个写命令时要么全部完成要么都不完成。 这里涉及到了 Redis 的支持简单事务的 MULTI 和 EXEC 命令。当多个命令及其参数本身无误时 MULTI 和 EXEC 命令可以保证执行这些命令的原子性。 MULTI 表示一些列原子性操作的开始。收到这个命令后Redis 就知道接下来收到的命令需要放到一个内部队列中后续一起执行保证了原子性。EXEC 表示一系列原子性操作的结束。一旦 Redis 收到这个命令就表示所有保证原子性的操作都已经发送完成了。此时Redis 开始执行刚才放到内部队列中的所有操作。 已保存设备状态信息的需求为例执行下面的代码把设备在 2024 年 1 月 1 日 9 时 5 分的温蒂分别用 HSET 命令和 ZADD 命令写入 Hash 集合和 Sorted Set 集合。 MULTI okHSET device:temperature 202401010905 26.8 QUEUEDZADD device:temperature 202401010905 26.8 QUEUEDEXEC 1 1可以看到首先 Redis 收到了客户端执行的 MULTI 命令。然后客户端再执行 HSET 和 ZADD 命令后Redis 返回的结果为 “QUEUED”这表示这两个命令暂时入队先不执行执行了 EXEC 后HSET 和 ZADD 命令才真正执行并返回结果。 第三个问题如何对时间序列进行聚合计算 聚合计算一般被用来周期性统计时间窗口内的数据汇总状态在实时监控与预警等场景下会频繁执行。 Sorted Set 支持范围查询但无法直接进行聚合统计所以我们只能先把时间范围内的数据取回到客户端然后在客户端完成聚合计算。 这个方案会带来一定的潜在风险大量数据在 Redis 实例和客户端间频繁传输这会和其他命令竞争网络资源导致其他操作变慢。 假设我们需要每 3 分钟计算一次所有设备各指标的最大值每个设备每 15 秒 记录一个指标值1分钟就会记录 4 个值3 分钟就会有 12 个值。假设需要统计的指标有 33 个所以单个设备每 3 分钟记录的指标数据有将近 400个33 * 12 396。若有 1 万台设备这样一来每 3 分钟就有将近 400 万条396 * 1 万 396 万数据需要在客户端和 Redis 实例之间传输。 为避免客户端和 Redis 实例间频繁的大量数据传输我们可以使用 RedisTimeSeries 来保存时间序列数据。 RedisTimeSeries 支持直接在 Redis 上进行聚合计算。还是以刚才每 3 分钟算一次最大值为例。在 Redis 实例上直接聚合计算那么对于单个设备的一个指标值来说每 3 分钟记录的 12 条数据可以聚合计算成一个值单个设备每 3 分钟也就只有 33 个聚合值需要传输可以减少大量数据传输对 Redis 实例网络的性能影响。 所以如果我们只需要进行单个时间点查询或对某个范围查询的怠话适合使用 Hash 和 Sorted Set 的组合它们都是 Redis 内在的数据结构性能好稳定性高。但是如何要进行大量的聚合计算同时网络带宽条件不是太好使用 RedisTimeSeries 就更加适合一些。 基于 RedisTimeSeries 模块保存时间序列数据 RedisTimeSeries 是 Redis 的一个扩展模块。它专门面向时间序列数据提供了数据类型和访问接口并且支持在 Redis 实例上直接对数据进行按时间范围的聚合计算。 因为 RedisTimeSeries 不属于 Redis 的内建功能模块在使用时需要先把它的源码单独编译程动态链接库 redistimeseries.so再使用 loadmodule 命令进行加载如下所示 loadmodule redistimeseries.so具体安装 redistimeseries.so 过程可参考 Redis 安装 redistimeseries.so时间序列数据类型教程 。 当用于时间序列数据存取时 RedisTimeSeries 的操作主要有 5 个 用 TS.CREATE 命令创建时间序列数据集合用 TS.ADD 命令插入数据用 TS.GET 命令读取最新数据用 TS.MGET 命令按标签过滤查询数据集合用 TS.RANGE 支持聚合计算的范围查询 1. 用 TS.CREATE 命令创建时间序列数据集合 在 TS.CREATE 命令中我们需要设置时间序列集合数据的 key 和数据过期时间以毫秒为单位。此外我们还可以为数据集合设置标签来表示数据集合的属性。 例如我们执行下面的命令创建一个 key 为 device:temperature 、数据有效期为 600s 的时间序列数据集合。也就是这个集合中的数据创建了 600s 后就会被自动删除。最后我们给这个集合设置了一个标签属性 {device_id:1} 表明这个数据集合中记录的是属于设备 ID 号为 1 的数据。 127.0.0.1:6379 TS.CREATE device:temperature RETENTION 600000 LABELS device_id 1 OK2.用 TS.ADD 命令插入数据用 TS.GET 命令读取数据 用 TS.ADD 命令往时间序列集合中插入数据包括时间戳和具体的数值并使用 TS.GET 命令读取数据集合中的最新一条数据。 执行下列 TS.ADD 命令时就往 device:temperature 集合和中插入一条数据记录的是设备在 2024 年 1 月 1 日 9 时 5 分的设备温度 127.0.0.1:6379 TS.ADD device:temperature 1704071100000 25.1 (integer) 1704071100000再执行 TS.GET 命令时就会把刚刚插入的最新数据读取出来。 127.0.0.1:6379 TS.GET device:temperature 1) (integer) 1704071100000 2) 25.13.用 TS.MGET 命令按标签过滤查询数据集合 在保存多个设备的时间序列数据时我们通常把不同设备的数据保存到不同集合中。此时我们就可以使用 TS.MGET 命令按照标签查询部分集合中的最新数据。在使用 TS.CREATE 创建数据集合时可以给集合设置标签属性值。当进行查询时就可以在查询条件中对集合标签属性进行匹配最后的查询结果里只返回匹配上的集合中的最新数据。 举个例子。假设我们一共用 4 个集合为 4 个设备保存时间序列数据设备 ID 号是 1、2、3、4当创建数据集合时把 device_id 设置为每个集合的标签。此时我们就可以使用下列 TS.MGET 命令以及 FILTER 设置这个配置项用来设置集合标签的过滤条件查询 device_id 不等于 2 的所有其他设备的数据集合并返回集合中最新的一条数据。 HMGET FILTER device_id!24.用 TS.RANGE 支持聚合计算的范围查询 对时间序列数据进行聚合计算是可以使用 TS.RANGE 命令指定要查询的数据的时间范围同时用 AGGERGATION 参数指定要执行的聚合计算类型。RedisTimeSeries 支持的聚合计算类型很丰富包括 求平均值 avg求最大值max求最小值min求和sum等等 例如我们可以按照每 180s 的时间窗口对时间段内的数据进行均值计算。 TS.RANGE device:temperature 1704071106700 1704071507120 AGGREGATION avg 180000与使用 Hash 和 Sorted Set 来保存时间序列数据相比RedisTimeSeries 是专门为时间序列数据访问设计的扩展模块能支持在 Redis 实例上直接进行聚合计算以及按标签属性过滤查询数据集合当我们需要频繁进行聚合计算以及从大量集合中筛选出特定设备或用户的数据集合时RedisTimeSeries 就可以发挥优势了。
http://www.zqtcl.cn/news/712107/

相关文章:

  • j动态加载网站开发南京建设网站公司哪家好
  • 云南网站建设工具wordpress防御ip攻击
  • 珠海市网站建设开发公司站长工具whois查询
  • 网站备案icp过期网站建设好了怎么做推广
  • 网站自动识别手机代码网络服务器是指
  • 做自媒体那几个网站好点乐清做网站建设
  • 如何制作自己的网站在线观看2021网页源码
  • 电子商务网站建设百度文库工业设计公司招聘
  • 网站seo测评餐厅设计公司餐厅设计
  • 深圳网站seo推广wordpress swf 上传
  • 织梦做双语网站怎么做制作网站的教程
  • 公司网站开发的国内外研究现状个人网页设计大全
  • 做一个网站人员网站建设及推广优化
  • 胶州市城乡建设局网站能进封禁网站的浏览器
  • 网站做几级等保荣耀商城手机官网
  • 营销网站费用渭南网站建设公司
  • wordpress主题集成插件下载网站如何做360优化
  • 有什么在线做文档的网站网站开发需要用到哪些技术
  • 网站套餐可以分摊吗吗移动登录网页模板免费下载
  • asp网站会员注册不了但是打不开网页
  • wordpress 中文网店杭州排名优化公司
  • wordpress建站安全吗wordpress企业主题教程
  • 网站构建的开发费用信息管理系统网站开发教程
  • 自己做网站怎么维护wordpress素材模板
  • 如何选择一个好的优质网站建设公司wordpress 主题小工具
  • mysql数据库做网站广州网站seo地址
  • 福建省住房和城乡建设厅网站电话网站开发项目步骤
  • 网站注册域名多少钱淘宝网商城
  • 做架构图的网站网站和网店的区别
  • 做红包网站简单个人网站设计