redis

推荐列表 站点导航

当前位置:首页 > 数据库 > redis >

Redis的8大数据类型,写得非常好!(2)

来源:网络整理  作者:fen  发布时间:2020-12-25 02:49
127.0.0.1:6379 georadiuschina:city11030500kmwithcoord#显示他人的定位信息 1)1)chongqing 2)1)106.49999767541885376 2)29.52999957900659211 2)1)xian 2)1)108.96000176668167114 2)34.259999644189299...

127.0.0.1:6379> georadius china:city 110 30 500 km withcoord #  显示他人的定位信息  

1) 1) "chongqing"  

   2) 1) "106.49999767541885376"  

      2) "29.52999957900659211"  

2) 1) "xian"  

   2) 1) "108.96000176668167114"  

      2) "34.25999964418929977"  

127.0.0.1:6379>   

127.0.0.1:6379> georadius china:city 110 30 500 km withdist #  显示到中心点的距离  

1) 1) "chongqing"  

   2) "341.9374"  

2) 1) "xian"  

   2) "483.8340"  

127.0.0.1:6379> georadius china:city 110 30 500 km withdist withcoord count 1  # 指定数量  

1) 1) "chongqing"  

   2) "341.9374"  

   3) 1) "106.49999767541885376"  

      2) "29.52999957900659211"  

127.0.0.1:6379> georadius china:city 110 30 500 km withdist withcoord count 2  

1) 1) "chongqing"  

   2) "341.9374"  

   3) 1) "106.49999767541885376"  

      2) "29.52999957900659211"  

2) 1) "xian"  

   2) "483.8340"  

   3) 1) "108.96000176668167114"  

      2) "34.25999964418929977"  

127.0.0.1:6379>  

GEORADIUSBYMEMBER 找出位于指定元素周围的其他元素

127.0.0.1:6379> georadiusbymember china:city shanghai 1000 km  

1) "hangzhou"  

2) "shanghai"  

127.0.0.1:6379>  

geo 底层实现原理其实就是 zset ,可以使用 zset 命令操作 geo

127.0.0.1:6379> zrange china:city 0 -1  

1) "chongqing"  

2) "xian"  

3) "shengzhen"  

4) "hangzhou"  

5) "shanghai"  

6) "beijing"  

127.0.0.1:6379> zrem china:city beijing  # 删除一个元素  

(integer) 1  

127.0.0.1:6379> zrange china:city 0 -1  

1) "chongqing"  

2) "xian"  

3) "shengzhen"  

4) "hangzhou"  

5) "shanghai"  

127.0.0.1:6379>  

2、hyperloglog

基数:数学上集合的元素个数,是不能重复的。

UV(Unique visitor):是指通过互联网访问、浏览这个网页的自然人。访问的一个电脑客户端为一个访客,一天内同一个访客仅被计算一次。

Redis 2.8.9 版本更新了 hyperloglog 数据结构,是基于基数统计的算法。

hyperloglog 的优点是占用内存小,并且是固定的。存储 2^64 个不同元素的基数,只需要 12 KB 的空间。但是也可能有 0.81% 的错误率。

这个数据结构常用于统计网站的 UV。传统的方式是使用 set 保存用户的ID,然后统计 set 中元素的数量作为判断标准。但是这种方式保存了大量的用户 ID,ID 一般比较长,占空间,还很麻烦。我们的目的是计数,不是保存数据,所以这样做有弊端。但是如果使用 hyperloglog 就比较合适了。

127.0.0.1:6379> pfadd mykey a b c d e f g h i j # 创建第一组元素  

(integer) 1  

127.0.0.1:6379> PFCOUNT mykey     # 统计 mykey 基数  

(integer) 10  

127.0.0.1:6379> PFADD mykey2 i j z x c v b n m  # 创建第二组元素  

(integer) 1  

127.0.0.1:6379> PFCOUNT mykey2     # 统计 mykey2 基数  

(integer) 9  

127.0.0.1:6379> PFMERGE mykey3 mykey mykey2  # 合并两组 mykey mykey2 => mykey3  

OK  

127.0.0.1:6379> PFCOUNT mykey3  

(integer) 15  

127.0.0.1:6379>  

3、bitmap 位图

bitmap就是通过最小的单位bit来进行0或者1的设置,表示某个元素对应的值或者状态。一个bit的值,或者是0,或者是1;也就是说一个bit能存储的最多信息是2。

bitmap 常用于统计用户信息比如活跃粉丝和不活跃粉丝、登录和未登录、是否打卡等。

这里使用一周打卡的案例说明其用法:

127.0.0.1:6379> setbit sign 0 1  # 周一打卡了  

(integer) 0  

127.0.0.1:6379> setbit sign 1 0  # 周二未打卡  

(integer) 0  

127.0.0.1:6379> setbit sign 2 0  # 周三未打卡  

(integer) 0  

127.0.0.1:6379> setbit sign 3 1  

(integer) 0  

127.0.0.1:6379> setbit sign 4 1  

(integer) 0  

127.0.0.1:6379> setbit sign 5 1  

(integer) 0  

127.0.0.1:6379> setbit sign 6 0  

(integer) 0  

127.0.0.1:6379>  

查看某一天是否打卡:

127.0.0.1:6379> GETBIT sign 3  

(integer) 1  

127.0.0.1:6379> GETBIT sign 6  

(integer) 0  

127.0.0.1:6379>  

统计:统计打卡的天数

127.0.0.1:6379> BITCOUNT sign  

(integer) 4  

127.0.0.1:6379>  

原文地址:https://mp.weixin.qq.com/s/jA-qxHzVtaCrcHbA63LeCQ

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/sql/redis/8749.shtml

最新文章
详解Redis的慢查询日志 详解Redis的慢查询日志

时间:2020-12-28

如何高效使用Redis作为LR 如何高效使用Redis作为LR

时间:2020-12-28

WINDOWS中REDIS主从配置实现 WINDOWS中REDIS主从配置实现

时间:2020-12-28

redis单线程快的原因和原理 redis单线程快的原因和原理

时间:2020-12-25

Windows操作系统下Redis服务 Windows操作系统下Redis服务

时间:2020-12-25

Windows下Redis安装配置简单 Windows下Redis安装配置简单

时间:2020-12-25

Redis安装教程图解 Redis安装教程图解

时间:2020-12-25

Windows下Redis的安装使用教 Windows下Redis的安装使用教

时间:2020-12-25

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

Redis的8大数据类型,写得非常好!(2)

2020-12-25 编辑:fen

127.0.0.1:6379> georadius china:city 110 30 500 km withcoord #  显示他人的定位信息  

1) 1) "chongqing"  

   2) 1) "106.49999767541885376"  

      2) "29.52999957900659211"  

2) 1) "xian"  

   2) 1) "108.96000176668167114"  

      2) "34.25999964418929977"  

127.0.0.1:6379>   

127.0.0.1:6379> georadius china:city 110 30 500 km withdist #  显示到中心点的距离  

1) 1) "chongqing"  

   2) "341.9374"  

2) 1) "xian"  

   2) "483.8340"  

127.0.0.1:6379> georadius china:city 110 30 500 km withdist withcoord count 1  # 指定数量  

1) 1) "chongqing"  

   2) "341.9374"  

   3) 1) "106.49999767541885376"  

      2) "29.52999957900659211"  

127.0.0.1:6379> georadius china:city 110 30 500 km withdist withcoord count 2  

1) 1) "chongqing"  

   2) "341.9374"  

   3) 1) "106.49999767541885376"  

      2) "29.52999957900659211"  

2) 1) "xian"  

   2) "483.8340"  

   3) 1) "108.96000176668167114"  

      2) "34.25999964418929977"  

127.0.0.1:6379>  

GEORADIUSBYMEMBER 找出位于指定元素周围的其他元素

127.0.0.1:6379> georadiusbymember china:city shanghai 1000 km  

1) "hangzhou"  

2) "shanghai"  

127.0.0.1:6379>  

geo 底层实现原理其实就是 zset ,可以使用 zset 命令操作 geo

127.0.0.1:6379> zrange china:city 0 -1  

1) "chongqing"  

2) "xian"  

3) "shengzhen"  

4) "hangzhou"  

5) "shanghai"  

6) "beijing"  

127.0.0.1:6379> zrem china:city beijing  # 删除一个元素  

(integer) 1  

127.0.0.1:6379> zrange china:city 0 -1  

1) "chongqing"  

2) "xian"  

3) "shengzhen"  

4) "hangzhou"  

5) "shanghai"  

127.0.0.1:6379>  

2、hyperloglog

基数:数学上集合的元素个数,是不能重复的。

UV(Unique visitor):是指通过互联网访问、浏览这个网页的自然人。访问的一个电脑客户端为一个访客,一天内同一个访客仅被计算一次。

Redis 2.8.9 版本更新了 hyperloglog 数据结构,是基于基数统计的算法。

hyperloglog 的优点是占用内存小,并且是固定的。存储 2^64 个不同元素的基数,只需要 12 KB 的空间。但是也可能有 0.81% 的错误率。

这个数据结构常用于统计网站的 UV。传统的方式是使用 set 保存用户的ID,然后统计 set 中元素的数量作为判断标准。但是这种方式保存了大量的用户 ID,ID 一般比较长,占空间,还很麻烦。我们的目的是计数,不是保存数据,所以这样做有弊端。但是如果使用 hyperloglog 就比较合适了。

127.0.0.1:6379> pfadd mykey a b c d e f g h i j # 创建第一组元素  

(integer) 1  

127.0.0.1:6379> PFCOUNT mykey     # 统计 mykey 基数  

(integer) 10  

127.0.0.1:6379> PFADD mykey2 i j z x c v b n m  # 创建第二组元素  

(integer) 1  

127.0.0.1:6379> PFCOUNT mykey2     # 统计 mykey2 基数  

(integer) 9  

127.0.0.1:6379> PFMERGE mykey3 mykey mykey2  # 合并两组 mykey mykey2 => mykey3  

OK  

127.0.0.1:6379> PFCOUNT mykey3  

(integer) 15  

127.0.0.1:6379>  

3、bitmap 位图

bitmap就是通过最小的单位bit来进行0或者1的设置,表示某个元素对应的值或者状态。一个bit的值,或者是0,或者是1;也就是说一个bit能存储的最多信息是2。

bitmap 常用于统计用户信息比如活跃粉丝和不活跃粉丝、登录和未登录、是否打卡等。

这里使用一周打卡的案例说明其用法:

127.0.0.1:6379> setbit sign 0 1  # 周一打卡了  

(integer) 0  

127.0.0.1:6379> setbit sign 1 0  # 周二未打卡  

(integer) 0  

127.0.0.1:6379> setbit sign 2 0  # 周三未打卡  

(integer) 0  

127.0.0.1:6379> setbit sign 3 1  

(integer) 0  

127.0.0.1:6379> setbit sign 4 1  

(integer) 0  

127.0.0.1:6379> setbit sign 5 1  

(integer) 0  

127.0.0.1:6379> setbit sign 6 0  

(integer) 0  

127.0.0.1:6379>  

查看某一天是否打卡:

127.0.0.1:6379> GETBIT sign 3  

(integer) 1  

127.0.0.1:6379> GETBIT sign 6  

(integer) 0  

127.0.0.1:6379>  

统计:统计打卡的天数

127.0.0.1:6379> BITCOUNT sign  

(integer) 4  

127.0.0.1:6379>  

原文地址:https://mp.weixin.qq.com/s/jA-qxHzVtaCrcHbA63LeCQ

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/sql/redis/8749.shtml

相关文章

风云图片

推荐阅读

返回redis频道首页