摘要:這個是類似的一種結構,這個一般就是可以將結構化的數據,比如一個對象前提是這個對象沒嵌套其他的對象給緩存在里,然后每次讀寫緩存的時候,可以就操作里的某個字段。
1.string這是最基本的類型了,就是普通的set和get,做簡單的kv緩存。
2.hash這個是類似map的一種結構,這個一般就是可以將結構化的數據,比如一個對象(前提是這個對象沒嵌套其他的對象)給緩存在redis里,然后每次讀寫緩存的時候,可以就操作hash里的某個字段。
key=150 value={ “id”: 150, “name”: “zhangsan”, “age”: 20 }
hash類的數據結構,主要是用來存放一些對象,把一些簡單的對象給緩存起來,后續操作的時候,你可以直接僅僅修改這個對象中的某個字段的值
value={ “id”: 150, “name”: “zhangsan”, “age”: 21 }3.list
有序列表,這個是可以做很多不同操作的
比如:微博,某個大v的粉絲,就可以以list的格式放在redis里去緩存
key=某大v value=[zhangsan, lisi, wangwu]
比如:可以通過list存儲一些列表型的數據結構,類似粉絲列表了、文章的評論列表了之類的東西
比如:可以通過lrange命令,就是從某個元素開始讀取多少個元素,可以基于list實現分頁查詢,這個很棒的一個功能,基于redis實現簡單的高性能分頁,可以做類似微博那種下拉不斷分頁的東西,性能高,就一頁一頁走
比如:可以搞個簡單的消息隊列,從list頭懟進去,從list尾巴那里弄出來
4.set無序集合,自動去重
直接基于set將系統里需要去重的數據扔進去,自動就給去重了,如果你需要對一些數據進行快速的全局去重,你當然也可以基于jvm內存里的HashSet進行去重,但是如果你的某個系統部署在多臺機器上呢?
得基于redis進行全局的set去重
可以基于set玩兒交集、并集、差集的操作,比如交集吧,可以把兩個人的粉絲列表整一個交集,看看倆人的共同好友是誰?對吧
把兩個大v的粉絲都放在兩個set中,對兩個set做交集
5.sorted set排序的set,去重但是可以排序,寫進去的時候給一個分數,自動根據分數排序,這個可以玩兒很多的花樣,最大的特點是有個分數可以自定義排序規則
比如說你要是想根據時間對數據排序,那么可以寫入進去的時候用某個時間作為分數,人家自動給你按照時間排序了
排行榜:將每個用戶以及其對應的什么分數寫入進去,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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/7208.html
摘要:事件分派器會根據每個當前產生的事件,來選擇對應的事件處理器來處理。核心是基于非阻塞的多路復用機制單線程避免了多線程上下文切換的開銷。 1.memcached和redis有什么區別? (1)Redis支持服務器端的數據操作 redis和memcached相比,redis擁有更多的 數據結構并且支持更豐富的數據操作 ,通常在memcached里面,你需要將數據拿到客戶端來進行類型的修改然后在se...
摘要:的過期策略是什么樣的采用了定期刪除惰性刪除的過期策略。定期刪除原理定期刪除指的是默認每隔就隨機抽取一些設置了過期時間的,檢測這些是否過期,如果過期了就將其刪掉。所有只會抽取一部分而不會全部檢查。 1.數據為什么會過期? 首先,要明白redis是用來做數據緩存的,不是用來做數據存儲的(當然也可以當數據庫用),所以數據時候過期的,過期的數據就不見了,過期主要有兩種情況, ①在設置緩存數據時制定了...
摘要:一個對應一個,但是里面進行了多線程消費,這樣也會造成消息消費順序錯誤。保證消息的消費順序拆分多個,每個一個,就是多一些而已,確實是麻煩點這樣也會造成吞吐量下降,可以在消費者內部采用多線程的方式取消費。 1.為什么要保證順序 消息隊列中的若干消息如果是對同一個數據進行操作,這些操作具有前后的關系,必須要按前后的順序執行,否則就會造成數據異常。舉例: 比如通過mysql binlog進行兩個數據...
摘要:消費端弄丟了數據關閉自動提交,在自己處理完畢之后手動提交,這樣就不會丟失數據。弄丟了數據一般要求設置個參數來保證消息不丟失給設置參數這個值必須大于,表示要求每個必須至少有個副本。上一篇如何保證消息不重復消費下一篇如何保證消息按順序執行 1.mq原則 數據不能多,也不能少,不能多是說消息不能重復消費,這個我們上一節已解決;不能少,就是說不能丟失數據。如果mq傳遞的是非常核心的消息,支撐核心的業...
摘要:數量對吞吐量的影響可以達到幾百幾千個的級別,吞吐量會有小幅度的下降。這是的一大優勢,可在同等數量機器下支撐大量的從幾十個到幾百個的時候,吞吐量會大幅下降。下一篇如何保證消息隊列的高可用 1.為什么使用消息隊列? (1)解耦:可以在多個系統之間進行解耦,將原本通過網絡之間的調用的方式改為使用MQ進行消息的異步通訊,只要該操作不是需要同步的,就可以改為使用MQ進行不同系統之間的聯系,這樣項目之間...
閱讀 2639·2021-11-22 15:24
閱讀 1370·2021-11-17 09:38
閱讀 2746·2021-10-09 09:57
閱讀 1192·2019-08-30 15:44
閱讀 2438·2019-08-30 14:00
閱讀 3538·2019-08-30 11:26
閱讀 2935·2019-08-29 16:28
閱讀 746·2019-08-29 13:56