redis: 其他数据类型(八)
1、geospatial 地理位置
有效的经度从-180度到180度
有效的纬度从-85.05112878度到85.05112878度
当坐标位置超出上述指定范围时,该命令将会返回一个错误
底层实现原理是Zset
设置成员的经纬度:geoadd china:city 116.408 39.904 beijing
127.0.0.1:6379> geoadd china:city 116.408 39.904 beijing #精度 维度 北京
(integer) 1
127.0.0.1:6379> geoadd china:city 121.445 31.213 shanghai #精度 维度 上海
(integer) 1
127.0.0.1:6379> geoadd china:city 117.246 39.117 tianjin #精度 维度 天津
(integer) 1
127.0.0.1:6379> geoadd china:city 117.009 36.663 jinan #精度 维度 济南
(integer) 1
获取指定成员的经纬度:geopos china:city beijing
127.0.0.1:6379> geopos china:city beijing #获取北京经纬度
1) 1) "116.40800267457962036"
2) "39.90399988166036138"
127.0.0.1:6379> geopos china:city chongqing #获取重庆经纬度 不存在返回null
1) (nil)
计算两个成员之间的距离(默认为米):geodist china:city beijing shanghai
127.0.0.1:6379> geodist china:city beijing shanghai #北京上海直线距离 米
"1068232.0171"
127.0.0.1:6379> geodist china:city beijing shanghai km #北京上海直线距离 千米
"1068.2320"
获取附近的人(经纬度):georadius china:city 116.408 39.904 300 km withdist
当前精度 维度 半径距离 单位
127.0.0.1:6379> georadius china:city 116.408 39.904 300 km withdist
1) 1) "tianjin"
2) "113.2839"
2) 1) "beijing"
2) "0.0002"
获取附近的人(经纬度指定数量):georadius china:city 116.408 39.904 300 km withdist count 1
127.0.0.1:6379> georadius china:city 116.408 39.904 300 km withdist count 1
1) 1) "beijing"
2) "0.0002"
获取附近的人(成员):georadiusbymember china:city beijing 300 km withdist
当前精度 维度 半径距离 单位
127.0.0.1:6379> georadiusbymember china:city beijing 300 km withdist
1) 1) "tianjin"
2) "113.2837"
2) 1) "beijing"
2) "0.0000"
获取附近的人(成员指定数量):georadiusbymember china:city beijing 300 km withdist count 1
127.0.0.1:6379> georadiusbymember china:city beijing 300 km withdist count 1
1) 1) "beijing"
2) "0.0000"
查看所有的成员:zrange china:city 0 -1
127.0.0.1:6379> zrange china:city 0 -1
1) "shanghai"
2) "jinan"
3) "tianjin"
4) "beijing"
删除指定成员:zrem china:city jinan
127.0.0.1:6379> zrem china:city jinan #删除济南
(integer) 1
127.0.0.1:6379> zrange china:city 0 -1
1) "shanghai"
2) "tianjin"
3) "beijing"
2、hyperloglogs 基数统计
基数:不重复的元素
A{1、3、5、7、7、9}
不记录重复的元素 = 5{1、3、5、7、9}
比如:统计网站的UV(独立访客)
传统方式可以用set集合 但比较浪费空间 而且相对比较麻烦
存值:pfadd view a a b c d e f g h i j
统计数量:pfcount view
127.0.0.1:6379> pfadd view a a b c d e f g h i j #存入11个值 其中a是重复的
(integer) 1
127.0.0.1:6379> pfcount view #返回10 不统计重复的值
(integer) 10
不重复并集:pfmerge otherview view view2
127.0.0.1:6379> pfadd view a a b c d e f g h i j
(integer) 1
127.0.0.1:6379> pfcount view #view中有10个
(integer) 10
127.0.0.1:6379> pfadd view2 h i j k
(integer) 1
127.0.0.1:6379> pfcount view2 #view2中有4个 但h i j与view中是重复的
(integer) 4
127.0.0.1:6379> pfmerge otherview view view2 #把view和view2合并到otherview
OK
127.0.0.1:6379> pfcount otherview #11个 已去掉重复的
(integer) 11
3、Bitmap 位图
二进制 只有0和1两个值 比如统计活跃 不活跃用户 登录 未登录用户 打卡状态等
存值:setbit sign 20200406 1
127.0.0.1:6379> setbit sign 20200406 1 #4月6日已打卡
(integer) 0
127.0.0.1:6379> setbit sign 20200407 0 #4月7日未打卡
(integer) 0
127.0.0.1:6379> setbit sign 20200408 0 #4月8日未打卡
(integer) 0
查看某一天打卡状态:getbit sign 20200407
127.0.0.1:6379> getbit sign 20200407
(integer) 0
127.0.0.1:6379> getbit sign 20200406
(integer) 1
统计打卡天数(只能统计为1的):**bitcount ** sign
127.0.0.1:6379> bitcount sign
redis: 其他数据类型(八)的更多相关文章
- Redis的数据类型及相关操作命令
redis 基础内容 —— redis的数据类型及相关操作的Linux命令.所谓大厦千层基础承载,希望大家认真学习这一讲: 一.redis 的五大数据类型: 1.String(字符串): 2.List ...
- redis基本数据类型和对应的底层数据结构
Redis的数据类型包含string,list,hash,set,sorted set. Redis中定义了一个对象的结构体: /* * Redis 对象 */ typedef struct redi ...
- Redis常见的八道面试题
一.memcached与redis的区别? 1.存储方式不同.memcached把数据全部存在内存之中,断电之后会挂掉,而redis虽然也用到了内存,但是会有部分数据存在硬盘中,保证数据持久性. ...
- 华为云PB级数据库GaussDB(for Redis)揭秘第八期:用高斯 Redis 进行计数
摘要:高斯Redis,计数的最佳选择! 一.背景 当我们打开手机刷微博时,就要开始和各种各样的计数器打交道了.我们注册一个帐号后,微博就会给我们记录一组数据:关注数.粉丝数.动态数-:我们刷帖时,关注 ...
- Redis常用数据类型介绍、使用场景及其操作命令
Redis常用数据类型介绍.使用场景及其操作命令 本文章同时也在cpper.info发布. Redis目前支持5种数据类型,分别是: 1.String(字符串) 2.List(列表) 3.Hash(字 ...
- Redis笔记(三)Redis的数据类型
前面说过,Redis的一大特性是支持丰富的数据类型, 这为更多的应用场景提供了可能. Redis有五种数据类型,包括string,list,set,sorted set和hash,注意,Redis的数 ...
- Redis常用数据类型
Redis常用数据类型 转载自:http://blog.sina.com.cn/s/blog_7f37ddde0101021q.html Redis最为常用的数据类型主要有以下五种: ●Str ...
- Redis基本数据类型
-------------------Redis基本数据类型------------------- 1.String 字符串 1.概念 1.String 是redis最基本的类 ...
- Redis常用数据类型和事物以及并发
Redis数据类型 基本类型(String int): 如 set key value .get key 等 所有命令都是按照 key value keys * 可以将全部数据列出,其中后面的 &qu ...
- Redis五大数据类型的常用操作
在上一篇博文<centos安装redis>中,已经详细介绍了如何在centos上安装redis,今天主要介绍下Redis五大数据类型及其五大数据类型的相关操作. Redis支持五种数据类型 ...
随机推荐
- [算法总结] 动态规划 (Dynamic Programming)
本文组织结构如下: 前言 最长公共子序列(LCS) 最长不下降子序列(LIS) 最大连续子序列之和 最长回文子串 数塔问题 背包问题(Knapsack-Problem) 矩阵链相乘 总结 前言 在学过 ...
- coding++:mybatis 嵌套查询子查询column传多个参数描述
mybatis 嵌套查询子查询column传多个参数如下: 2.代码示例 备注:注意,相同颜色的单词都是有关联的 <resultMap id="blogResult" typ ...
- 16.如何查找所需的maven的依赖
http://mvnrepository.com/ 1.先打开上面的网址 搜索需要的依赖,点进去 2.选择需要的版本 3.红框中的就是依赖的地址 此外也有其他自动化构建工具所需要的地址
- Python——NumPy库入门
1.数据的纬度 维度:一组数据的组织形式 1.1 一维数据 一维数据由对等关系的有序或无序数据构成,采用线性方式组织 ,对应列表.数组和集合等概念 列表:数据类型可以不同 ,如 3.1413, 'pi ...
- @RequestBody和@RequestParam的使用详解
此次分享转载至:https://blog.csdn.net/justry_deng/article/details/80972817 这边文章讲解的比较透彻,主要是在springboot项目中进行使用 ...
- python class类的属性应用及init初始化实践 ---勇者斗恶龙
最近在熟悉python的基础语法,刚好老师布置了个课后作业感觉挺有意思的,就记录下来了学习过程. 题目如下: 刚拿到题目就想到了init 初始化属性,还列了下思路:(ps:notepad++写的比较糙 ...
- 【docker linux】linux系统镜像转化为docker镜像
概述 使用docker安装linux的同学都知道,你在docker提供的仓库安装linux系统,你就会体验到最精简的.最纯净的linux系统,当然,他会精简到你连ifconfig命令都需要自己配置,恰 ...
- php人民币小写转大写函数,不限长度,精确到分
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://ustb80.blog.51cto.com/6139482/1035327 在打印 ...
- SpringMVC(六):分层整合SSM
环境搭建 版本: MySQL 8 SpringMVC+Spring+Mybatis C3P0连接池 数据库建表 CREATE DATABASE `ssmbuild`; `ssmbuild` DROP ...
- VXLAN 基础教程:VXLAN 协议原理介绍
VXLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网),是一种虚拟化隧道通信技术.它是一种 Overlay(覆盖网络)技术,通过三层的网络来搭建虚拟 ...