keyBitMap类型对应得key因为Redis是key-value型offsetBitMap是一个字符串其中每个字符都有对应得索引这个索引就是字符在BitMap中的偏移量offset这个offset的范围是【0232-1】bitValueBitMap数据都是一个仅包含0和1的二进制字符串每个offset位上字符称为bitValue。bitValue的值非0即1。setbit: 为给定key的BitMap数据的offset位置设置值为value。返回值为修改前该offset位置的bitValue。格式setbit key offset value注意对于原BitMap中不存在的offset进行复制字符串会自动伸展以确保它可以将value保存在指定offset上。​字符串伸展时空白位置以0填充。需要注意的是对使用较大offset的setbit操作。内存分配过程可能会造成Redis服务器阻塞。getbit获取指定offset上的位置bitValuebitcount统计字符串中bitValue为1的bit位数量。一般是统计整个字符串也可以指定额外的start和end参数实现对指定范围字符串的统计包括start和end在内。注意这里的start和end的单位是字节不是bit并且从0开始计数。格式bitcount key 【start】 【end】注意start和end可以使用负数-1表示最后一个字节-2表示倒数第二个。​ 对于不存在的key。被当成空字符来处理因此不存在的key进行bitcount操作的结果为0.bitpos返回BitMap中第一个值为指定值的二进制位的位置默认是检测整个BitMap。也可以指定要检测的范围。格式bitpos key bit 【start】 【end】bitop对一个或多个BitMap 进行二进制位操作并将结果保存到destkey上。格式bitop operation destkey key【key...】说明operation 可以是and、or、not、xor 这四种and对一个或多个BitMap 执行按位与操作or对一个或多个BitMap 执行按位或xor对一个或多个BitMap 执行按位异或not对一个或多个BitMap 执行按位异非​ 除了not操作之外其他操作都可以接收对一个或多个BitMap​ 除了not操作之外其他对一个BitMap的操作其实就是一个复制。​ 如果参与运算的多个BitMap长度不同较短的BitMap会以0作为补充位与较长的计算。应用场景由于offset的取值范围很大所以一般应用于大数据量的二值性统计。例如平台活跃用户统计访问或未访问、支持率、考勤统计、图像二值化等。不过对于数据量较小的二值性统计并不适合BitMap使用Set更为合适。HyperLogLog操作命令HyperLogLog 数据类型是一种超级日志记录。该数据类型可以简单理解成一个set集合集合元素为字符串。实际上HyperLogLog 是一种基数计数概率算法通过该算法可以利用极小的内存完成独立总数的统计。pfadd将任意数量的元素添加到HyperLogLog 集合里面格式pfadd key element 【element...】pfcount该命令作用于单个key时返回这个key的HyperLogLog 集合的近似基数(元素个数)​ 作用于多个key时返回所有key的HyperLogLog 集合的并集的近似基数。格式pfcount key 【key...】pfmerge将多个集合合并成一个集合并存储到destkey合并后的HyperLogLog 的基数接近于所有的HyperLogLog 集合的并集。格式pfmerge destkey sourcekey [sourcekey ...]应用场景HyperLogLog 可对数据量超级庞大的日志数据做不精确误差0.81%的去重计数统计。对于平台上每个页面每天的UV数据非常适合使用HyperLogLog 进行记录。Geospatial操作命令Geospatial 地理空间本质上还是一种集合只不过集合元素是一种由三部分构成的数据结构这种数据结构称为空间元素经度longitude。有效经度为【-180180】.正的表示东经负的表示西经。纬度latitude。有效维度为【-85.0511287885.05112878】正的表示北纬负的表示南纬位置名称也称为该85.05112878集合的空间元素名称。该类型可以设置、查询地理位置的经纬度查询某范围内的空间元素计算两个空间元素间的距离等。geoadd将一个或多个空间元素添加到集合中格式groadd key longitude latitude member 【 longitude latitude member...】geopos从指定的地理空间中返回指定元素的位置即经纬度格式geopos key member [member...]geodist返回2个位置之间的距离。其中unit必须是以下单位的一种m米默认、km、mi英里、ft英尺格式geodist key member1 member2 [unit]geohash:返回一个或多个位置元素的geohash值。格式geohash key member 【member...】说明geohash是一种地址编码方法它能把二维的空间经纬度数据编码成一个字符串该值主要用于底层应用或者调试实际作用不大。georadius以指定的经纬度为中心返回指定地理空间中包含的所有位置元素中与中心举例不超过半径的元素返回时还可以携带额外信息withdist返回时携带位置元素与中心之间的距离单位和用户给定的范围单位保持一致。withcoord将位置元素的经纬度也返回withhash将位置元素的geohash也返回不过这个hash以整数形式表示。命令默认返回未排序的位置元素。可通过以下两个参数指定返回位置元素的排序方式asc根据中心位置从近到远的方式排序desc根据中心位置从远到近的方式排序返回结果包含中心点元素。格式georadius key longitude latitude radius 【unit】【withcoord】【withdist】【withhash】【asc|desc】 [count]georadiusbymember和上面命令一样只是该命令的中心是由位置元素给定的而不是经纬度。格式georadiusbymember key member radius 【unit】【withcoord】【withdist】【withhash】【asc|desc】 [count]应用场景微信发现中的“附近”功能钉钉签到功能等。发布/订阅命令消息系统发布/订阅pub/sub 是一种消息通信模式发布者消息生产者生产和发送消息到存储系统订阅者消息消费者从存储系统接收和消费消息。这个存储系统可以是文件系统FS、消息中间件MQ、数据库管理系统DBMS也可以是Redis。订阅者订阅消息后只要存储系统中有该类消息就可以不断的接收并消费这些消息。