|NO.Z.00010|——————————|BigDataEnd|——|Hadoop&Redis.V10|——|Redis.v10|数据类型.v05|

一、bitmap位图类型
### --- bitmap是进行位操作的

~~~     通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身。
~~~     bitmap本身会极大的节省储存空间。
二、常见操作命令如下表: 
命令名称 命令格式 描述
setbit setbit key offset value 设置key在offset处的bit值(只能是0或者1)。
getbit getbit key offset 获得key在offset处的bit值
bitcount bitcount key 获得key的bit位为1的个数
bitpos bitpos key value 返回第一个被设置为bit值的索引值
bitop bitop and[or/xor/not] destkey key [key …] 对多个key 进行逻辑运算后存入destkey中
### --- 应用场景:

~~~     1、用户每月签到,用户id为key , 日期作为偏移量 1表示签到
~~~     2、统计活跃用户, 日期为key,用户id为偏移量 1表示活跃
~~~     3、查询用户在线状态, 日期为key,用户id为偏移量 1表示在线
### --- 举例:

127.0.0.1:6379> setbit user:sign:1000 20200101 1  # id为1000的用户20200101签到
(integer) 0
127.0.0.1:6379> setbit user:sign:1000 20200103 1  # id为1000的用户20200103签到
(integer) 0
127.0.0.1:6379> getbit user:sign:1000 20200101    # 获得id为1000的用户20200101签到状态1 表示签到
(integer) 1
127.0.0.1:6379> getbit user:sign:1000 20200102    # 获得id为1000的用户20200102签到状态0表示未签到
(integer) 0
127.0.0.1:6379> bitcount user:sign:1000           # 获得id为1000的用户签到次数
(integer) 2
127.0.0.1:6379> bitpos user:sign:1000 1           # id为1000的用户第一次签到的日期
(integer) 20200101
127.0.0.1:6379> setbit 20200201 1000 1            # 20200201的1000号用户上线
(integer) 0  
127.0.0.1:6379> setbit 20200202 1001 1            # 20200202的1000号用户上线
(integer) 0
127.0.0.1:6379> setbit 20200201 1002 1            # 20200201的1002号用户上线
(integer) 0
127.0.0.1:6379> bitcount 20200201                 # 20200201的上线用户有2个
(integer) 2
127.0.0.1:6379> bitop or desk1 20200201 20200202  # 合并20200201的用户和20200202上线了的用户
(integer) 126
127.0.0.1:6379> bitcount desk1                    # 统计20200201和20200202都上线的用户个数
(integer) 3

一、geo地理位置类型
### --- geo地理位置类型

~~~     geo是Redis用来处理位置信息的。在Redis3.2中正式使用。
~~~     主要是利用了Z阶曲线、Base32编码和geohash算法
### --- Z阶曲线

~~~     在x轴和y轴上将十进制数转化为二进制数,
~~~     采用x轴和y轴对应的二进制数依次交叉后得到一个六位数编码。
~~~     把数字从小到大依次连起来的曲线称为Z阶曲线,Z阶曲线是把多维转换成一维的一种方法。
### --- Base32编码

~~~     Base32这种数据编码机制,主要用来把二进制数据编码成可见的字符串,
~~~     其编码规则是:任意给定一个二进制数据,
~~~     以5个位(bit)为一组进行切分(base64以6个位(bit)为一组),
~~~     对切分而成的每个组进行编码得到1个可见字符。
~~~     Base32编码表字符集中的字符总数为32个(0-9、b-z去掉a、i、l、o),
~~~     这也是Base32名字的由来。

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

posted on   yanqi_vip  阅读(24)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示