成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

關(guān)于redis的幾件小事(三)redis的數(shù)據(jù)類型與使用場景

zhaochunqi / 674人閱讀

摘要:這個是類似的一種結(jié)構(gòu),這個一般就是可以將結(jié)構(gòu)化的數(shù)據(jù),比如一個對象前提是這個對象沒嵌套其他的對象給緩存在里,然后每次讀寫緩存的時候,可以就操作里的某個字段。

1.string

這是最基本的類型了,就是普通的set和get,做簡單的kv緩存。

2.hash

這個是類似map的一種結(jié)構(gòu),這個一般就是可以將結(jié)構(gòu)化的數(shù)據(jù),比如一個對象(前提是這個對象沒嵌套其他的對象)給緩存在redis里,然后每次讀寫緩存的時候,可以就操作hash里的某個字段。

key=150

value={
  “id”: 150,
  “name”: “zhangsan”,
  “age”: 20
}

hash類的數(shù)據(jù)結(jié)構(gòu),主要是用來存放一些對象,把一些簡單的對象給緩存起來,后續(xù)操作的時候,你可以直接僅僅修改這個對象中的某個字段的值

value={
  “id”: 150,
  “name”: “zhangsan”,
  “age”: 21
}
3.list

有序列表,這個是可以做很多不同操作的
比如:微博,某個大v的粉絲,就可以以list的格式放在redis里去緩存

key=某大v

value=[zhangsan, lisi, wangwu]

比如:可以通過list存儲一些列表型的數(shù)據(jù)結(jié)構(gòu),類似粉絲列表了、文章的評論列表了之類的東西

比如:可以通過lrange命令,就是從某個元素開始讀取多少個元素,可以基于list實(shí)現(xiàn)分頁查詢,這個很棒的一個功能,基于redis實(shí)現(xiàn)簡單的高性能分頁,可以做類似微博那種下拉不斷分頁的東西,性能高,就一頁一頁走

比如:可以搞個簡單的消息隊(duì)列,從list頭懟進(jìn)去,從list尾巴那里弄出來

4.set

無序集合,自動去重

直接基于set將系統(tǒng)里需要去重的數(shù)據(jù)扔進(jìn)去,自動就給去重了,如果你需要對一些數(shù)據(jù)進(jìn)行快速的全局去重,你當(dāng)然也可以基于jvm內(nèi)存里的HashSet進(jìn)行去重,但是如果你的某個系統(tǒng)部署在多臺機(jī)器上呢?

得基于redis進(jìn)行全局的set去重

可以基于set玩兒交集、并集、差集的操作,比如交集吧,可以把兩個人的粉絲列表整一個交集,看看倆人的共同好友是誰?對吧

把兩個大v的粉絲都放在兩個set中,對兩個set做交集

5.sorted set

排序的set,去重但是可以排序,寫進(jìn)去的時候給一個分?jǐn)?shù),自動根據(jù)分?jǐn)?shù)排序,這個可以玩兒很多的花樣,最大的特點(diǎn)是有個分?jǐn)?shù)可以自定義排序規(guī)則

比如說你要是想根據(jù)時間對數(shù)據(jù)排序,那么可以寫入進(jìn)去的時候用某個時間作為分?jǐn)?shù),人家自動給你按照時間排序了

排行榜:將每個用戶以及其對應(yīng)的什么分?jǐn)?shù)寫入進(jìn)去,zadd board score username,接著zrevrange board 0 99,就可以獲取排名前100的用戶;zrank board username,可以看到用戶在排行榜里的排名

zadd board 85 zhangsan
zadd board 72 wangwu
zadd board 96 lisi
zadd board 62 zhaoliu

96 lisi
85 zhangsan
72 wangwu
62 zhaoliu

zrevrange board 0 3

獲取排名前3的用戶

96 lisi
85 zhangsan
72 wangwu

zrank board zhaoliu

4

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/7208.html

相關(guān)文章

  • 關(guān)于redis幾件小事(二)redis線程模型

    摘要:事件分派器會根據(jù)每個當(dāng)前產(chǎn)生的事件,來選擇對應(yīng)的事件處理器來處理。核心是基于非阻塞的多路復(fù)用機(jī)制單線程避免了多線程上下文切換的開銷。 1.memcached和redis有什么區(qū)別? (1)Redis支持服務(wù)器端的數(shù)據(jù)操作 redis和memcached相比,redis擁有更多的 數(shù)據(jù)結(jié)構(gòu)并且支持更豐富的數(shù)據(jù)操作 ,通常在memcached里面,你需要將數(shù)據(jù)拿到客戶端來進(jìn)行類型的修改然后在se...

    tuantuan 評論0 收藏0
  • 關(guān)于redis幾件小事(四)redis過期策略以及內(nèi)存淘汰機(jī)制

    摘要:的過期策略是什么樣的采用了定期刪除惰性刪除的過期策略。定期刪除原理定期刪除指的是默認(rèn)每隔就隨機(jī)抽取一些設(shè)置了過期時間的,檢測這些是否過期,如果過期了就將其刪掉。所有只會抽取一部分而不會全部檢查。 1.數(shù)據(jù)為什么會過期? 首先,要明白redis是用來做數(shù)據(jù)緩存的,不是用來做數(shù)據(jù)存儲的(當(dāng)然也可以當(dāng)數(shù)據(jù)庫用),所以數(shù)據(jù)時候過期的,過期的數(shù)據(jù)就不見了,過期主要有兩種情況, ①在設(shè)置緩存數(shù)據(jù)時制定了...

    AbnerMing 評論0 收藏0
  • 關(guān)于MQ幾件小事(五)如何保證消息按順序執(zhí)行

    摘要:一個對應(yīng)一個,但是里面進(jìn)行了多線程消費(fèi),這樣也會造成消息消費(fèi)順序錯誤。保證消息的消費(fèi)順序拆分多個,每個一個,就是多一些而已,確實(shí)是麻煩點(diǎn)這樣也會造成吞吐量下降,可以在消費(fèi)者內(nèi)部采用多線程的方式取消費(fèi)。 1.為什么要保證順序 消息隊(duì)列中的若干消息如果是對同一個數(shù)據(jù)進(jìn)行操作,這些操作具有前后的關(guān)系,必須要按前后的順序執(zhí)行,否則就會造成數(shù)據(jù)異常。舉例: 比如通過mysql binlog進(jìn)行兩個數(shù)據(jù)...

    h9911 評論0 收藏0
  • 關(guān)于MQ幾件小事(四)如何保證消息不丟失

    摘要:消費(fèi)端弄丟了數(shù)據(jù)關(guān)閉自動提交,在自己處理完畢之后手動提交,這樣就不會丟失數(shù)據(jù)。弄丟了數(shù)據(jù)一般要求設(shè)置個參數(shù)來保證消息不丟失給設(shè)置參數(shù)這個值必須大于,表示要求每個必須至少有個副本。上一篇如何保證消息不重復(fù)消費(fèi)下一篇如何保證消息按順序執(zhí)行 1.mq原則 數(shù)據(jù)不能多,也不能少,不能多是說消息不能重復(fù)消費(fèi),這個我們上一節(jié)已解決;不能少,就是說不能丟失數(shù)據(jù)。如果mq傳遞的是非常核心的消息,支撐核心的業(yè)...

    stackvoid 評論0 收藏0
  • 關(guān)于MQ幾件小事(一)消息隊(duì)列用途、優(yōu)缺點(diǎn)、技術(shù)選型

    摘要:數(shù)量對吞吐量的影響可以達(dá)到幾百幾千個的級別,吞吐量會有小幅度的下降。這是的一大優(yōu)勢,可在同等數(shù)量機(jī)器下支撐大量的從幾十個到幾百個的時候,吞吐量會大幅下降。下一篇如何保證消息隊(duì)列的高可用 1.為什么使用消息隊(duì)列? (1)解耦:可以在多個系統(tǒng)之間進(jìn)行解耦,將原本通過網(wǎng)絡(luò)之間的調(diào)用的方式改為使用MQ進(jìn)行消息的異步通訊,只要該操作不是需要同步的,就可以改為使用MQ進(jìn)行不同系統(tǒng)之間的聯(lián)系,這樣項(xiàng)目之間...

    xialong 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<