Rumah > pangkalan data > Redis > Pemahaman mendalam tentang jenis data khas dalam Redis: statistik kardinaliti, peta bit, lokasi geografi

Pemahaman mendalam tentang jenis data khas dalam Redis: statistik kardinaliti, peta bit, lokasi geografi

青灯夜游
Lepaskan: 2021-12-22 09:59:40
ke hadapan
2488 orang telah melayarinya

Artikel ini akan membawa anda melalui tiga jenis data khas dalam Redis (statistik kardinaliti, peta bit, lokasi geografi saya harap ia akan membantu anda!

Pemahaman mendalam tentang jenis data khas dalam Redis: statistik kardinaliti, peta bit, lokasi geografi

Selain 5 jenis data asas, Redis juga mempunyai tiga jenis data khas, iaitu HyperLogLogs (statistik kardinaliti), Bitmaps (peta bit) dan geospatial (lokasi geografi). [Cadangan berkaitan: Tutorial video Redis]

HyperLogLogs (statistik kardinaliti)

Redis versi 2.8.9 telah mengemas kini struktur data Hyperloglog!

  • Apakah nombor asas?

Contohnya, A = {1, 2, 3, 4, 5}, B = {3, 5, 6, 7, 9}; asas (elemen tidak berulang) = 1, 2, 4, 6, 7, 9; (toleransi ralat dibenarkan, iaitu ralat tertentu boleh diterima)

  • HyperLogLogs Apakah masalah yang digunakan oleh statistik kardinaliti untuk menyelesaikan?

Struktur ini boleh sangat menjimatkan memori untuk mengira pelbagai kiraan, seperti bilangan IP berdaftar, bilangan IP yang dilawati setiap hari, UV masa nyata halaman , bilangan pengguna dalam talian, dan bilangan rakan biasa menunggu.

  • Apakah kelebihannya ?

Sebuah tapak web yang besar mempunyai, sebagai contoh, 1 juta IP setiap hari secara kasar mengira bahawa satu IP menggunakan 15 bait, kemudian 1 juta IP ialah 15M. Setiap kunci HyperLogLog dalam Redis menduduki 12K kandungan, dan storan teori adalah lebih kurang 2^64 nilai Tidak kira apa kandungan yang disimpan, ia adalah algoritma berdasarkan anggaran kardinaliti, yang hanya boleh menganggarkan kardinaliti dengan lebih tepat. Gunakan sejumlah kecil memori tetap untuk menyimpan dan mengenal pasti elemen unik dalam koleksi. Selain itu, asas anggaran ini tidak semestinya tepat Ia adalah anggaran dengan ralat standard 0.81% (untuk senario perniagaan yang boleh menerima toleransi ralat tertentu, seperti statistik nombor IP, UV, dll., ini boleh diabaikan. ).

  • Penggunaan arahan berkaitan

127.0.0.1:6379> pfadd key1 a b c d e f g h i	# 创建第一组元素
(integer) 1
127.0.0.1:6379> pfcount key1					# 统计元素的基数数量
(integer) 9
127.0.0.1:6379> pfadd key2 c j k l m e g a		# 创建第二组元素
(integer) 1
127.0.0.1:6379> pfcount key2
(integer) 8
127.0.0.1:6379> pfmerge key3 key1 key2			# 合并两组:key1 key2 -> key3 并集
OK
127.0.0.1:6379> pfcount key3
(integer) 13
Salin selepas log masuk

Peta bit (storan bit)

Bitmap ialah struktur data bitmap, yang beroperasi pada bit binari untuk rakaman dan hanya mempunyai dua keadaan: 0 dan 1.

  • Apakah masalah yang digunakan untuk menyelesaikan?

Contohnya: statistik maklumat pengguna, aktif, tidak aktif! Log masuk, tidak log masuk! Daftar masuk, jangan daftar masuk! Bitmaps boleh digunakan di kedua-dua negeri!

Berapa banyak memori yang diperlukan untuk menyimpan status daftar masuk setahun? 365 hari = 365 bit 1 bait = 8bit 46 bait atau lebih!

  • Arahan berkaitan menggunakan

Gunakan bitmap untuk merekod daftar masuk dari Isnin hingga Ahad ! Isnin: 1 Selasa: 0 Rabu: 0 Khamis: 1...

127.0.0.1:6379> setbit sign 0 1
(integer) 0
127.0.0.1:6379> setbit sign 1 1
(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 0
(integer) 0
127.0.0.1:6379> setbit sign 5 0
(integer) 0
127.0.0.1:6379> setbit sign 6 1
(integer) 0
Salin selepas log masuk

Semak sama ada terdapat daftar masuk pada hari tertentu!

127.0.0.1:6379> getbit sign 3
(integer) 1
127.0.0.1:6379> getbit sign 5
(integer) 0
Salin selepas log masuk

Kendalian statistik, hitung bilangan hari yang dicatatkan!

127.0.0.1:6379> bitcount sign # 统计这周的打卡记录,就可以看到是否有全勤!
(integer) 3
Salin selepas log masuk

geospatial (lokasi geografi)

Redis’ Geo telah dilancarkan dalam versi Redis 3.2 Fungsi ini boleh mengira maklumat lokasi geografi: jarak antara dua tempat, , orang dalam beberapa batu.

geoadd

Tambah Geolokasi

127.0.0.1:6379> geoadd china:city 118.76 32.04 manjing 112.55 37.86 taiyuan 123.43 41.80 shenyang
(integer) 3
127.0.0.1:6379> geoadd china:city 144.05 22.52 shengzhen 120.16 30.24 hangzhou 108.96 34.26 xian
(integer) 3
Salin selepas log masuk

Peraturan

Kedua-dua peringkat tidak boleh ditambah secara langsung Kami biasanya memuat turun data bandar (anda boleh bertanya GEO di laman web ini: http://www.jsons.cn/lngcode)!

  • Bujur yang sah adalah dari -180 darjah hingga 180 darjah.
  • Julat latitud yang sah dari -85.05112878 darjah hingga 85.05112878 darjah.
# 当坐标位置超出上述指定范围时,该命令将会返回一个错误。
127.0.0.1:6379> geoadd china:city 39.90 116.40 beijin
(error) ERR invalid longitude,latitude pair 39.900000,116.400000
Salin selepas log masuk

geopos

Dapatkan longitud dan latitud ahli yang dinyatakan

127.0.0.1:6379> geopos china:city taiyuan manjing
1) 1) "112.54999905824661255"
   1) "37.86000073876942196"
2) 1) "118.75999957323074341"
   1) "32.03999960287850968"
Salin selepas log masuk

Dapatkan kedudukan semasa, yang mestilah nilai koordinat!

geodis

Jika ia tidak wujud , kembali kosong

Unit adalah seperti berikut

  • m
  • km
  • mi batu
  • kaki kaki
127.0.0.1:6379> geodist china:city taiyuan shenyang m
"1026439.1070"
127.0.0.1:6379> geodist china:city taiyuan shenyang km
"1026.4391"
Salin selepas log masuk

georadius

Orang berdekatan==> orang berdekatan

Dapatkan bilangan orang yang ditentukan

127.0.0.1:6379> georadius china:city 110 30 1000 km			以 100,30 这个坐标为中心, 寻找半径为1000km的城市
1) "xian"
2) "hangzhou"
3) "manjing"
4) "taiyuan"
127.0.0.1:6379> georadius china:city 110 30 500 km
1) "xian"
127.0.0.1:6379> georadius china:city 110 30 500 km withdist
1) 1) "xian"
   2) "483.8340"
127.0.0.1:6379> georadius china:city 110 30 1000 km withcoord withdist count 2
1) 1) "xian"
   2) "483.8340"
   3) 1) "108.96000176668167114"
      2) "34.25999964418929977"
2) 1) "manjing"
   2) "864.9816"
   3) 1) "118.75999957323074341"
      2) "32.03999960287850968"
Salin selepas log masuk

Unit jejari latitud longitud kunci parameter [longitud dan latitud hasil yang dipaparkan] [jarak hasil yang dipaparkan] [bilangan yang dipaparkan keputusan]

georadiusbymember

Paparkan ahli lain dalam radius tertentu ahli yang ditentukan

127.0.0.1:6379> georadiusbymember china:city taiyuan 1000 km
1) "manjing"
2) "taiyuan"
3) "xian"
127.0.0.1:6379> georadiusbymember china:city taiyuan 1000 km withcoord withdist count 2
1) 1) "taiyuan"
   2) "0.0000"
   3) 1) "112.54999905824661255"
      2) "37.86000073876942196"
2) 1) "xian"
   2) "514.2264"
   3) 1) "108.96000176668167114"
      2) "34.25999964418929977"
Salin selepas log masuk

Parameter dan georadius

geohash (kurang digunakan)

Arahan ini mengembalikan rentetan cincang 11 aksara

127.0.0.1:6379> geohash china:city taiyuan shenyang
1) "ww8p3hhqmp0"
2) "wxrvb9qyxk0"
Salin selepas log masuk

Tukar longitud dan latitud dua dimensi kepada rentetan satu dimensi Jika dua rentetan lebih dekat, semakin dekat jaraknya

Lapisan bawah.

geo底层的实现原理实际上就是Zset, 我们可以通过Zset命令来操作geo

127.0.0.1:6379> type china:city
zset
Salin selepas log masuk

查看全部元素 删除指定的元素

127.0.0.1:6379> zrange china:city 0 -1 withscores
 1) "xian"
 2) "4040115445396757"
 3) "hangzhou"
 4) "4054133997236782"
 5) "manjing"
 6) "4066006694128997"
 7) "taiyuan"
 8) "4068216047500484"
 9) "shenyang"
1)  "4072519231994779"
2)  "shengzhen"
3)  "4154606886655324"
127.0.0.1:6379> zrem china:city manjing
(integer) 1
127.0.0.1:6379> zrange china:city 0 -1
1) "xian"
2) "hangzhou"
3) "taiyuan"
4) "shenyang"
5) "shengzhen"
Salin selepas log masuk

更多编程相关知识,请访问:编程视频!!

Atas ialah kandungan terperinci Pemahaman mendalam tentang jenis data khas dalam Redis: statistik kardinaliti, peta bit, lokasi geografi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:juejin.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan