redis存儲set分類

加入要對渠道進行分類:國內(nèi)和海外(inland,overseas)

一種方式是最好在redis中見上述兩個set key
然后使用 SISMEMBER key member 傳入渠道特征作為member的值去判斷它是否在一個集合中
如果兩個集合必有一個有該渠道,只需要判斷一次
否則循環(huán)所有集合的key垄提,存在該成員則跳出循環(huán)

該類問題涉及到分類和存在性侮叮,exists方法只是檢查該key是否存在澜倦,缺乏分類能力。

另一辦法是使用key(渠道特征)火的,string key的內(nèi)容為國內(nèi)或海外州袒,可以exists和get 該key知道它的類別(set appsflyer overseas)

redis做隨機抽獎蹬音,使用RANDOMKEY,添加key時使用所有人員的編號,在的用1做值否則用0做值库说。
randomkey返回人員編號再看其值有效性狂鞋。


Redis 的 Set 是 String 類型的無序集合。集合成員是唯一的潜的,這就意味著集合中不能出現(xiàn)重復的數(shù)據(jù)要销。

Redis 中集合是通過哈希表實現(xiàn)的,所以添加夏块,刪除疏咐,查找的復雜度都是 O(1)。

集合中最大的成員數(shù)為 232 - 1 (4294967295, 每個集合可存儲40多億個成員)脐供。
實例

redis 127.0.0.1:6379> SADD runoobkey redis
(integer) 1
redis 127.0.0.1:6379> SADD runoobkey mongodb
(integer) 1
redis 127.0.0.1:6379> SADD runoobkey mysql
(integer) 1
redis 127.0.0.1:6379> SADD runoobkey mysql
(integer) 0
redis 127.0.0.1:6379> SMEMBERS runoobkey

  1. "mysql"
  2. "mongodb"
  3. "redis"

下表列出了 Redis 集合基本命令:
序號 命令及描述
1 SADD key member1 [member2]
向集合添加一個或多個成員
2 SCARD key
獲取集合的成員數(shù)
3 SDIFF key1 [key2]
返回給定所有集合的差集
4 SDIFFSTORE destination key1 [key2]
返回給定所有集合的差集并存儲在 destination 中
5 SINTER key1 [key2]
返回給定所有集合的交集
6 SINTERSTORE destination key1 [key2]
返回給定所有集合的交集并存儲在 destination 中
7 SISMEMBER key member
判斷 member 元素是否是集合 key 的成員
8 SMEMBERS key
返回集合中的所有成員
9 SMOVE source destination member
將 member 元素從 source 集合移動到 destination 集合
10 SPOP key
移除并返回集合中的一個隨機元素
11 SRANDMEMBER key [count]
返回集合中一個或多個隨機數(shù)
12 SREM key member1 [member2]
移除集合中一個或多個成員
13 SUNION key1 [key2]
返回所有給定集合的并集
14 SUNIONSTORE destination key1 [key2]
所有給定集合的并集存儲在 destination 集合中
15 SSCAN key cursor [MATCH pattern] [COUNT count]
迭代集合中的元素下表列出了 Redis 集合基本命令:

| 序號 | 命令及描述 |
| 1 | SADD key member1 [member2]
向集合添加一個或多個成員 |
| 2 | SCARD key
獲取集合的成員數(shù) |
| 3 | SDIFF key1 [key2]
返回給定所有集合的差集 |
| 4 | SDIFFSTORE destination key1 [key2]
返回給定所有集合的差集并存儲在 destination 中 |
| 5 | SINTER key1 [key2]
返回給定所有集合的交集 |
| 6 | SINTERSTORE destination key1 [key2]
返回給定所有集合的交集并存儲在 destination 中 |
| 7 | SISMEMBER key member
判斷 member 元素是否是集合 key 的成員 |
| 8 | SMEMBERS key
返回集合中的所有成員 |
| 9 | SMOVE source destination member
將 member 元素從 source 集合移動到 destination 集合 |
| 10 | SPOP key
移除并返回集合中的一個隨機元素 |
| 11 | SRANDMEMBER key [count]
返回集合中一個或多個隨機數(shù) |
| 12 | SREM key member1 [member2]
移除集合中一個或多個成員 |
| 13 | SUNION key1 [key2]
返回所有給定集合的并集 |
| 14 | SUNIONSTORE destination key1 [key2]
所有給定集合的并集存儲在 destination 集合中 |
| 15 | SSCAN key cursor [MATCH pattern] [COUNT count]
迭代集合中的元素 |


I am surprised no one advised you to use either a Hash Table or a Sorted Set which combine advantages of allowing duplicity (by storing the number of elements as value - Hash Table, or score - Sorted Set) and indexing members by nature of a hash table/set.
Hash Table

To check for a key existence, use the HGETcommand. It returns a nil answer if the specified member does not exist.

To add a new member, simply use HINCRBY which will either update the value (ie the number of elements with the member name) or create a new member if it does not exist.
Sorted Set

To check for a key existence, use either one of the three following commands:

ZSCORE
ZRANK
ZREVRANK

They return a nil answer if the specified member does not exist.

To add a new member, simply use ZINCRBY which will either update the score (ie the number of elements with the member name) or create a new member if it does not exist.

To sum up: Sorted Sets or Hash Tables allow you to make all the operations with your requirements with a single command.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末浑塞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子政己,更是在濱河造成了極大的恐慌酌壕,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件歇由,死亡現(xiàn)場離奇詭異卵牍,居然都是意外死亡,警方通過查閱死者的電腦和手機沦泌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進店門糊昙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谢谦,你說我怎么就攤上這事释牺。” “怎么了回挽?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵没咙,是天一觀的道長。 經(jīng)常有香客問我千劈,道長祭刚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮涡驮,結(jié)果婚禮上暗甥,老公的妹妹穿的比我還像新娘。我一直安慰自己遮怜,他們只是感情好淋袖,可當我...
    茶點故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锯梁,像睡著了一般即碗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上陌凳,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天剥懒,我揣著相機與錄音,去河邊找鬼合敦。 笑死初橘,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的充岛。 我是一名探鬼主播保檐,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼崔梗!你這毒婦竟也來了夜只?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤蒜魄,失蹤者是張志新(化名)和其女友劉穎扔亥,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谈为,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡旅挤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了伞鲫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粘茄。...
    茶點故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖榔昔,靈堂內(nèi)的尸體忽然破棺而出驹闰,到底是詐尸還是另有隱情,我是刑警寧澤撒会,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布,位于F島的核電站师妙,受9級特大地震影響诵肛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一怔檩、第九天 我趴在偏房一處隱蔽的房頂上張望褪秀。 院中可真熱鬧,春花似錦薛训、人聲如沸媒吗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闸英。三九已至,卻和暖如春介袜,著一層夾襖步出監(jiān)牢的瞬間甫何,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工遇伞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辙喂,地道東北人。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓鸠珠,卻偏偏與公主長得像巍耗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子渐排,可洞房花燭夜當晚...
    茶點故事閱讀 43,587評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 一炬太、Redis基礎(chǔ) 1.概述 Redis是一個開源,高級的鍵值存儲和一個適用的解決方案飞盆,用于構(gòu)建高性能娄琉,可擴展的W...
    鄭元吉閱讀 296評論 0 0
  • NOSQL類型簡介鍵值對:會使用到一個哈希表,表中有一個特定的鍵和一個指針指向特定的數(shù)據(jù)吓歇,如redis孽水,volde...
    MicoCube閱讀 3,961評論 2 27
  • 源地址:http://blog.csdn.net/gjanuary/article/details/5207699...
    Freeasthew_a098閱讀 1,532評論 0 6
  • 這篇文章主要介紹了30個php操作redis常用方法代碼例子,本文其實不止30個方法,可以操作string類型、l...
    我是沒頭腦丶閱讀 1,768評論 0 21
  • phpredis是php的一個擴展Redis::__construct構(gòu)造函數(shù)$redis = new Redis...
    hello大象閱讀 762評論 0 2