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

建网站的8个详细步骤昌乐建设局网站

建网站的8个详细步骤,昌乐建设局网站,东莞网站设计制作公司,房产律师咨询免费24小时在线Redis 数据类型 首先#xff0c;来看一下 Redis 的核心数据类型。Redis 有 8 种核心数据类型#xff0c;分别是 #xff1a; string 字符串类型#xff1b; list 列表类型#xff1b; set 集合类型#xff1b; sorted set 有序集合类型来看一下 Redis 的核心数据类型。Redis 有 8 种核心数据类型分别是 string 字符串类型 list 列表类型 set 集合类型 sorted set 有序集合类型 hash 类型 bitmap 位图类型 geo 地理位置类型 HyperLogLog 基数统计类型。 string 字符串 string 是 Redis 的最基本数据类型。可以把它理解为 Mc 中 key 对应的 value 类型。string 类型是二进制安全的即 string 中可以包含任何数据。 Redis 中的普通 string 采用 raw encoding 即原始编码方式该编码方式会动态扩容并通过提前预分配冗余空间来减少内存频繁分配的开销。 在字符串长度小于 1MB 时按所需长度的 2 倍来分配超过 1MB则按照每次额外增加 1MB 的容量来预分配。 Redis 中的数字也存为 string 类型但编码方式跟普通 string 不同数字采用整型编码字符串内容直接设为整数值的二进制字节序列。 在存储普通字符串序列化对象以及计数器等场景时都可以使用 Redis 的字符串类型字符串数据类型对应使用的指令包括 set、get、mset、incr、decr 等。 list 列表 Redis 的 list 列表是一个快速双向链表存储了一系列的 string 类型的字串值。list 中的元素按照插入顺序排列。插入元素的方式可以通过 lpush 将一个或多个元素插入到列表的头部也可以通过 rpush 将一个或多个元素插入到队列尾部还可以通过 lset、linsert 将元素插入到指定位置或指定元素的前后。 list 列表的获取可以通过 lpop、rpop 从对头或队尾弹出元素如果队列为空则返回 nil。还可以通过 Blpop、Brpop 从队头/队尾阻塞式弹出元素如果 list 列表为空没有元素可供弹出则持续阻塞直到有其他 client 插入新的元素。这里阻塞弹出元素可以设置过期时间避免无限期等待。最后list 列表还可以通过 LrangeR 获取队列内指定范围内的所有元素。Redis 中list 列表的偏移位置都是基于 0 的下标即列表第一个元素的下标是 0第二个是 1。偏移量也可以是负数倒数第一个是 -1倒数第二个是 -2依次类推。 list 列表对于常规的 pop、push 元素性能很高时间复杂度为 O(1)因为是列表直接追加或弹出。但对于通过随机插入、随机删除以及随机范围获取需要轮询列表确定位置性能就比较低下了。 feed timeline 存储时由于 feed id 一般是递增的可以直接存为 list用户发表新 feed就直接追加到队尾。另外消息队列、热门 feed 等业务场景都可以使用 list 数据结构。 操作 list 列表时可以用 lpush、lpop、rpush、rpop、lrange 来进行常规的队列进出及范围获取操作在某些特殊场景下也可以用 lset、linsert 进行随机插入操作用 lrem 进行指定元素删除操作最后在消息列表的消费时还可以用 Blpop、Brpop 进行阻塞式获取从而在列表暂时没有元素时可以安静的等待新元素的插入而不需要额外持续的查询。 set 集合 set 是 string 类型的无序集合set 中的元素是唯一的即 set 中不会出现重复的元素。Redis 中的集合一般是通过 dict 哈希表实现的所以插入、删除以及查询元素可以根据元素 hash 值直接定位时间复杂度为 O(1)。 对 set 类型数据的操作除了常规的添加、删除、查找元素外还可以用以下指令对 set 进行操作。 sismember 指令判断该 key 对应的 set 数据结构中是否存在某个元素如果存在返回 1否则返回 0 sdiff 指令来对多个 set 集合执行差集 sinter 指令对多个集合执行交集 sunion 指令对多个集合执行并集 spop 指令弹出一个随机元素 srandmember 指令返回一个或多个随机元素。 set 集合的特点是查找、插入、删除特别高效时间复杂度为 O(1)所以在社交系统中可以用于存储关注的好友列表用来判断是否关注还可以用来做好友推荐使用。另外还可以利用 set 的唯一性来对服务的来源业务、来源 IP 进行精确统计。 sorted set 有序集合 Redis 中的 sorted set 有序集合也称为 zset有序集合同 set 集合类似也是 string 类型元素的集合且所有元素不允许重复。 但有序集合中每个元素都会关联一个 double 类型的 score 分数值。有序集合通过这个 score 值进行由小到大的排序。有序集合中元素不允许重复但 score 分数值却允许重复。 有序集合除了常规的添加、删除、查找元素外还可以通过以下指令对 sorted set 进行操作。 zscan 指令按顺序获取有序集合中的元素 zscore 指令获取元素的 score 值 zrange指令通过指定 score 返回指定 score 范围内的元素 在某个元素的 score 值发生变更时还可以通过 zincrby 指令对该元素的 score 值进行加减。 通过 zinterstore、zunionstore 指令对多个有序集合进行取交集和并集然后将新的有序集合存到一个新的 key 中如果有重复元素重复元素的 score 进行相加然后作为新集合中该元素的 score 值。 sorted set 有序集合的特点是 所有元素按 score 排序而且不重复 查找、插入、删除非常高效时间复杂度为 O(1)。 因此可以用有序集合来统计排行榜实时刷新榜单还可以用来记录学生成绩从而轻松获取某个成绩范围内的学生名单还可以用来对系统统计增加权重值从而在 dashboard 实时展示。 hash 哈希 Redis 中的哈希实际是 field 和 value 的一个映射表。 hash 数据结构的特点是在单个 key 对应的哈希结构内部可以记录多个键值对即 field 和 value 对value 可以是任何字符串。而且这些键值对查询和修改很高效。 所以可以用 hash 来存储具有多个元素的复杂对象然后分别修改或获取这些元素。hash 结构中的一些重要指令包括hmset、hmget、hexists、hgetall、hincrby 等。 hmset 指令批量插入多个 field、value 映射 hmget 指令获取多个 field 对应的 value 值 hexists 指令判断某个 field 是否存在 如果 field 对应的 value 是整数还可以用 hincrby 来对该 value 进行修改。 bitmap 位图 Redis 中的 bitmap 位图是一串连续的二进制数字底层实际是基于 string 进行封装存储的按 bit 位进行指令操作的。bitmap 中每一 bit 位所在的位置就是 offset 偏移可以用 setbit、bitfield 对 bitmap 中每个 bit 进行置 0 或置 1 操作也可以用 bitcount 来统计 bitmap 中的被置 1 的 bit 数还可以用 bitop 来对多个 bitmap 进行求与、或、异或等操作。 bitmap 位图的特点是按位设置、求与、求或等操作很高效而且存储成本非常低用来存对象标签属性的话一个 bit 即可存一个标签。可以用 bitmap存用户最近 N 天的登录情况每天用 1 bit登录则置 1。个性推荐在社交应用中非常重要可以对新闻、feed 设置一系列标签如军事、娱乐、视频、图片、文字等用 bitmap 来存储这些标签在对应标签 bit 位上置 1。对用户也可以采用类似方式记录用户的多种属性并可以很方便的根据标签来进行多维度统计。bitmap 位图的重要指令包括setbit、 getbit、bitcount、bitfield、 bitop、bitpos 等。 在移动社交时代LBS 应用越来越多比如微信、陌陌中附近的人美团、大众点评中附近的美食、电影院滴滴、优步中附近的专车等。要实现这些功能就得使用地理位置信息进行搜索。地球的地理位置是使用二维的经纬度进行表示的我们只要确定一个点的经纬度就可以确认它在地球的位置。 Redis 在 3.2 版本之后增加了对 GEO 地理位置的处理功能。Redis 的 GEO 地理位置本质上是基于 sorted set 封装实现的。在存储分类 key 下的地理位置信息时需要对该分类 key 构建一个 sorted set 作为内部存储结构用于存储一系列位置点。 在存储某个位置点时首先利用 Geohash 算法将该位置二维的经纬度映射编码成一维的 52 位整数值将位置名称、经纬度编码 score 作为键值对存储到分类 key 对应的 sorted set 中。 需要计算某个位置点 A 附近的人时首先以指定位置 A 为中心点以距离作为半径算出 GEO 哈希 8 个方位的范围 然后依次轮询方位范围内的所有位置点只要这些位置点到中心位置 A 的距离在要求距离范围内就是目标位置点。轮询完所有范围内的位置点后重新排序即得到位置点 A 附近的所有目标。 使用 geoadd将位置名称如人、车辆、店名与对应的地理位置信息添加到指定的位置分类 key 中 使用 geopos 方便地查询某个名称所在的位置信息 使用 georadius 获取指定位置附近不超过指定距离的所有元素 使用 geodist 来获取指定的两个位置之间的距离。 这样是不是就可以实现找到附近的餐厅算出当前位置到对应餐厅的距离这样的功能了 Redis GEO 地理位置利用 Geohash 将大量的二维经纬度转一维的整数值这样可以方便的对地理位置进行查询、距离测量、范围搜索。但由于地理位置点非常多一个地理分类 key 下可能会有大量元素在 GEO 设计时需要提前进行规划避免单 key 过度膨胀。 Redis 的 GEO 地理位置数据结构应用场景很多比如查询某个地方的具体位置查当前位置到目的地的距离查附近的人、餐厅、电影院等。GEO 地理位置数据结构中重要指令包括 geoadd、geopos、geodist、georadius、georadiusbymember 等。 hyperLogLog 基数统计 Redis 的 hyperLogLog 是用来做基数统计的数据类型当输入巨大数量的元素做统计时只需要很小的内存即可完成。HyperLogLog 不保存元数据只记录待统计元素的估算数量这个估算数量是一个带有 0.81% 标准差的近似值在大多数业务场景对海量数据不足 1% 的误差是可以接受的。 Redis 的 HyperLogLog 在统计时如果计数数量不大采用稀疏矩阵存储随着计数的增加稀疏矩阵占用的空间也会逐渐增加当超过阀值后则改为稠密矩阵稠密矩阵占用的空间是固定的约为12KB字节。 通过 hyperLoglog 数据类型你可以利用 pfadd 向基数统计中增加新的元素可以用 pfcount 获得 hyperLogLog 结构中存储的近似基数数量还可以用 hypermerge 将多个 hyperLogLog 合并为一个 hyperLogLog 结构从而可以方便的获取合并后的基数数量。 hyperLogLog 的特点是统计过程不记录独立元素占用内存非常少非常适合统计海量数据。在大中型系统中统计每日、每月的 UV 即独立访客数或者统计海量用户搜索的独立词条数都可以用 hyperLogLog 数据类型来进行处理。
http://www.yayakq.cn/news/2452/

相关文章:

  • 一个ip怎么做多个网站百度seo关键词点击软件
  • 如何构建个人网站安阳贴吧论坛
  • php精品网站建设连云港市建设工程安全监督站网站
  • 泰州营销型网站工程造价信息网官网信息价
  • 全国水利建设市场信用信息平台门户网站比较有设计感的网站
  • 寺庙网站开发建设方案安徽智能网站建设制作
  • 石家庄网站推广专业鑫菲互动网站建设公司
  • 网站名称写什么网易邮箱163登录入口
  • 成都网站排名app开发多少钱?
  • 网站导航插件wordpress第三方账号
  • 动画做a视频在线观看网站太原市手机微网站建设
  • 广告网站制作多少钱卓博人才网手机版
  • 网站开发技术有哪些网站推广具体内容
  • 不用买服务器可以做网站wordpress 不同侧边栏
  • 网站主视觉网站开发岗位群
  • 网上做任务挣钱的网站北大青鸟网站建设
  • 如何优化网站代码梁平网站建设
  • 如何做网站不容易被攻击企业招聘
  • 网站开发例子网络黄页推广软件下载
  • 自己做优惠劵网站赚钱吗wix做的网站能扒下来
  • 汕头建站服务张裕网站建设的目标
  • o2o网站建设好么深圳网站公司招聘
  • 做网站能用的字体如何搭建一个企业子账号网站
  • 做网站用框架么网站备案必须在公司注册地
  • 电子商务网站设计的基本要求管理系统门户网站开发路线
  • 做网站软件有哪些东莞市建设网
  • 苏州比较大的网站公司网站建设项目管理
  • 厦门网站设计制作购物网站服务中心
  • 有没有做卡商的网站wordpress 好慢哪
  • 网站开发实战网络课建一网站要多少钱