国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫(kù)技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫(kù) - Redis - Redis中3種特殊的數(shù)據(jù)類型(BitMap、Geo和HyperLogLog)

Redis中3種特殊的數(shù)據(jù)類型(BitMap、Geo和HyperLogLog)

2019-11-12 15:17Sun_翁航 Redis

這篇文章主要給大家介紹了關(guān)于Redis中3種特殊的數(shù)據(jù)類型(BitMap、GEOADD和GEODIST)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。

前言

Reids 在 Web 應(yīng)用的開(kāi)發(fā)中使用非常廣泛,幾乎所有的后端技術(shù)都會(huì)有涉及到 Redis 的使用。Redis 種除了常見(jiàn)的字符串 String、字典 Hash、列表 List、集合 Set、有序集合 SortedSet 等等之外,還有一些不常用的數(shù)據(jù)類型,這里著重介紹三個(gè)。下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。

BitMap

BitMap 就是通過(guò)一個(gè) bit 位來(lái)表示某個(gè)元素對(duì)應(yīng)的值或者狀態(tài), 其中的 key 就是對(duì)應(yīng)元素本身,實(shí)際上底層也是通過(guò)對(duì)字符串的操作來(lái)實(shí)現(xiàn)。Redis 從 2.2 版本之后新增了setbit, getbit, bitcount 等幾個(gè) bitmap 相關(guān)命令。雖然是新命令,但是本身都是對(duì)字符串的操作,我們先來(lái)看看語(yǔ)法:

?
1
SETBIT key offset value

其中 offset 必須是數(shù)字,value 只能是 0 或者 1,咋一看感覺(jué)沒(méi)啥用處,我們先來(lái)看看 bitmap 的具體表示,當(dāng)我們使用命令 setbit key (0,2,5,9,12) 1后,它的具體表示為:

 

byte bit0 bit1 bit2 bit3 bit4 bit5 bit6 bit7
byte0 1 0 1 0 0 1 0 0
byte1 0 1 0 0 1 0 0 0

 

可以看出 bit 的默認(rèn)值是 0,那么 BitMap 在實(shí)際開(kāi)發(fā)的運(yùn)用呢?這里舉一個(gè)例子:儲(chǔ)存用戶在線狀態(tài)。這里只需要一個(gè) key,然后把用戶 ID 作為 offset,如果在線就設(shè)置為 1,不在線就設(shè)置為 0。實(shí)例代碼:

?
1
2
3
4
5
6
7
8
9
10
11
//設(shè)置在線狀態(tài)
$redis->setBit('online', $uid, 1);
 
//設(shè)置離線狀態(tài)
$redis->setBit('online', $uid, 0);
 
//獲取狀態(tài)
$isOnline = $redis->getBit('online', $uid);
 
//獲取在線人數(shù)
$isOnline = $redis->bitCount('online');

Geo

Redis 的 GEO 特性在 Redis 3.2 版本中推出, 這個(gè)功能可以將用戶給定的地理位置信息儲(chǔ)存起來(lái), 并對(duì)這些信息進(jìn)行操作。GEO 的數(shù)據(jù)結(jié)構(gòu)總共有六個(gè)命令:geoadd、geopos、geodist、georadius、georadiusbymember、gethash,這里著重講解幾個(gè)。

1.GEOADD

?
1
GEOADD key longitude latitude member [longitude latitude member ...]

將給定的空間元素(緯度、經(jīng)度、名字)添加到指定的鍵里面。 這些數(shù)據(jù)會(huì)以有序集合的形式被儲(chǔ)存在鍵里面, 從而使得像 GEORADIUS 和 GEORADIUSBYMEMBER 這樣的命令可以在之后通過(guò)位置查詢?nèi)〉眠@些元素。例子:

?
1
2
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2

2.GEOPOS

?
1
GEOPOS key member [member ...]

從鍵里面返回所有給定位置元素的位置(經(jīng)度和緯度),例子:

?
1
2
3
redis> GEOPOS Sicily Palermo Catania NonExisting
1) 1) "13.361389338970184"
 2) "38.115556395496299"

3.GEODIST

?
1
GEODIST key member1 member2 [unit]

返回兩個(gè)給定位置之間的距離。如果兩個(gè)位置之間的其中一個(gè)不存在, 那么命令返回空值。指定單位的參數(shù) unit 必須是以下單位的其中一個(gè):(默認(rèn)為m)

m   表示單位為米。
km  表示單位為千米。
mi  表示單位為英里。
ft  表示單位為英尺。

?
1
2
redis> GEODIST Sicily Palermo Catania
"166274.15156960039"

4.GEORADIUS

?
1
GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count]

以給定的經(jīng)緯度為中心, 返回鍵包含的位置元素當(dāng)中, 與中心的距離不超過(guò)給定最大距離的所有位置元素。距離單位和上面的一致,其中后面的選項(xiàng):

WITHDIST: 在返回位置元素的同時(shí), 將位置元素與中心之間的距離也一并返回。距離的單位和用戶給定的范圍單位保持一致。
WITHCOORD: 將位置元素的經(jīng)度和維度也一并返回。
WITHHASH: 以 52 位有符號(hào)整數(shù)的形式, 返回位置元素經(jīng)過(guò)原始 geohash 編碼的有序集合分值。這個(gè)選項(xiàng)主要用于底層應(yīng)用或者調(diào)試, 實(shí)際中的作用并不大。

?
1
2
3
4
5
redis> GEORADIUS Sicily 15 37 200 km WITHDIST
1) 1) "Palermo"
 2) "190.4424"
2) 1) "Catania"
 2) "56.4413"

HyperLogLog

Redis 的基數(shù)統(tǒng)計(jì),這個(gè)結(jié)構(gòu)可以非常省內(nèi)存的去統(tǒng)計(jì)各種計(jì)數(shù),比如注冊(cè) IP 數(shù)、每日訪問(wèn) IP 數(shù)、頁(yè)面實(shí)時(shí)UV)、在線用戶數(shù)等。但是它也有局限性,就是只能統(tǒng)計(jì)數(shù)量,而沒(méi)辦法去知道具體的內(nèi)容是什么。

當(dāng)然用集合也可以解決這個(gè)問(wèn)題。但是一個(gè)大型的網(wǎng)站,每天 IP 比如有 100 萬(wàn),粗算一個(gè) IP 消耗 15 字節(jié),那么 100 萬(wàn)個(gè) IP 就是 15M。而 HyperLogLog 在 Redis 中每個(gè)鍵占用的內(nèi)容都是 12K,理論存儲(chǔ)近似接近 2^64 個(gè)值,不管存儲(chǔ)的內(nèi)容是什么,它一個(gè)基于基數(shù)估算的算法,只能比較準(zhǔn)確的估算出基數(shù),可以使用少量固定的內(nèi)存去存儲(chǔ)并識(shí)別集合中的唯一元素。而且這個(gè)估算的基數(shù)并不一定準(zhǔn)確,是一個(gè)帶有 0.81% 標(biāo)準(zhǔn)錯(cuò)誤的近似值。

這個(gè)數(shù)據(jù)結(jié)構(gòu)的命令有三個(gè):PFADD、PFCOUNT、PFMERGE

1.PFADD

?
1
2
3
4
5
redis> PFADD databases "Redis" "MongoDB" "MySQL"
(integer) 1
 
redis> PFADD databases "Redis"  # Redis 已經(jīng)存在,不必對(duì)估計(jì)數(shù)量進(jìn)行更新
(integer) 0

2.PFCOUNT

?
1
2
redis> PFCOUNT databases
(integer) 3

3.PFMERGE

?
1
PFMERGE destkey sourcekey [sourcekey ...]

將多個(gè) HyperLogLog 合并為一個(gè) HyperLogLog, 合并后的 HyperLogLog 的基數(shù)接近于所有輸入 HyperLogLog 的可見(jiàn)集合的并集。合并得出的 HyperLogLog 會(huì)被儲(chǔ)存在 destkey 鍵里面, 如果該鍵并不存在,那么命令在執(zhí)行之前, 會(huì)先為該鍵創(chuàng)建一個(gè)空的 HyperLogLog 。

?
1
2
3
4
5
6
7
8
redis> PFADD nosql "Redis" "MongoDB" "Memcached"
(integer) 1
redis> PFADD RDBMS "MySQL" "MSSQL" "PostgreSQL"
(integer) 1
redis> PFMERGE databases nosql RDBMS
OK
redis> PFCOUNT databases
(integer) 6

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)服務(wù)器之家的支持。

延伸 · 閱讀

精彩推薦
  • Redisredis實(shí)現(xiàn)排行榜功能

    redis實(shí)現(xiàn)排行榜功能

    排行榜在很多地方都能使用到,redis的zset可以很方便地用來(lái)實(shí)現(xiàn)排行榜功能,本文就來(lái)簡(jiǎn)單的介紹一下如何使用,具有一定的參考價(jià)值,感興趣的小伙伴們...

    乘月歸5022021-08-05
  • RedisRedis的配置、啟動(dòng)、操作和關(guān)閉方法

    Redis的配置、啟動(dòng)、操作和關(guān)閉方法

    今天小編就為大家分享一篇Redis的配置、啟動(dòng)、操作和關(guān)閉方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧 ...

    大道化簡(jiǎn)5312019-11-14
  • Redis詳解Redis復(fù)制原理

    詳解Redis復(fù)制原理

    與大多數(shù)db一樣,Redis也提供了復(fù)制機(jī)制,以滿足故障恢復(fù)和負(fù)載均衡等需求。復(fù)制也是Redis高可用的基礎(chǔ),哨兵和集群都是建立在復(fù)制基礎(chǔ)上實(shí)現(xiàn)高可用的...

    李留廣10222021-08-09
  • RedisRedis如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫分離詳解

    Redis如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫分離詳解

    Redis的主從架構(gòu),能幫助我們實(shí)現(xiàn)讀多,寫少的情況,下面這篇文章主要給大家介紹了關(guān)于Redis如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫分離的相關(guān)資料,文中通過(guò)示例代碼介紹...

    羅兵漂流記6092019-11-11
  • Redisredis 交集、并集、差集的具體使用

    redis 交集、并集、差集的具體使用

    這篇文章主要介紹了redis 交集、并集、差集的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友...

    xiaojin21cen10152021-07-27
  • RedisRedis全量復(fù)制與部分復(fù)制示例詳解

    Redis全量復(fù)制與部分復(fù)制示例詳解

    這篇文章主要給大家介紹了關(guān)于Redis全量復(fù)制與部分復(fù)制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Redis爬蟲具有一定的參考學(xué)習(xí)...

    豆子先生5052019-11-27
  • Redisredis中如何使用lua腳本讓你的靈活性提高5個(gè)逼格詳解

    redis中如何使用lua腳本讓你的靈活性提高5個(gè)逼格詳解

    這篇文章主要給大家介紹了關(guān)于redis中如何使用lua腳本讓你的靈活性提高5個(gè)逼格的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具...

    一線碼農(nóng)5812019-11-18
  • RedisRedis 事務(wù)知識(shí)點(diǎn)相關(guān)總結(jié)

    Redis 事務(wù)知識(shí)點(diǎn)相關(guān)總結(jié)

    這篇文章主要介紹了Redis 事務(wù)相關(guān)總結(jié),幫助大家更好的理解和學(xué)習(xí)使用Redis,感興趣的朋友可以了解下...

    AsiaYe8232021-07-28
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产视频一区在线 | 久久久美女 | 日韩中文字幕一区二区三区 | 热久久影院 | 国产精品久久久久久亚洲调教 | 精品久久一区 | 大片免费播放在线观看视频 | 99精品热视频 | 97久久精品| 亚洲片国产一区一级在线观看 | 99久久婷婷国产精品综合 | 伊人久久艹 | 亚洲精品视频在线 | 精品久久99 | 国产一区二区精品在线观看 | 黄色免费观看 | 亚洲在线视频 | 懂色av中文一区二区三区天美 | 亚洲国产精品va在线看黑人 | 欧美日韩国产在线 | 中文字幕国产视频 | 久久一区| 亚洲精品欧美一区二区三区 | 久久综合图片 | 黄色免费av| 99热手机在线观看 | a成人| 日韩中文字幕 | 久久久国产精品免费观看 | 欧美激情高清 | 久久精品免费观看 | 91免费在线视频 | 新久久久久久 | 五月天一区二区 | 久久精品亚洲精品国产欧美kt∨ | 国产美女网站视频 | 久久99国产精一区二区三区 | 日日夜夜国产 | 91精品国产乱码久久久久久 | 一级片网 | 欧美日韩国产不卡 |