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支持五种数据类型 ...
随机推荐
- Building Applications with Force.com and VisualForce(Dev401)(十五):Data Management: Data management Overview
Dev401-016:Data Management: Data management Overview Course Objectives1.List typical data management ...
- vue - Babel之babel-polyfill、babel-runtime、transform-runtime
引言 babel默认只转换新的 JavaScript 语法,比如箭头函数.扩展运算(spread). 不转换新的 API,例如Iterator.Generator.Set.Maps.Proxy.Ref ...
- 知识图谱与机器学习 | KG入门 -- Part1 Data Fabric
介绍 如果你在网上搜索机器学习,你会找到大约20500万个结果.确实是这样,但是要找到适合每个用例的描述或定义并不容易,然而会有一些非常棒的描述或定义.在这里,我将提出机器学习的另一种定义,重点介绍一 ...
- 打造Worktile敏捷开发管理工具的思与惑
从2019年初,我们团队准备开发一款适合研发团队使用的敏捷开发管理工具,那时候我们也在思考,到底什么样的工具才算是优秀的研发管理工具,研发管理的场景.方法和流派有很多,市面上关于研发管理工具的产品也是 ...
- DNS 域名解析
DNS域名解析 整个过程大体描述如下,其中前两个步骤是在本机完成的,后8个步骤涉及到真正的域名解析服务器:1.浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就结束. ...
- Linux上的软件安装有哪些方式?
Linux上的软件安装有以下几种常见方式介绍 1.二进制发布包 软件已经针对具体平台编译打包发布,只要解压,修改配置即可 2.RPM包 软件已经按照redhat的包管理工具规范RPM进行打包发布,需要 ...
- 大部分程序员还不知道的 Servelt3 异步请求,原来这么简单?
前言 博文地址:https://sourl.cn/URptix 当一个 HTTP 请求到达 Tomcat,Tomcat 将会从线程池中取出线程,然后按照如下流程处理请求: 将请求信息解析为 HttpS ...
- C++ STL模板和标准模板库
一.函数模板 #include<iostream> #include<string> using namespace std; template<class T> ...
- 树莓派中Docker部署.Net Core 3.1 (一)
一.背景 受疫情影响,已经在家强制事假一个月了,除了刷简历外就是在家学习,闲来无事,最近买了几个树莓派4B的板子回来,准备用树莓派搭建个自动部署的平台和微服务示例,长话短说,节约时间,直接进入正题吧 ...
- G - 土耳其冰淇凌 Gym - 101194D(二分答案 + 贪心检验)
熊猫先生非常喜欢冰淇淋,尤其是冰淇淋塔.一个冰淇淋塔由K个冰淇淋球堆叠成一个塔.为了使塔稳定,下面的冰淇淋球至少要有它上面的两倍大.换句话说,如果冰淇淋球从上到下的尺寸是A0, A1, A2,···, ...