成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Redis還可以做哪些事?

存儲 存儲軟件 Redis
講到了redis五大基本數(shù)據(jù)類型的使用場景,除了string,hash,list,set,zset之外,redis還提供了一些其他的數(shù)據(jù)結(jié)構(gòu)(當(dāng)然,嚴(yán)格意義上也不算數(shù)據(jù)結(jié)構(gòu)),一起來看看redis還可以做哪些事?

[[350258]]

 在上一篇文章中,講到了redis五大基本數(shù)據(jù)類型的使用場景,除了string,hash,list,set,zset之外,redis還提供了一些其他的數(shù)據(jù)結(jié)構(gòu)(當(dāng)然,嚴(yán)格意義上也不算數(shù)據(jù)結(jié)構(gòu)),一起來看看redis還可以做哪些事?

一 Bitmaps

在計算機(jī)中,使用二進(jìn)制做為信息的基礎(chǔ)單元,也就是輸入的任何信息,最終在計算機(jī)底層都會轉(zhuǎn)會為一串二進(jìn)制的數(shù)字。在redis中,提供了Bitmaps來進(jìn)行位操作。我們可以把Bitmaps想象成一個以位為單位的數(shù)組,數(shù)組的下標(biāo)叫做偏移量。使用Bitmaps的優(yōu)勢就是占用空間更少。

假如我們想記錄員工今天是否登錄過公司官網(wǎng),我們可以日期做為key,員工id做為偏移量(這里員工id在數(shù)據(jù)庫中是自增的),如果id是從1000開始,為了節(jié)省空間,一般會將員工id減去這個初始值來做為偏移量,偏移量一般從0開始。是否訪問官網(wǎng)用0和1來表示。

這樣的話,id為3的員工訪問了官網(wǎng),就將他的值寫成1

  1. # id為3的員工訪問了官網(wǎng) 
  2. setbit user:2020-11-04 3 1 
  3. # id為18的員工訪問了官網(wǎng) 
  4. setbit user:2020-11-04 18 1 

查看某個員工是否訪問過官網(wǎng)

  1. getbit user:2020-11-04 1 

查詢指定范圍(字節(jié))內(nèi)值為1的個數(shù),比如我想查看id從1-24之間有多少員工訪問了官網(wǎng)

  1. bitcount user:2020-11-04 1 3 

二 HyperLogLog

HyperLogLog可以利用極小的內(nèi)存空間完成數(shù)據(jù)統(tǒng)計,無法獲取單條數(shù)據(jù),只能做為統(tǒng)計使用,會有一定的誤差率。

假如我想統(tǒng)計訪問官網(wǎng)的IP地址

添加官網(wǎng)今天訪問的ip列表

  1. # 2020-11-04訪問的ip 
  2. pfadd 2020-11-04:ip "ip1" "ip2" "ip3"  
  3. # 2020-11-05訪問的ip 
  4. pfadd 2020-11-05:ip "ip3" "ip4" "ip5"  

計算今天官網(wǎng)訪問的ip數(shù)

  1. pfcount 2020-11-04:ip 

返回結(jié)果為3

查看2020-11-04和2020-11-05這兩天總共有多少個獨立ip訪問過網(wǎng)站

先將兩天的數(shù)據(jù)做并集,并復(fù)制給某個值

  1. pfmerge 2020-11:ip 2020-11-04:ip 2020-11-05:ip 

然后使用pfcount命令查詢,獲得的值為5

  1. pfcount 2020-11:ip 

三 GEO

在Redis3.2版本中增加了GEO(地理位置定位)功能,可以使用此功能來獲取附近的人。

添加命令如下,可批量添加

  1. geoadd city longitud latitude member 

我們添加幾個城市的位置信息,來獲取某個城市附近的城市

  1. geoadd city 116.28 39.55 beijing 117.12 39.08 tianjin 

獲取北京的經(jīng)緯度命令如下

  1. geopos city beijing 

查看beijing和tianjin兩座城市的距離

  1. geodist city beijing tianjin km 

最后面的km表示距離單位是公里,支持的單位有以下幾個:

  • m,米
  • km,千米
  • mi,英里
  • ft,尺

獲取附近的位置有兩個命令,georadius根據(jù)經(jīng)緯度獲取,georadiusbymember根據(jù)成員獲取

  1. georadius key longitude laitude [單位] 
  2. georadiusbymember key member [單位] 

后面還可以跟非必須參數(shù),參數(shù)分別如下

  • withcoord:返回結(jié)果中包含經(jīng)緯度
  • withdist:返回結(jié)果中包含距離中心位置的距離
  • withhash:返回結(jié)果中包含geohash(就是將經(jīng)緯度轉(zhuǎn)換為hash值)
  • COUNT count:指定返回結(jié)果的數(shù)量
  • asc|desc:返回結(jié)果按距離中心位置的距離排序
  • store key:將返回結(jié)果的地理位置信息保存到指定key中
  • storedist key:將返回結(jié)果距離中心位置的距離保存到指定key中

四 發(fā)布訂閱模式消息

上一篇文章中講到了可以使用list和zset來實現(xiàn)消息隊列,但是上面實現(xiàn)的消息隊列是點對點模式,也就是一條消息只能由一個消費者來消費。除此之外,redis還支持發(fā)布訂閱模式,即一個消息由所有訂閱者消費,比如廣播、公告等等,發(fā)布一條公告后,所有關(guān)注了我的用戶都可以收到這條公告。

1.發(fā)布消息

發(fā)布到信道channel:message一條消息,消息內(nèi)容為hi

  1. pulish channel:message hi 

2.訂閱信道

訂閱者可以訂閱一個或多個信道,比如訂閱channel:message

  1. subscribe channel:message 

3.取消訂閱

  1. unsubscribe channel:message 

4.查看活躍信道

  1. pubsub channels 

5.查看訂閱數(shù)

查看信道channel:message訂閱個數(shù)

  1. pubsub numsub channel:message 

redis的發(fā)布訂閱模式和專業(yè)的消息中間件相比,略顯粗糙,但是實現(xiàn)起來非常簡單,學(xué)習(xí)成本較低。

五 Bloom Filter

布隆過濾器是redis4版本中新增的一個功能。其實現(xiàn)原理和Bitmaps差不多,也是利用一個位數(shù)組,將你的值經(jīng)過多個hash函數(shù),得到對應(yīng)的位數(shù)組的位置,將這些值設(shè)置為1。布隆過濾器經(jīng)常別用來防止緩存穿透。

存在的問題,如果說某個元素不存在,則一定不存在,如果說某個元素存在,則可能不存在。這是因為如果有三個元素a,b,c要放入同一個數(shù)組中去,假設(shè)a經(jīng)過三次hash,得到1,5,7三個位置,那么就會將這三個位置修改成1,b經(jīng)過三次hash,得到2,4,6三個位置,將這三個位置修改成1。c經(jīng)過三次hash得到2,5,7三個位置,但是經(jīng)過前兩個元素hash后,這三個位置已經(jīng)修改成1了,那么我們能說c一定存在嗎?顯然不能!

本文轉(zhuǎn)載自微信公眾號「Java旅途」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Java旅途公眾號。 

 

責(zé)任編輯:武曉燕 來源: Java旅途
相關(guān)推薦

2025-01-16 10:16:33

2024-03-12 08:44:56

WebWorkerTypeScript語法

2012-02-23 13:01:12

JavaPlay Framew

2021-03-03 08:05:53

C++項目函數(shù)

2020-07-16 08:32:16

JavaScript語言語句

2022-07-30 23:45:09

內(nèi)存泄漏檢測工具工具

2022-10-09 10:02:09

Python3.12

2022-04-21 14:50:50

Python農(nóng)歷命令

2022-05-16 10:45:22

Redis接口限流緩存

2021-02-01 13:35:28

微信Python技巧

2022-07-29 16:50:30

網(wǎng)絡(luò)帶寬

2022-12-06 17:30:04

2015-04-17 09:27:04

程序員

2018-04-10 14:58:15

筆記本配件鍵盤

2020-05-07 10:26:17

備份文件存儲備份

2022-05-10 10:39:51

初創(chuàng)企業(yè)技術(shù)債務(wù)

2023-03-29 18:39:50

自動化平臺case

2022-05-17 07:26:33

動畫CSS前端

2018-08-08 14:25:17

2023-07-03 16:49:47

5G
點贊
收藏

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

主站蜘蛛池模板: h视频在线免费观看 | 免费观看一级毛片 | 国产婷婷色一区二区三区 | 欧美日韩一区在线观看 | 可以在线观看av的网站 | 久久99精品国产 | 手机看片1 | 91在线精品秘密一区二区 | 亚洲 欧美 另类 综合 偷拍 | 一级毛片,一级毛片 | 婷婷五月色综合香五月 | 成年人网站免费视频 | 久久精品国产一区二区电影 | 国产专区在线 | 中文字幕视频在线免费 | 中文字幕99 | 日本中文在线视频 | 亚洲男人网 | 欧美xxxx色视频在线观看免费 | 操人网| 最新国产精品视频 | 精品中文字幕在线观看 | 亚洲综合大片69999 | 亚洲欧洲日本国产 | 伊人亚洲| 日韩中文在线 | 日韩中文字幕视频在线观看 | 欧美激情在线播放 | 亚洲精品小视频在线观看 | 亚洲精品一区中文字幕 | 欧美一级久久 | 爱爱免费视频 | 在线观看亚洲精品 | 涩涩视频网 | 精品视频一区二区 | 亚洲精品一区二三区不卡 | av中文在线| 久久国产一区 | 日韩久久久久久 | 久久一二| 一级片av |