《Redis使用手册之HyperLog与地理坐标》
目录
PFADD:对集合元素进行计数
127.0.0.1:6379> pfadd hyperlog a b c
(integer) 1
127.0.0.1:6379> pfadd hyperlog a
(integer) 0
127.0.0.1:6379> pfadd hyperlog d
(integer) 1
PFADD:对集合元素进行计数 PFADD hyperlog element [element ...] - 如果给定的所有元素都已经进行过计数,那么PFADD命令将返回0,表示HYperLog-log计算出的近似基础没有发生变化。 - 如果给定的元素中出现了至少一个之前没有进行过计数的元素,导致Hyperloglog计算的近似基础发生了变化,那么PFADD命令将返回1。
PFADD:对集合元素进行计数
PFCOUNT:返回集合的近似基数
127.0.0.1:6379> pfcount hyperlog
(integer) 4
127.0.0.1:6379> pfadd hyperlog1 d e f
(integer) 1
127.0.0.1:6379> pfcount hyperlog hyperlog1
(integer) 6
PFCOUNT:返回集合的近似基础 PFCOUNT hyperloglog [hyperloglog ...] 返回并集的近似基数
PFCOUNT:返回集合的近似基数
PFMERGE:计算多个HyperLogLog的并集
127.0.0.1:6379> pfadd numbers1 128 256 512
(integer) 1
127.0.0.1:6379> pfadd number2 128 256 512
(integer) 1
127.0.0.1:6379> pfadd number3 128 512 1024
(integer) 1
127.0.0.1:6379> pfmerge union-numbers numbers1 numbers2 numbers3
OK
127.0.0.1:6379> pfcount union-numbers
(integer) 3
127.0.0.1:6379> pfcount numbers1 numbers2 numbers3
(integer) 3
PFMETGE:计算多个HYperLogLog的并集 PFMERGE destination hyperloglog [hyperloglog ...]
PFMERGE:计算多个HyperLogLog的并集
GEOADD:存储坐标
127.0.0.1:6379> geoadd Guangdong-citics 113.2099647 23.593675 qingyuan
(integer) 1
127.0.0.1:6379> geoadd Guangdong-citics 113 23 qingyuan
(integer) 0
GEOPOS:获取指定位置的坐标
127.0.0.1:6379> geopos Guangdong-citics qingyuan
-
"112.99999862909317017"
"23.00000023389439718"
GEOPOS:获取指定位置的坐标
GEOPOS:获取指定位置的坐标
GEODIST:计算两个位置之间的直线距离**
-
127.0.0.1:6379> geodist Guangdong-citics qingyuan guangzhou
"1949897.2806"
127.0.0.1:6379> geodist Guangdong-citics qingyuan guangzhou km
"1949.8973"
GEODIST:计算两个位置之间的直线距离
GEODIST location_set name1 name2
指定距离的单位
GEODIST location_set name1 name2 [unit]
unit参数的值可以是以下单位中的任意一个:
m------以米为单位,为默认单位
km------千米为单位
mi------英里为单位
ft------英尺为单位
GEODIST:计算两个位置之间的直线距离
GEORADIUS:查找指定坐标半径范围内的其他位置
-
127.0.0.1:6379> GEOADD Guangdong-cities 113.2099647 23.593675 Qingyuan 113.2278442 23.1255978 Guangzhou 113.106308 23.0088312 Foshan 113.7943267 22.9761989 Dongguan 114.0538788 22.5551603 Shenzhen 113.4060288 22.5111574 Zhongshan
(integer) 6
127.0.0.1:6379> GEORADIUS Guangdong-cities 112.3351942 23.0586893 50 km
(empty list or set)
127.0.0.1:6379> GEORADIUS Guangdong-cities 112.3351942 23.0586893 100 km
"Foshan"
"Guangzhou"
127.0.0.1:6379> GEORADIUS Guangdong-cities 112.3351942 23.0586893 150 km
"Foshan"
"Guangzhou"
"Dongguan"
"Qingyuan"
"Zhongshan"
127.0.0.1:6379> GEORADIUS Guangdong-cities 112.3351942 23.0586893 250 km
"Zhongshan"
"Shenzhen"
"Foshan"
"Guangzhou"
"Dongguan"
"Qingyuan"
GEORADIUS:查找指定坐标半径范围内的其他位置
GEORADIUS location_set longitude latitude radius unit
location_set参数用于指定执行查找操作的位置集合。
longitude参数和latitude参数分别用于指定中心点的经度和纬度。
radius参数用于指定查找半径。
unit参数用于指定查找半径的单位,与GEODIST命令中的unit参数一样,这个参数的值可以是m(米)、km(千米)、mi(英里)或者ft(英尺)中的任意一个。 返回被匹配位置与中心点之间的距离
georadius location_set longitude latitude radius unit [WITHDIST]
返回被匹配位置的坐标 WITHCOORD
排序查找结果 [ASC|DESC]
限制命令获取的位置数量 [COUNT n]
同时使用多个可选项
127.0.0.1:6379> GEORADIUS Guangdong-cities 112.3351942 23.0586893 250 km withdist withcoord asc count 3
-
"Foshan"
-
"79.1250"
-
- "113.10631066560745239"
- "23.00883120241353907"
-
"Guangzhou"
-
"91.6332"
-
- "113.22784155607223511"
- "23.1255982020608073"
-
"Qingyuan"
-
"107.3463"
-
- "113.20996731519699097"
- "23.59367501967128788"
GEORADIUS:查找指定坐标半径范围内的其他位置
-
GEORADIUSBYMEMBER:查找指定位置半径范围内的其他位置
GEORADIUSBYMEMBER:查找指定位置半径范围内的其他位置 GEORADIUSBYMEMBER location_set name radius unit [WITHDIST] [WITHCOORD] [ASC|DESC] [COUNT n]
GEORADIUSBYMEMBER:查找指定位置半径范围内的其他位置
GEOHASH:获取指定位置的Geohash值
-
127.0.0.1:6379> geohash Guangdong-citics qingyuan
"ws06g7h0dy0"
127.0.0.1:6379> geohash Guangdong-citics qingyuan Guangzhou Shenzhen
"ws06g7h0dy0"
(nil)
"ws107659240"
GEOHASH:获取指定位置的Geohash值 Geohash是一种编码格式,这种格式可以将用户给定的经度和纬度转换成单个Geohash值,也可以根据给定的Geohash值还原出被转换的经度和纬度。
GEOHASH:获取指定位置的Geohash值用户可以通过向GEOHASH命令传入一个或多个位置来获得这些位置对应的经纬度坐标的Geohash表示:
事务
MULTI:开启事务 EXEC:执行事务 DISCARD:放弃事务
MULTI:开启事务
带有乐观锁的事务
MULTI:添加事务
EXEC:提交
-
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set title "Hand in Hand"
QUEUED
127.0.0.1:6379> sadd fruits apple banana cherry
QUEUED
127.0.0.1:6379> rpush numbers 123456 789
QUEUED
127.0.0.1:6379> exec
OK
(integer) 3
(integer) 2
discard:取消事务
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set page_count 10086
QUEUED
127.0.0.1:6379> set download_count 12345
QUEUED
127.0.0.1:6379> discard
OK
127.0.0.1:6379> get page_count
(nil)
带有乐观锁的事物
WATCH:对键进行监视
watch key [key ...]
127.0.0.1:6379> watch user_id_counter
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> incr user_id_counter
QUEUED
127.0.0.1:6379> exec
(integer) 152
127.0.0.1:6379> unwatch
OK
通过同时使用watch命令和Redis事物,我们可以构建出一种针对被监视键的乐观锁机制,确保事物只会在被监视键没有发生任何变化的情况下执行,从而保证事物对被监视键的所有修改都是安全、正确和有效的。
UNWATCH:取消对键的监视。
unwatch 除了显式地执行unwatch命令之外,使用EXEC命令执行事物和使用DISCARD命令取消事物,同样会导致客户端撤销对所有键的监视,这是因为这两个命令在执行之后都会隐式地调用unwatch命令。
带有乐观锁的事务