Redis的新数据类型
Redis的新数据类型
Bitmaps
简介
计算机基础单位
Bitmaps数据类型
- Bitmaps本身不是一种数据类型, 实际上它就是字符串(key-value) , 但是它可以对字符串的位进行操作。
- 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的新数据类型相关推荐
- ❤️Bitmaps、HyperLogLog、Geospatial❤️——Redis三大特殊数据类型详述(万字长文原理讲解,大厂面试高频知识点,一文尽收囊中)
本文已收录于专栏 ❤️<Redis之大厂必备技能包>❤️ 欢迎各位关注.三连博主的文章及专栏,全套Redis学习资料,大厂必备技能! 目录 简介 一.Bitmaps 1.简介 2 .基本操 ...
- Redis新数据类型Geospatial
1.前言 Redis 3.2 中增加了对GEO类型的支持.GEO,Geographic,地理信息的缩写.该类型,就是元素的2维坐标,在地图上就是经纬度.redis基于该类型,提供了经纬度设置,查询,范 ...
- Redis6发布订阅及Redis新数据类型
Redis6 Redis的发布和订阅 什么是发布和订阅 Redis的发布和订阅 发布订阅命令行实现 Redis新数据类型 Bitmaps 常用命令 1.setbit 2.实例 3. getbit 4. ...
- Redis数据实战之GEO在LBS中应用与自定义新数据类型
Redis数据实战之GEO在LBS中应用与自定义新数据类型 引言 面向 LBS 应用的 GEO 数据类型 GEO 的底层结构 GeoHash 的编码方法 如何操作 GEO 类型 如何自定义数据类型 R ...
- Python运维项目中用到的redis经验及数据类型
先感叹下,学东西一定要活学活用! 我用redis也有几年的历史了,今个才想到把集合可以当python list用. 最近做了几个项目都掺杂了redis, 遇到了一些个问题和开发中提高性能的方法, ...
- redis创建像mysql表结构_如何给redis添加新数据结构
前言 作为一款缓存型nosql数据库,redis在诞生之初就以高性能.丰富的数据结构等特性获得业界的青睐.redis默认提供了五种数据类型的支持:string.list.set.zset.hash.针 ...
- redis 读取mysql数据类型_认识Redis与Redis的数据类型
本文作为Redis的入门教程,旨在让大家对Redis有一个概念性和整体性的认识,并且可以快速上手,为深入Redis打下基础. 文章概要: 1. Redis的介绍 2. Redis与其他数据库的对比 3 ...
- NoSQL(1)之 Redis的五大数据类型使用方法的详细介绍
Redis的五大数据类型也称五大数据对象:了解过6大数据结构,Redis并没有直接使用这些结构来实现键值对数据库,而是使用这些结构构建了一个对象系统redisObject:这个对象系统包含了五大数据对 ...
- redis之五大数据类型
redis之五大数据类型 redis redis的两种链接方式 简单链接 1234 import redisconn = redis.Redis(host='10.0.0.200',port=6379 ...
最新文章
- 记一次nginx反向代理做转发遇到的坑
- 2021年河南省高考成绩啥时候查询,2021年河南高考成绩什么时候出来,今天几点钟出成绩可以查询...
- 免费python自学攻略-420小时学习代码之后:如何教你免费自学Python
- Unique Binary Search Trees ll -深度优先遍历DFS
- python3.7降级3.6_请问一下Mac python3.7.1怎么降低到3.6版本?
- 问题三十六:ray tracing中的Inverse Mapping(1)——球面Inverse Mapping
- dell的boot设置
- 六祎-网易云视频下载
- Java多线程编程-(17)-多线程异步调用之Future模式
- CommScope将收购ARRIS:交易金额约达74亿美元,将加速实现CommScope塑造未来通信网络的愿景
- Raid5 Raid10 磁盘IOPS 计算方法
- border 属性样式
- kafka seek方法
- 0_13_QGIS纠正矢量数据
- 书籍_《未来世界的幸存者》阮一峰--2/5
- 永恩上线服务器维护,LOL10.16永恩BUG商城问题介绍-LOL10.16永恩BUG商城问题有哪些_牛游戏网...
- u盘视频计算机里无法播放,电脑里复制了u盘里的视频文件,说无法播放,播放机不支持该文件类型,或不支持...
- 我平时整理的一个生成机器码的类(转载)
- 计算python程序运行时长,并以时分秒形式输出
- 计算机专业英语中tour的意思,计算机专业英语自我介绍