更多精彩文章,關注【ToBeTopJavaer】,更有數萬元精品vip資源免費等你來拿!!!
本文咱們要剖析的基本類型是Set,下面咱們將深刻源碼剖析Redis中Set的實現。ios
存儲類型:String 類型的無序集合,最大存儲數量 2^32-1(40 億左右)。
操做命令
sadd myset a b c d e f g複製代碼
smembers myset複製代碼
scard myset複製代碼
srandmember key複製代碼
spop myset複製代碼
srem myset d e f複製代碼
sismember myset a複製代碼
存儲( 實現) 原理
Redis 用 intset 或 hashtable 存儲 set。若是元素都是整數類型,就用 inset 存儲。
若是不是整數類型,就用 hashtable(數組+鏈表的存來儲結構)。
相關hashtable的源碼分析,在前面已經分析過了,在此就不重複了。
問題:KV 怎麼存儲 set 的元素?key 就是元素的值,value 爲 null。
若是整數類型元素個數超過 512 個,也會用 hashtable 存儲。
配置文件 redis.conf 中配置屬性以下
應用場景
抽獎
點贊、 簽到、 打卡
這條微博的 ID 是 t1001,用戶 ID 是 u3001。
用 like:t1001 來維護 t1001 這條微博的全部點贊用戶。
點讚了這條微博:sadd like:t1001 u3001
取消點贊:srem like:t1001 u3001
是否點贊:sismember like:t1001 u3001
點讚的全部用戶:smembers like:t1001
商品標籤
商品篩選
sdiff set1 set2複製代碼
sinter set1 set2複製代碼
sunion set1 set2複製代碼
sadd brand:apple iPhone11
sad screensize:6.0-6.24 iPhone11
sad screentype:lcd iPhone11
篩選商品,蘋果的,iOS 的,屏幕在 6.0-6.24 之間的,屏幕材質是 LCD 屏幕
sinter brand:apple brand:ios screensize:6.0-6.24 screentype:lcd
更多精彩文章,關注【ToBeTopJavaer】,更有數萬元精品vip資源免費等你來拿!!!
