Redis的新数据类型

Bitmaps

简介

计算机基础单位

Bitmaps数据类型

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

我的理解

Bitmaps是String类型的键值对

Bitmaps以位为单位,每个单位的值是0或1

(让我想到了可以进行用户的签到,每日签到的记录)

因为Bitmaps的单位很小,所以做记录之后消耗的内存就很小

常见命令

命令格式 描述
setbit 设置Bitmaps中某个偏移量的值(0或1)
偏移量从0开始,类似于下标
getbit 获得指定偏移量上的值
bitcount[start end] 统计字符串从start字节到end字节比特值为1的数量

操作演示

Bitmaps与Set的对比

假设网站有1亿用户, 每天独立访问的用户有5千万, 如果每天用集合类型和Bitmaps分别存储活跃用户可以得到表

从图可以看出Bitmaps的存储优势,针对特殊的条件占用资源远远小于Set

HypeLoglog

介绍

在工作当中,我们经常会遇到与统计相关的功能需求,比如统计网站PV(PageView页面访问量),可以使用Redis的incr、incrby轻松实现。但是消耗资源较大

HypeLoglog可以做到很好的基数统计算法

HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。

什么是基数?

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

常用命令

命令格式 描述
pfadd < element> [element …] 添加指定元素到 HyperLogLog 中
pfcount [key …] 计算HLL的近似基数,可以计算多个HLL,比如用HLL存储每天的UV,计算一周的UV可以使用7天的UV合并计算即可
pfmerge [sourcekey …] 将一个或多个HLL合并后的结果存储在另一个HLL中,比如每月活跃用户可以使用每天的活跃用户来合并计算可得

Geospatial

介绍

Redis 3.2 中增加了对GEO类型的支持。GEO,Geographic,地理信息的缩写。该类型,就是元素的2维坐标,在地图上就是经纬度。redis基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度Hash等常见操作。

常用命令

命令格式 描述
geoadd< longitude> [longitude latitude member…] 添加地理位置(经度,纬度,名称)
geopos [member…] 获得指定地区的坐标值
geodist 获取两个位置之间的直线距离

geodist [m|km|ft|mi ]

m 表示单位为米[默认值]。

km 表示单位为千米。

mi 表示单位为英里。

ft 表示单位为英尺。

如果用户没有显式地指定单位参数, 那么 GEODIST 默认使用米作为单位

m 表示单位为米[默认值]。

km 表示单位为千米。

mi 表示单位为英里。

ft 表示单位为英尺。

如果用户没有显式地指定单位参数, 那么 GEODIST 默认使用米作为单位

Redis的新数据类型相关推荐

  1. ❤️Bitmaps、HyperLogLog、Geospatial❤️——Redis三大特殊数据类型详述(万字长文原理讲解,大厂面试高频知识点,一文尽收囊中)

    本文已收录于专栏 ❤️<Redis之大厂必备技能包>❤️ 欢迎各位关注.三连博主的文章及专栏,全套Redis学习资料,大厂必备技能! 目录 简介 一.Bitmaps 1.简介 2 .基本操 ...

  2. Redis新数据类型Geospatial

    1.前言 Redis 3.2 中增加了对GEO类型的支持.GEO,Geographic,地理信息的缩写.该类型,就是元素的2维坐标,在地图上就是经纬度.redis基于该类型,提供了经纬度设置,查询,范 ...

  3. Redis6发布订阅及Redis新数据类型

    Redis6 Redis的发布和订阅 什么是发布和订阅 Redis的发布和订阅 发布订阅命令行实现 Redis新数据类型 Bitmaps 常用命令 1.setbit 2.实例 3. getbit 4. ...

  4. Redis数据实战之GEO在LBS中应用与自定义新数据类型

    Redis数据实战之GEO在LBS中应用与自定义新数据类型 引言 面向 LBS 应用的 GEO 数据类型 GEO 的底层结构 GeoHash 的编码方法 如何操作 GEO 类型 如何自定义数据类型 R ...

  5. Python运维项目中用到的redis经验及数据类型

    先感叹下,学东西一定要活学活用!   我用redis也有几年的历史了,今个才想到把集合可以当python list用.  最近做了几个项目都掺杂了redis, 遇到了一些个问题和开发中提高性能的方法, ...

  6. redis创建像mysql表结构_如何给redis添加新数据结构

    前言 作为一款缓存型nosql数据库,redis在诞生之初就以高性能.丰富的数据结构等特性获得业界的青睐.redis默认提供了五种数据类型的支持:string.list.set.zset.hash.针 ...

  7. redis 读取mysql数据类型_认识Redis与Redis的数据类型

    本文作为Redis的入门教程,旨在让大家对Redis有一个概念性和整体性的认识,并且可以快速上手,为深入Redis打下基础. 文章概要: 1. Redis的介绍 2. Redis与其他数据库的对比 3 ...

  8. NoSQL(1)之 Redis的五大数据类型使用方法的详细介绍

    Redis的五大数据类型也称五大数据对象:了解过6大数据结构,Redis并没有直接使用这些结构来实现键值对数据库,而是使用这些结构构建了一个对象系统redisObject:这个对象系统包含了五大数据对 ...

  9. redis之五大数据类型

    redis之五大数据类型 redis redis的两种链接方式 简单链接 1234 import redisconn = redis.Redis(host='10.0.0.200',port=6379 ...

最新文章

  1. 记一次nginx反向代理做转发遇到的坑
  2. 2021年河南省高考成绩啥时候查询,2021年河南高考成绩什么时候出来,今天几点钟出成绩可以查询...
  3. 免费python自学攻略-420小时学习代码之后:如何教你免费自学Python
  4. Unique Binary Search Trees ll -深度优先遍历DFS
  5. python3.7降级3.6_请问一下Mac python3.7.1怎么降低到3.6版本?
  6. 问题三十六:ray tracing中的Inverse Mapping(1)——球面Inverse Mapping
  7. dell的boot设置
  8. 六祎-网易云视频下载
  9. Java多线程编程-(17)-多线程异步调用之Future模式
  10. CommScope将收购ARRIS:交易金额约达74亿美元,将加速实现CommScope塑造未来通信网络的愿景
  11. Raid5 Raid10 磁盘IOPS 计算方法
  12. border 属性样式
  13. kafka seek方法
  14. 0_13_QGIS纠正矢量数据
  15. 书籍_《未来世界的幸存者》阮一峰--2/5
  16. 永恩上线服务器维护,LOL10.16永恩BUG商城问题介绍-LOL10.16永恩BUG商城问题有哪些_牛游戏网...
  17. u盘视频计算机里无法播放,电脑里复制了u盘里的视频文件,说无法播放,播放机不支持该文件类型,或不支持...
  18. 我平时整理的一个生成机器码的类(转载)
  19. 计算python程序运行时长,并以时分秒形式输出
  20. 计算机专业英语中tour的意思,计算机专业英语自我介绍

热门文章

  1. 瑞云科技副总经理黄金进受邀出席2023广东超聚变生态伙伴大会并作主题演讲
  2. Python医学数据分析入门,推荐你学习这本书
  3. STM32学习(十二)
  4. 日本免水羽绒服清洗剂,好用到让干洗店倒闭!
  5. 用java实现队列(简易)
  6. php实现网站监控--web安全
  7. 【Java 8】新的日期时间API
  8. [译] PyCon 2018: 玛利亚塔·维加亚 —— 什么是 Python 核心开发者?(附视频中文字幕)...
  9. 我成为谷歌开发者专家啦
  10. 跑付app全民健身零元创业