이 기사에서는 Redis의 세 가지 특수 데이터 유형에 대해 설명합니다. 관심 있는 친구들은 이에 대해 배울 수 있습니다~
지리 공간적 지리적 위치
Hyperloglog 카디널리티 통계
비트맵 비트맵 장면
[관련 권장 사항: Redis 비디오 튜토리얼]
redis 3.2 버전 출시 Geospatial
자세한 내용은 공식 문서에서 확인할 수 있습니다. 사용법 보기:
https: //www.redis.net.cn/order/3685.html
Geospatial은 다음 시나리오에서 사용할 수 있습니다.
Geospatial에는 6개의 명령만 있습니다
위치정보 추가
좌표 위치가 위에서 지정한 범위를 초과하면 이 명령은 오류를 반환합니다.
지정된 도시의 위도 및 경도 정보를 가져옵니다
127.0.0.1:6379> GEOADD city 113.087559 28.251818 changsha (integer) 1 127.0.0.1:6379> GEOADD city 114.064552 22.548457 shenzhen (integer) 1 127.0.0.1:6379> GEOADD city 104.087045 30.666416 chengdu (integer) 1 127.0.0.1:6379> GEOADD city 118.802422 32.064653 nanjing (integer) 1 127.0.0.1:6379> GEOADD city 106.558434 29.568996 chongqing (integer) 1 127.0.0.1:6379> GEOADD city 121.463615 31.195908 shanghai (integer) 1 127.0.0.1:6379> GEOADD city 117.208093 39.091103 tianjin (integer) 1
다음이 있습니다. 4개 단위:
두 도시 사이의 거리를 구하세요
127.0.0.1:6379> GEOPOS city changsha 1) 1) "113.08755666017532349" 2) "28.25181827470789386" 127.0.0.1:6379> GEOPOS city tianjin 1) 1) "117.20809489488601685" 2) "39.0911021322545551"GEOHASH GEOHASH 핵심 멤버 [멤버...]
하나 이상의 GEOHASH 표현 요소를 반환하고 11자를 반환합니다. Geohash 문자열
127.0.0.1:6379> GEODIST city changsha tianjin "1264101.6876" 127.0.0.1:6379> GEODIST city changsha tianjin km "1264.1017" 127.0.0.1:6379> GEODIST city changsha shenzhen km "641.9034"
127.0.0.1:6379> GEOHASH city changsha 1) "wt02tr5fg00" 127.0.0.1:6379> GEOHASH city changsha beijing 1) "wt02tr5fg00" 2) (nil) 127.0.0.1:6379> GEOHASH city changsha beijing tianjin chongqing 1) "wt02tr5fg00" 2) (nil) 3) "wwgq7hk64t0" 4) "wm7b0yc7zk0"
GEORADIUSBYMEMBER
127.0.0.1:6379> GEORADIUS city 110 30 500 m (empty array) 127.0.0.1:6379> GEORADIUS city 110 30 500 km 1) "chongqing" 2) "changsha" 127.0.0.1:6379> GEORADIUS city 110 30 1000 km 1) "chongqing" 2) "chengdu" 3) "shenzhen" 4) "changsha" 5) "nanjing" 127.0.0.1:6379> GEORADIUS city 110 30 700 km withcoord 1) 1) "chongqing" 2) 1) "106.55843228101730347" 2) "29.56899626404301529" 2) 1) "chengdu" 2) 1) "104.08704489469528198" 2) "30.6664164635846177" 3) 1) "changsha" 2) 1) "113.08755666017532349" 2) "28.25181827470789386" 127.0.0.1:6379> GEORADIUS city 110 30 700 km withdist 1) 1) "chongqing" 2) "335.6530" 2) 1) "chengdu" 2) "572.3911" 3) 1) "changsha" 2) "357.4711" 127.0.0.1:6379> GEORADIUS city 110 30 700 km withhash 1) 1) "chongqing" 2) (integer) 4026059435699931 2) 1) "chengdu" 2) (integer) 4026137831798506 3) 1) "changsha" 2) (integer) 4050903792284309Geospatial의 기본 원리는 Zset Ordered set
을 사용하여 구현됩니다. Zset 명령을 사용하여 Geo를 작동할 수 있습니다. 우리는 Zset 명령을 사용하여
127.0.0.1:6379> GEORADIUSBYMEMBER city tianjin 1000 km 1) "nanjing" 2) "tianjin" 3) "shanghai" 127.0.0.1:6379> GEORADIUSBYMEMBER city tianjin 500 km 1) "tianjin" 127.0.0.1:6379> GEORADIUSBYMEMBER city tianjin 5000 km 1) "chongqing" 2) "chengdu" 3) "shenzhen" 4) "changsha" 5) "shanghai" 6) "nanjing" 7) "tianjin"
기본 번호는 반복되지 않는 숫자입니다. 예: A = {1,2,3,4,5}
그런 다음 A 그리고 B 유니온의 카디널리티는 6
소개Hyperloglog는 redis 버전 2.8.9부터 사용할 수 있는 데이터 구조
redis hyperloglog 카디널리티 통계도 알고리즘입니다
예를 들어 다음과 같은 것이 있습니다. 응용 시나리오:
웹 페이지 방문자 통계, 동일한 사용자가 웹 사이트를 여러 번 방문하면 1로 계산됩니다.
전통적인 방법은 집합 컬렉션을 사용하여 ID를 저장하고 ID 수를 계산하는 것입니다. 세트에서 인원수를 계산하는 방법
이 방법은 문제 없지만, 데이터 양이 많으면 번거롭습니다. 아이디를 알아내도 소용이 없고 숫자만 세면 되기 때문이죠
将多个 Hyperloglog 取并集,得到一个结果 Hyperloglog ,里面的数据是不会重复的
127.0.0.1:6379> PFADD myhash 1 2 3 4 5 6 7 8 (integer) 1 127.0.0.1:6379> pfadd myhash2 3 4 5 6 7 8 9 0 88 99 (integer) 1 127.0.0.1:6379> PFMERGE res myhash myhash2 OK 127.0.0.1:6379> PFCOUNT res (integer) 12 127.0.0.1:6379> PFCOUNT myhash (integer) 8 127.0.0.1:6379> PFCOUNT myhash2 (integer) 10
Bitmaps 位图,位存储
一般用于,统计用户信息,活跃,不活跃,
登录,不登录
打卡,不打卡 等等,两种状态
Bitmaps 位图,也是一种数据结构,是操作二进制的方式来进行记录的,只有 0 和 1 两种状态
例如我们举个例子,来记录着一周每天的心情,1 是开心,0 是沮丧
设置 bit 位的值
获取 bit 位的值
127.0.0.1:6379> SETBIT week 0 1 (integer) 0 127.0.0.1:6379> SETBIT week 1 1 (integer) 0 127.0.0.1:6379> SETBIT week 2 1 (integer) 0 127.0.0.1:6379> SETBIT week 3 0 (integer) 0 127.0.0.1:6379> SETBIT week 4 0 (integer) 0 127.0.0.1:6379> SETBIT week 5 1 (integer) 0 127.0.0.1:6379> SETBIT week 6 1 (integer) 0 127.0.0.1:6379> GETBIT week 6 (integer) 1 127.0.0.1:6379> GETBIT week 5 (integer) 1
更多编程相关知识,请访问:编程视频!!
위 내용은 Redis의 세 가지 특수 데이터 유형에 대한 심층 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!