>  기사  >  데이터 베이스  >  Redis의 세 가지 특수 데이터 유형에 대한 심층 분석

Redis의 세 가지 특수 데이터 유형에 대한 심층 분석

青灯夜游
青灯夜游앞으로
2021-08-24 10:57:102271검색

이 기사에서는 Redis의 세 가지 특수 데이터 유형에 대해 설명합니다. 관심 있는 친구들은 이에 대해 배울 수 있습니다~

Redis의 세 가지 특수 데이터 유형에 대한 심층 분석

redis의 세 가지 특수 데이터 유형

  • 지리 공간적 지리적 위치

  • Hyperloglog 카디널리티 통계

  • 비트맵 비트맵 장면

[관련 권장 사항: Redis 비디오 튜토리얼]

Geospatial 지리적 위치

redis 3.2 버전 출시 Geospatial

자세한 내용은 공식 문서에서 확인할 수 있습니다. 사용법 보기:

https: //www.redis.net.cn/order/3685.html

Redis의 세 가지 특수 데이터 유형에 대한 심층 분석

Geospatial은 다음 시나리오에서 사용할 수 있습니다.

  • 주변 사람들
  • 택시를 타고 거리를 계산하세요
  • 친구 위치 지정
  • 그리고 일련의 위치 관련 시나리오

Geospatial에는 6개의 명령만 있습니다

GEOADD

위치정보 추가

  • 유효한 경도는 -180도부터 180도까지입니다.
  • 유효한 위도는 -85.05112878도부터 85.05112878도까지입니다.

좌표 위치가 위에서 지정한 범위를 초과하면 이 명령은 오류를 반환합니다.

  • GEOADD 키 [NX |

지정된 도시의 위도 및 경도 정보를 가져옵니다

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

GEODIST

  • GEODIST 키 member1 member2 [m|km|ft|mi]

다음이 있습니다. 4개 단위:

m: 미터km: 킬로미터

    ft: 피트
  • mi: 마일

두 도시 사이의 거리를 구하세요

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"

GEORADIUS

GEORADIUS 키 경도 위도 반경 m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC|DESC] [ STORE 키] [STOR
  • 경도와 위도를 원점으로 지정하고, 반경을 지정하고, 지정된 범위 내의 도시를 쿼리합니다. 이 도시는 모두 자체 컬렉션에 있습니다
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

GEORADIUSBYMEMBER 키 멤버 반경 m|km|ft |mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC|DESC] [STORE 키] [STOREDIST 키]
  • 주변에 위치한 도시를 찾습니다. 지정된 요소
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) 4050903792284309

Geospatial의 기본 원리는 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"
    Hyperloglog 카디널리티 통계
  • 를 경험합니다.
카디널리티란 무엇인가요?

기본 번호는 반복되지 않는 숫자입니다. 예: A = {1,2,3,4,5}

B = {2,3,4,5,6}

그런 다음 A 그리고 B 유니온의 카디널리티는 6

소개

Hyperloglog는 redis 버전 2.8.9부터 사용할 수 있는 데이터 구조

redis hyperloglog 카디널리티 통계도 알고리즘입니다

예를 들어 다음과 같은 것이 있습니다. 응용 시나리오:

웹 페이지 방문자 통계, 동일한 사용자가 웹 사이트를 여러 번 방문하면 1로 계산됩니다.

전통적인 방법은 집합 컬렉션을 사용하여 ID를 저장하고 ID 수를 계산하는 것입니다. 세트에서 인원수를 계산하는 방법

이 방법은 문제 없지만, 데이터 양이 많으면 번거롭습니다. 아이디를 알아내도 소용이 없고 숫자만 세면 되기 때문이죠

    장점
  • Hyperloglog가 차지하는 메모리 공간은 고정되어 있으며 2^16승이며 메모리의 관점에서 볼 때 Hyperloglog는 기술 선택을 위한 첫 번째 선택입니다.

  • PFADD 키. element [요소...]

Hyperloglog 요소에 하나 이상 추가

  • PFMERGE destkey sourcekey [sourcekey ...]

将多个 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 位图,位存储

一般用于,统计用户信息,活跃,不活跃,

登录,不登录

打卡,不打卡 等等,两种状态

Bitmaps 位图,也是一种数据结构,是操作二进制的方式来进行记录的,只有 0  和 1 两种状态

Redis의 세 가지 특수 데이터 유형에 대한 심층 분석

例如我们举个例子,来记录着一周每天的心情,1 是开心,0 是沮丧

  • SETBIT key offset value

设置 bit 位的值

  • GETBIT key offset

获取 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제