geospatial(地理位置)
- geospatial将指定的地理空间位置(纬度\经度\名称)添加到指定的key中
这些数据将会存储到sorted set,这样的目的是为了方便使用geoRadius或者geoRadiusByMember命令对数据进行半径查询等操作- sorted set使用一种称为geoHash的技术进行填充.经度和纬度的位是交错的,以形成一个独特的52位整数. sorted set的double score可以代表一个52位的整数,而不会失去经度(GeoHash技术,使用二分法构建唯一的二进制串)
- 有效的经度是-180°到180°,有效的纬度是-85.05112878°到85.05112878°
应用场景
- 查看附近的人
- 微信位置共享
- 地图上直线距离的展示
Hyperloglog(基数)
什么是基础? 不重复的元素
Hyperloglog是用来做基数统计的,其优点是:输入的体积无论多么大,hyperloglog使用的空间总数固定的12KB,利用12KB,它可以计算2^64个不同元素的基数!非常节省空间!但缺点是估算的值,可能存在误差
应用场景
网页统计UV(浏览用户数量,同一天同一个ip多次访问算一次访问,目的是计数,而不是保存用户)
不用传统的set保存用户id来统计,会占用大量内存
Bitmaps(位存储)
Redis提供的Bitmaps这个"数据结构"可以上线对位的操作.Bitmaps本身不是一种数据结构,设计上是字符串,但它可以对字符串的位进行操作.
可以把Bitmaps想象成一个以位为单位数组,数组中的每个单元只能存0或者1,数组下标在bitmaps中叫偏移量.单个bitmaps的最大长度是512MB,即2^32个比特位
应用场景
两种状态的统计都可以使用bitmaps. 例如:统计用户活跃与非活跃数量,登录与非登录,上班打卡等