自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Redis Sets 使用場景有哪些?如何實現共同好友?

開發(fā) 前端
Java 的 HashSet 底層是用 HashMap 實現的,Sets 的底層數據結構是用散列表實現的,散列表的 key 存儲的是 Sets 中元素的 value,散列表的 value 指向 NULL。

Redis Sets 是什么?

Sets 的功能類似 Java 中的 HashSet,是通過散列表實現的,所以添加、刪除、查找元素的時間復雜度是 O(1)。

Sets 是字符串類型的無序集合,集合中的元素是唯一的,不會出現重復的數據。

Java 的 HashSet 底層是用 HashMap 實現的,Sets 的底層數據結構是用散列表實現的,散列表的 key 存儲的是 Sets 中元素的 value,散列表的 value 指向 NULL。

不同的是,當元素內容都是 64 位以內的十進制整數,并且元素個數不超過 set-max- intset-entries 配置的值(默認為 512)時,Sets 會使用更加省內存的 intset(整形數組)來存儲。

圖片圖片

使用場景

當你需要存儲多個元素,并且要求不能出現重復數據,無須考慮元素的有序性時,可以使用 Sets。

Sets 還支持在集合之間做交集、并集、差集操作,例如統計如下場景中多個集合元素的聚合結果。

◎ 統計多個元素的共有數據(交集)。

◎ 對于兩個集合,統計其中的一個獨有元素(差集)。

◎ 統計多個集合的所有元素(并集)。

常見的使用場景如下。

◎ 社交軟件中共同關注:通過交集實現。

◎ 每日新增關注數:對近兩天的總注冊用戶量集合取差集。

◎ 打標簽:你可以為自己收藏的每一篇文章打標簽,例如微信收藏功能,這樣可以快速地找到被添加了某個標簽的所有文章。

出招實戰(zhàn):共同好友

三國天下有限公司開發(fā)了一款名為「三國戀」的社交 App,需要實現共同好友功能,這個場景就能通過交集來實現。

我們?yōu)槊總€用戶創(chuàng)建一個 Sets 集合,將賬號名作為集合的 key,集合 value 存儲該賬號的好友。如下命令構建劉備和曹操的好友集合。

SADD user:劉備 趙子龍 張飛 關羽 貂蟬
SADD user:曹操 貂蟬 夏侯惇 典韋 張遼

想要知道兩個人的共同好友,也就是兩個集合的交集,只需要使用 SINTERSTORE 命令。

SINTERSTORE user:曹劉好友 user:劉備 user:曹操

命令執(zhí)行后,劉備與曹操兩個集合的交集數據就存儲到了 user:曹劉好友 集合中。接著使用 SMEMBERS 查看曹操與劉備的共同好友。

好家伙,他們都喜歡貂蟬,你喜不喜歡呢?

圖片圖片圖片

責任編輯:武曉燕 來源: 碼哥跳動
相關推薦

2022-10-17 00:27:20

二叉樹數組索引

2024-12-31 07:56:33

Disruptor內存有界隊列消費模式

2023-04-03 11:01:26

低代碼平臺場景

2025-02-11 09:49:12

2020-11-20 10:53:46

邊緣計算

2021-03-16 06:47:47

Python

2021-08-13 12:31:26

Redis代碼Java

2023-12-29 10:28:24

SPIJava靈活性

2025-01-15 07:54:02

2020-10-16 09:09:20

機器學習銀行技術

2022-07-24 21:56:38

元宇宙

2024-01-03 10:32:36

2024-10-25 16:31:17

Redis數據預處理線程

2021-09-18 10:20:07

Redis數據庫緩存

2021-12-01 23:34:10

EtcdRedis場景

2023-01-30 11:27:57

人工智能高性能計算CPU

2018-03-27 09:10:54

區(qū)塊鏈

2024-05-29 14:34:07

2023-05-16 07:47:18

RabbitMQ消息隊列系統

2021-09-28 16:22:48

區(qū)塊鏈大數據應用
點贊
收藏

51CTO技術棧公眾號