|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
分类:
bdv012-redis
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY