自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Redis中的三種特殊類型

數(shù)據(jù)庫 Redis
Redis中的Geospatial是一個(gè)用于地理空間數(shù)據(jù)的功能模塊,它可以存儲(chǔ)和查詢地理坐標(biāo)、半徑、矩形、多邊形等地理空間對(duì)象。

前言

Redis中的這三個(gè)數(shù)據(jù)類型在很多開源的項(xiàng)目中都有使用到,除了日常開發(fā)中使用Java去實(shí)現(xiàn)某些功能外,還可以通過這些特殊的數(shù)據(jù)類型進(jìn)行實(shí)現(xiàn),本文也簡(jiǎn)單介紹了這三種數(shù)據(jù)類型使用的場(chǎng)景,可以幫助讀者在開發(fā)中實(shí)現(xiàn)功能提供新的思路。

一、Geospatial(地理位置)

Geospatial類型Redis官方文檔-Redis geospatial | Redis

Redis中的Geospatial是一個(gè)用于地理空間數(shù)據(jù)的功能模塊,它可以存儲(chǔ)和查詢地理坐標(biāo)、半徑、矩形、多邊形等地理空間對(duì)象。通過使用Geospatial,您可以對(duì)地理空間對(duì)象進(jìn)行各種操作,例如計(jì)算兩個(gè)地點(diǎn)之間的距離、查找位于給定半徑內(nèi)的地點(diǎn)、查找位于給定矩形或多邊形內(nèi)的地點(diǎn)等。

基礎(chǔ)命令

  • GEOADD adds a location to a given geospatial index (note that longitude comes before latitude with this command).
  • GEOSEARCH returns locations with a given radius or a bounding box.

命令演示

1. 添加地理位置

Geospatial規(guī)則: 兩級(jí)無法直接添加,我們一般會(huì)下載城市數(shù)據(jù),直接通過java序一次性導(dǎo)入!

有效的經(jīng)度從-180度到180度. 有效的緯度從-85.05112878度到85.05112878度。

參數(shù):key 值:經(jīng)度 緯度 名稱

127.0.0.1:6379> GEOADD china:city 116.40 39.90 beijin
(integer) 1
127.0.0.1:6379> GEOADD china:city 121.47 31.23 shanghai
(integer) 1
127.0.0.1:6379> GEOADD china:city 106.50 29.53 chognqin 114.05 22.52 shenzheng
(integer) 2
127.0.0.1:6379> GEOADD china:city 120.16 30.24 hangzhou 108.96 34.26 xian
(integer) 2

2. 獲取城市地理位置

127.0.0.1:6379> GEOPOS china:city beijin #獲取城市的經(jīng)度和緯度
1) 1) "116.39999896287918091"
   2) "39.90000009167092543"
127.0.0.1:6379> GEOPOS china:city shanghai
1) 1) "121.47000163793563843"
   2) "31.22999903975783553"

3. 計(jì)算兩個(gè)城市之間的距離

127.0.0.1:6379> GEODIST china:city beijin shanghai
"1067378.7564"
127.0.0.1:6379> GEODIST china:city beijin shanghai km #單位有m、km、mi、ft
"1067.3788"

4. 以給定的經(jīng)緯度為中心,找出某一半徑內(nèi)的元素

127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km #經(jīng)度110,緯度30為中心,尋找半徑1000km以內(nèi)的城市
1) "chognqin"
2) "xian"
3) "shenzheng"
4) "hangzhou"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km count 2 #限制查詢的數(shù)量
1) "chognqin"
2) "xian"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km withcoord #顯示經(jīng)度緯度
1) 1) "chognqin"
   2) 1) "106.49999767541885376"
      2) "29.52999957900659211"
2) 1) "xian"
   2) 1) "108.96000176668167114"
      2) "34.25999964418929977"
3) 1) "shenzheng"
   2) 1) "114.04999762773513794"
      2) "22.5200000879503861"
4) 1) "hangzhou"
   2) 1) "120.1600000262260437"
      2) "30.2400003229490224"

5. 以城市為中心尋找其它城市

127.0.0.1:6379> GEORADIUSBYMEMBER china:city beijin 1000 km
1) "beijin"
2) "xian"

6. 將經(jīng)緯度轉(zhuǎn)化為字符串

127.0.0.1:6379> GEOHASH china:city beijin
1) "wx4fbxxfke0"

7. 使用Zset的命令來操作Geospatial

==Geospatial的底層實(shí)現(xiàn)原理就是Zset,可以用Zset命令來操作Geospatial==

127.0.0.1:6379> ZRANGE china:city 0 -1
1) "chognqin"
2) "xian"
3) "shenzheng"
4) "hangzhou"
5) "shanghai"
6) "beijin"
127.0.0.1:6379> ZREM china:city xian
(integer) 1
127.0.0.1:6379> ZRANGE china:city 0 -1
1) "chognqin"
2) "shenzheng"
3) "hangzhou"
4) "shanghai"
5) "beijin"

二、 HyperLogLog(基數(shù)統(tǒng)計(jì))

HyperLogLog類型Redis官方文檔-HyperLogLog | Redis

HyperLogLog常用于大數(shù)據(jù)量的統(tǒng)計(jì),比如頁面訪問量統(tǒng)計(jì)或者用戶訪問量統(tǒng)計(jì)。其實(shí)現(xiàn)最多使用 12 KB,并提供 0.81% 的標(biāo)準(zhǔn)誤差。

什么是基數(shù)?

基數(shù)在數(shù)學(xué)中是集合論中刻畫任意集合大小的一個(gè)概念。它表示一個(gè)集合中不同元素的個(gè)數(shù)。例如,集合{1, 2, 3, 3, 4, 5, 5, 6, 6, 6}中有9個(gè)元素,但其中不重復(fù)的元素只有1、2、3、4、5、6,所以它的基數(shù)是6。

基礎(chǔ)命令

  • PFADD adds an item to a HyperLogLog.
  • PFCOUNT returns an estimate of the number of items in the set.
  • PFMERGE combines two or more HyperLogLogs into one.

命令演示

1. 創(chuàng)建元素,并統(tǒng)計(jì)其中的個(gè)數(shù)

127.0.0.1:6379> PFADD mykey a b c d e f g h i j #創(chuàng)建一組元素
(integer) 1
127.0.0.1:6379> PFCOUNT mykey #統(tǒng)計(jì)基數(shù)數(shù)量
(integer) 10
127.0.0.1:6379> PFADD mykey2 i jz x c v b n m 
(integer) 1
127.0.0.1:6379> PFCOUNT mykey2
(integer) 8

2. 合并元素

127.0.0.1:6379> PFMERGE mykey3 mykey mykey2 #mykey 和mykey2合并為mykey3(并集)
OK
127.0.0.1:6379> PFCOUNT mykey3
(integer) 15

三、BitMaps

BitMaps類型Redis官方文檔-Redis bitmaps | Redis

Redis中的BitMaps是一種基于位圖的數(shù)據(jù)結(jié)構(gòu),它允許用戶將位圖存儲(chǔ)為字符串,并對(duì)其進(jìn)行位操作。

基礎(chǔ)命令

  • SETBIT sets a bit at the provided offset to ==0 or 1==.
  • GETBIT returns the value of a bit at a given offset.
  • BITOP lets you perform bitwise operations against one or more strings.

命令演示

1. 使用BitMaps來記錄狀態(tài)

127.0.0.1:6379> setbit sign 0 1
(integer) 0
127.0.0.1:6379> setbit sign 1 0
(integer) 0
127.0.0.1:6379> setbit sign 2 0
(integer) 0
127.0.0.1:6379> setbit sign 3 1
(integer) 0
127.0.0.1:6379> setbit sign 4 1
(integer) 0
127.0.0.1:6379> setbit sign 5 0
(integer) 0
127.0.0.1:6379> setbit sign 6 1
(integer) 0

2. 查看狀態(tài)

127.0.0.1:6379> GETBIT sign 1
(integer) 0
127.0.0.1:6379> GETBIT sign 3
(integer) 1

3. 統(tǒng)計(jì)狀態(tài)

127.0.0.1:6379> BITCOUNT sign
(integer) 4


責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2011-01-18 15:35:59

jQueryJavaScriptweb

2010-05-11 14:08:50

MySQL數(shù)字類型

2021-11-05 21:33:28

Redis數(shù)據(jù)高并發(fā)

2022-06-20 08:50:16

TypeScript類型語法

2009-08-06 15:26:18

C#異常類型

2010-09-09 10:43:56

VPN服務(wù)

2009-06-29 18:21:29

Hibernate

2009-12-10 15:46:22

動(dòng)態(tài)路由協(xié)議

2018-12-13 20:14:18

物聯(lián)網(wǎng)平臺(tái)物聯(lián)網(wǎng)IOT

2019-12-02 14:14:20

緩沖系統(tǒng)調(diào)用函數(shù)

2012-08-10 14:38:13

2020-11-11 21:27:55

緩沖文件調(diào)用

2023-03-07 08:25:39

探針Kubernetes

2009-05-07 15:02:42

OracleJoin查詢

2021-07-05 06:57:06

VMware vSph虛擬機(jī)磁盤

2024-07-01 12:42:58

2012-03-18 21:10:07

2021-02-05 10:32:46

Kubernetes容器開發(fā)

2013-08-06 09:56:07

交換機(jī)端口交換機(jī)

2009-11-24 18:15:37

博科資訊管理軟件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)