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

龙岗网站开发公司/博客营销案例

龙岗网站开发公司,博客营销案例,乐陵新闻最新消息今天,工作态度和责任心句子目录 Bitmaps 简介 命令 Bitmaps和set对比 HyperLogLog 介绍 命令 Geospatial 简介 命令 Bitmaps 简介 现代计算机用二进制(位)作为信息的基本单位,1个字节等于8位。合理的使用和操作位可以有效的提高内存的使用率和开发效率。 redis提供了Bitmaps这个"数据类…

目录

Bitmaps

        简介

        命令

         Bitmaps和set对比

HyperLogLog

        介绍

        命令

 Geospatial

        简介

        命令


Bitmaps

        简介

        现代计算机用二进制(位)作为信息的基本单位,1个字节等于8位。合理的使用和操作位可以有效的提高内存的使用率和开发效率。

        redis提供了Bitmaps这个"数据类型"可以实现对位的操作。

  • Bitmaps本身不是一种数据类型,实际上它就是字符串,但是它可以对字符串的位进行操作。
  • Bitmaps单独提供了一套命令,所以在redis中使用Bitmaps和使用字符串的方法不大相同。可以将Bitmaps想象成一个以位为单位的数组,数组的每个单位只能存储0和1,数组的下标在Bitmaps中叫做偏移量。

        命令

  • setbit:向Bitmaps中插入数据。

格式:setbit key offset value //offset:偏移量从0开始

实例:

        每个独立的用户是否访问过网站保存在Bitmaps中,将访问过的用户置1,没有访问过的用户置0,使用用户id作偏移量。

        假设现在有20个用户,用户id为1,6,11,15,19的用户访问过网站。使用命令初始化数据如下:

  •  getbit:获得Bitmaps中对应偏移量的值

格式:getbit key offset

获得Bitmaps中第offset位的值。从0开始算。

 注释:因为115根本不存在,所以也返回0。

  • bitcount:统计字符串被设置为1的位的个数。也可以指定start和end参数,可以让计数只在特定的位上进行。start和end可以为负数,比如:-1表示最后一位,-2表示倒数第二位。start和end不填写时表示查找范围为全部。

        start和end的范围为[start,end],且start和end表示的是字节的下标数

格式:bitcount key start end

统计字符串从start字节到end字节比特位为1的个数。

由上面的例子知道第1,6,11,15,19位为1。最少占3字节。

 注意:setbit是设置第几位的值。bitcount计算的是以字节为单位范围内1的个数。

  • bitop:是一个复合操作,它可以做多个Bitmaps的and(交集),or(并集),not(非),xor(异或)操作。

格式:bitop 复合操作 destkey key [key... ...]

//符合操作后的结果保存早destkey中。

实例:

         Bitmaps和set对比

        假设有1亿个用户,每天独立访问的用户有5千万。使用set集合和bitmaps来保存活跃的用户可以得到表:

        set只需要保存活跃的用户,而bitmaps的重点在于标明用户是否活跃。所以set需要存储的用户量为5千万,bitmaps则需要表明所有用户是否活跃,所以需要存储的用户量为1亿,但是只需要用1位来表明即可。

         很明显,使用Bitmaps能节省很多的内存空间,尤其是随着时间的推移,节省的内存空间更多。

        但是,当活跃的用户量比较少时,set保存活跃用户的id,记录的的用户数量少,占用的内存会比较少。而bitmaps还是需要记录所有用户是否活跃。这个时候使用bitmaps就不大合适了。

HyperLogLog

        介绍

        在工作中,我们经常会遇到按照搜索记录需要进行去重和计数的问题。这种在集合中求不重复的元素和计数的问题称为基数问题。

        什么是基数:不重复元素个数。

        比如数据集合{1,3,5,7,5,7,9},那么这个集合的基数集为{1,3,5,7,9}。基数(不重复元素)为5。基数估计就是在误差可接受的范围内,快速计算基数。

        解决基数问题的方案有很多:

  • 数据保存在Mysql中,使用distinct count计算不重复个数。
  • 使用Redis提供的hash,set,bitmaps可以进行去重。

        但是随着数据量的增加,导致占用空间越来越大,对于非常大的数据集是不切实际的。

        能否降低一定的精度来平衡存储空间?redis推出了HyperLogLog。

        Redis的HyperLogLog是用来做基数统计的算法,优点在于,在输入元素的数量或者体积非常大时,计算基数所需要的空间总是固定的,并且非常的小。在Redis中,每一个HyperLogLog键只需要花费12KB的内存,就可以计算2^64个不同元素的基数。

        但是。因为HyperLogLog只会根据输入的元素来计算基数,而不会存储元素本身,所以HyperLogLog不能像集合一样,返回输入的各个元素。

        命令

  • pfadd:向HyperLogLog中输入元素。

格式:pfadd key element element ...

当执行命令后,HyperLogLog数据结构中估计的近似基数发生变化,则返回1,如果基数没有变化,返回0.

实例:

  •  pfcount:计算HyperLogLog数据结构中近似的基数。可以计算多个HyperLogLog,计算多个HyperLogLog的基数,则是将每一个HyperLogLog合并起来计算。

格式:pfcount key

  •  pfmerge:将一个或者多个HyperLogLog合并后的结果存储在另外一个HyperLogLog中。

格式:pfmerge destkey key1 key2...

 Geospatial

        简介

        该类型是用来记录地理信息的操作,用来表示的是元素的二维坐标,在地图上的经纬度。redis基于该类型,提供了经纬度的设置,查询,范围查询,距离查询,经纬度的Hash等常见操作。

        命令

  • geoadd:添加地理位置(经度,纬度,名称)

格式:geoadd key 经度 维度 名称

         两极无法直接添加,有效经度从-180度到180度,纬度从-85.05112878度到85.05112878度。

        当坐标位置超出指定范围,该命令返回一个错误。

        已经添加的数据,无法再次添加。

  • geopos:获取指定地区的坐标

格式:geopos key 名称

  •  geodist:获取两位置之间的直线距离

格式:geodist key 名称1 名称2 距离单位

距离单位有:m:米,km:千米,ft:英尺,mi:英里。默认使用米作为单位。

  •  georadius:以给定经纬度为中心,找出某一半径内的元素。

格式:georadius key 经度 纬度 半径范围 距离单位

 

 

相关文章:

Redis新数据类型

目录 Bitmaps 简介 命令 Bitmaps和set对比 HyperLogLog 介绍 命令 Geospatial 简介 命令 Bitmaps 简介 现代计算机用二进制(位)作为信息的基本单位,1个字节等于8位。合理的使用和操作位可以有效的提高内存的使用率和开发效率。 redis提供了Bitmaps这个"数据类…...

使用Python绘制股票CCI指标曲线

本文使用Python语言绘制一只股票的CCI(Commodity channel index)曲线,论文参考《Commodity channel index: Tool for trading cyclic trends》,该指标可以用来测量股价、外汇或者贵金属交易是否已超出常态分布范围,​ …...

【C语言技能树】浮点数在内存中的存储

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…...

Spring框架源码(五) @configuration源码深度解析

Configuration 注解是spring-context模块提供的一个给开发者使用的配置类注解,开发者可以通过Configuration注解来定义配置类,也可以使用xml形式注入。 例如配置数据库配置,定义一个配置类,注入数据源DataSource, 事务管理器Trans…...

gcc/g++从入门到精通(3)gcc头文件、库搜索路径方式全面盘点

🎀 关于博主👇🏻👇🏻👇🏻 🥇 作者简介: 热衷于知识探索和分享的技术博主。 💂 csdn主页::【奇妙之二进制】 ✍️ 微信公众号:【Linux 世界】 🎉精彩专栏: 🎓 【面向工作git基础教程】 ​ 🧡 【C++11新特性深入剖析】 ​ 📚【shell脚本编程基础与...

Android Studio多渠道打包及自动化构建

Android 有不同的应用市场,也就是不同的渠道,需要为每个应用市场打一个安装包,但主要的代码是一样的,可能部分资源不一样,部分代码不一样,如果每个渠道都需要修改,然后打包,非常耗时…...

基于MATLAB的MIMO信道估计(附完整代码与分析)

目录 一. 介绍 二. MATLAB代码 三. 运行结果与分析 一. 介绍 本篇将在MATLAB的仿真环境中对比MIMO几种常见的信道估计方法的性能。 有关MIMO的介绍可看转至此篇博客: MIMO系统模型构建_唠嗑!的博客-CSDN博客 在所有无线通信中,信号通过…...

Python代码游戏————星球大战

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放,树高千尺,落叶归根人生不易,人间真情 目录 一.Python介绍 二.游戏效果呈现 三.主代码 四....

java向Word模板中替换书签数据,插入图片,插入复选框,插入Word中表格的行数据,删除表格行数据

java向Word模板中替换书签数据,插入图片,插入复选框,插入Word中表格的行数据,删除表格行数据 使用插件:spire.doc 创建工具类,上代码: import com.spire.doc.Document; import com.spire.doc.…...

Java基础知识快速盘点(二)

一,类型转换 隐式转换 将一个类型转换为另一个类型时,系统默认转换常量优化机制算术运算时类型的隐式转换(byte,short在算术运算时都会转换为int)char类型在进行运算时会根据其编码值进行运算 显式转换 二&#xff0…...

企业降本增效的催化剂:敏捷迭代

伴随着开源技术的大爆发,新一代的软件技术如雨后春笋般层出不穷。每家企业在硬件及软件开发上都有许多开源技术可选,目的还是在于提高效率,降低开发成本。 本篇文章,带大家了解下促进企业降本增效的重要理念:敏捷迭代…...

MySQL入门篇-MySQL高级窗口函数简介

备注:测试数据库版本为MySQL 8.0 这个blog我们来聊聊MySQL高级窗口函数 窗口函数在复杂查询以及数据仓库中应用得比较频繁 与sql打交道比较多的技术人员都需要掌握 如需要scott用户下建表及录入数据语句,可参考:scott建表及录入数据sql脚本 分析函数有3个基本组成…...

什么是 API(应用程序接口)?

API(应用程序接口)是一种软件中介,它允许两个不相关的应用程序相互通信。它就像一座桥梁,从一个程序接收请求或消息,然后将其传递给另一个程序,翻译消息并根据 API 的程序设计执行协议。API 几乎存在于我们…...

如何在外网访问内网的 Nginx 服务?

计算机业内人士对Nginx 并不陌生,它是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,除了nginx外,类似的apache、tomcat、IIS这几种都是主流的中间件。 Nginx 是在 BSD-like 协议下发行的&…...

vue2中defineProperty和vue3中proxy区别

区别一:defineProperty 是对属性劫持,proxy 是对代理对象 下面我们针对一个对象使用不同的方式进行监听,看写法上有什么不同。 // 原始对象 const data {name: Jane,age: 21 }defineProperty defineProperty 只能劫持对象的某一个属性&…...

将bean注入Spring容器的五种方式

前言 我们在项目开发中都用到Spring,知道对象是交由Spring去管理。那么将一个对象加入到Spring容器中,有几种方法呢,我们来总结一下。 ComponentScan Component ComponentScan可以放在启动类上,指定要扫描的包路径;…...

C生万物 | 常量指针和指针常量的感性理解

文章目录📚引言✒常量指针🔍介绍与分析📰小结与记忆口诀✒指针常量🔍介绍与分析📰小结与记忆口诀👉一份凉皮所引发的故事👈总结与提炼📚引言 本文我们来说说大家很困惑的两个东西&am…...

python 打包工具 pyinstaller和Nuitka区别

1.1 使用需求 这次也是由于项目需要,要将python的代码转成exe的程序,在找了许久后,发现了2个都能对python项目打包的工具——pyintaller和nuitka。 这2个工具同时都能满足项目的需要: 隐藏源码。这里的pyinstaller是通过设置key来…...

Python解题 - CSDN周赛第28期

上一期周赛问哥因为在路上,无法参加,但还是抽空登上来看了一下题目。4道题都挺简单的,有点遗憾未能参加。不过即使参加了,手速也未必能挤进前十。 本期也是一样,感觉新增的题目都偏数学类,基本用不到所谓的…...

DNS记录类型有哪些,分别代表什么含义?

DNS解析将域名指向IP地址,是互联网中的一项重要服务。而由于业务场景不同,在设置DNS解析时,需要选择不同的记录类型。网站管理人员需要准确了解每一种DNS记录类型所代表的含义和用途,才能满足不同场景的解析需求。本文中科三方简单…...

ICLR 2022—你不应该错过的 10 篇论文(上)

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 ICLR 2023已经放榜,但是今天我们先来回顾一下去年的ICLR 2022! ICLR 2022将于2022年 4 月 25 日星期一至 4 月 29 日星期五在线举行(连续第三年!&#xf…...

HydroD 实用教程(三)环境数据

目 录一、前言二、Location三、Wind Profile四、Directions五、Water5.1 Wave Spectrums5.2 Current Profile5.3 Frequency Set5.4 Phase Set5.5 Wave Height5.6 Regular Wave Set六、参考文献一、前言 SESAM (Super Element Structure Analysis Module)…...

第四章 统计机器学习

机器学习:从数据中学习知识; 原始数据中提取特征;学习映射函数f;通过映射函数f将原始数据映射到语义空间,即寻找数据和任务目标之间的关系; 机器学习: 监督学习:数据有标签&#x…...

Redis第一讲

目录 一、Redis01 1.1 NoSql 1.1.1 NoSql介绍 1.1.2 NoSql起源 1.1.3 NoSql的使用 1.2 常见NoSql数据库介绍 1.3 Redis简介 1.3.1 Redis介绍 1.3.2 Redis数据结构的多样性 1.3.3 Redis应用场景 1.4 Redis安装、配置以及使用 1.4.1 Redis安装的两种方式 1.4.2 Redi…...

Java面试题-消息队列

消息队列 1. 消息队列的使用场景 六字箴言:削峰、异步、解耦 削峰:接口请求在某个时间段内会出现峰值,服务器在达到峰值的情况下会奔溃;通过消息队列将请求进行分流、限流,确保服务器在正常环境下处理请求。异步&am…...

基于离散时间频率增益传感器的P级至M级PMU模型的实现(Matlab代码实现)

👨‍🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…...

9个相见恨晚的提升办公效率的网站!

推荐9个完全免费的神器网站,每一个都是功能强大,完全免费,良心好用,让你相见恨晚。 1:知犀思维导图 https://www.zhixi.com/ 知犀思维导图是一个完全免费的宝藏在线思维导图工具。它完全免费,界面简洁唯美…...

java的双亲委派模型-附源码分析

1、类加载器 1.1 类加载的概念 要了解双亲委派模型,首先我们需要知道java的类加载器。所谓类加载器就是通过一个类的全限定名来获取描述此类的二进制字节流,然后把这个字节流加载到虚拟机中,获取响应的java.lang.Class类的一个实例。我们把实…...

Docker 笔记

Docker docker pull redis:5.0 docker images [image:57DAAA3E-CC88-454B-B8AC-587E27C9CD3A-85324-0001A93C6707F2A4/93F703D2-5F44-49AB-83C7-05E2E22FB226.png] Docker有点类似于虚拟机 区别大概: docker:启动 Docker 相当于启动宿主操…...

用户认证-cookie和session

无状态&短链接 短链接的概念是指:将原本冗长的URL做一次“包装”,变成一个简洁可读的URL。 什么是短链接-> https://www.cnblogs.com/54chensongxia/p/11673522.html HTTP是一种无状态的协议 短链接:一次请求和一次响应之后&#…...