Redis小秘密
临渊羡鱼,不如退而织网。
想必很多人都能脱口而出String、List、Hash、Sorted Set和Set五种基本数据类型。
以及五大基本数据类型简要区别:
还有五种基本数据类型底层对应的数据结构:
还有五种基本数据类型对应的使用场景:
String
List
Set
Hash
ZSET
还能脱口而出geospatial、hyperloglog和bitmap吗。
1、地理位置-Geospatial
1 # getadd 添加地理位置 2 #规则:两级无法直接添加,我们一般会下载城市数据,直接通过java程序一 次性导入! 3 #有效的经度从-180度到180度。 4 #有效的纬度从-85. 05112878度到85.05112878度。 5 #当坐标位置超出上述指定范围时,该命令将会返回一个错误。 6 GEOADD china:cipty 31.405 12.4894 shanghai # 添加地理位置 geodist china:cipty shenzhen shanghai km # 获取两个地理之间的距离,单位是km geohash china:cipty shenzhen shanghai # 将二维的经纬度转换为-维的字符串,如果两个字符串越接近,那么则距离越近! geopos china:cipty shenzhen #获取指定的城市的经度和纬度!
2、基数统计-Hyperloglog
说明:
一般使用:
1 PFadd mykey aIa b C defghij #创建第一组元素mykey 2 PFCOUNT mykey # 统计mykey元素的基数数量 3 PFadd mykey2 i j z xcvbnm #创建第二组元素mykey2 4 PFMERGE mykey3 mykey mykey2 #合并两组mykey mykey2 => mykey3 并集 5 PFCOUNT mykey3 #看并集的数量!
3、位图-Bitmaps
Bitmaps可用于统计用户信息,活跃、不活跃,登录、未登录,打卡状态如365打卡,两个为打卡的场景下都可以使用Bitmaps。其底层都是操作二进制位来进行记录,就只有0和1两个状态。
1 SETBIT sig 0 1 # 设置位图 2 GETBIT sig 6 # 获取位图 3 ################################ 4 `用户签到`:模拟用户打卡场景,0-6为一周,0为未打卡,1为打卡 5 BITCOUNT sig # 统计用户一周打卡天数
后台启动Redis后即可通过命令打开新窗口使用自带的性能测试工具。
1 # 如只测试set,100万个请求,1亿 2 $ redis-benchmark -t set -n 1000000 -r 100000000
四、Redis可以通过value获取key?
据说是在Redis客户端是无法通过value获取key的,我也不确定,但是在Java业务上是可以实现这样的需求的。
至今未解,有缘人求赐教。(String > ? Hash ? List ? Set ? Hash ? Sorted Set)
临渊羡鱼
不如退而织网