四:redis的sets類型相關操作(有序和無序集合),redissets
================四五種(有序和無序集合):sets類型(就是集合)=============
一介紹: set表示集合,添加是是隨意添加的----->無序集合
set是集合,它是string類型的無序集合。
set是通過hash table實現的,添加,刪除和尋找的複雜度都是0(1)。
對集合我們可以取並集、交集、差集。
通過這寫操作我們可以實現sns中的好友推薦和blog的tag功能
1:sadd
向名稱key的set中添加元素(唯一的)
例:sadd myset1 one ---->向集合myset1中添加元素one
sadd myset1 two
查看:smembers myset1
2:srem
刪除名稱為key的set中的元素
例:sadd myset2 one
srem myset2 one --->刪除one元素
3:spop
隨機返回並刪除名稱為key的set中一的個元素
例:spop myset3 --->隨機彈出刪除的元素
4:sdiff
返回所有給定key與第一個key的差集
myset1=1,2 myset2=3,2 --返回1
例:sdiff myset1 myset2 ---->誰在前面以誰為標準
4:sdiffstore
返回所有給定key與第一個key的差集,並將結果儲存在一個新的key中
例:sdiffstore myset4 myset2 myset3 ---->將myset2與myset3的差集彈出並儲存到myset4中
5:sinter
返回所有給定key的交集(交集:裡面相同的元素)
two,one three,one --->one
例:sinter myset2 myset3 --->之間的交集
6: sinterstore
返回所有給定key與第一個key的交集,並將結果儲存在一個新的key中
例:sinterstore myset4 myset2 myset3 ---->將myset2與myset3的交集儲存到myset4中
7:sunion
返回所有給定key的並集
例:sunion myset1 myset2 --->取並集
8:sunionstore
返回所有給定key的並集,並儲存到新的key中
例:sunionstore myset4 myset1 myset2 --->取並集並 儲存到myset4中
9:smove
從第一個key中對應的set中移除某個元素並添加到第二個對應的key中
例:smove myset2 myset7 three --->將myset2中的元素移動到myset7裡面
10:scard
返回名稱為key的set的元素個數
例:scard myset8 ---->返回元素個數
11:sismember
測試某個元素是否是名稱為KEY的set中的元素
例:sismember myset2 two --->測試two是否是myset2中的元素
12:srandmember(無序的取)
隨機返回名稱為key的set的一個元素,但不刪除元素
例:srandmember myset3 --->隨機去除myset3的元素
13:
二介紹: sorted sets=========》有序集合
sortes set是set的一個升級版本,它在set的基礎上增加了一個順序屬性,
這一屬性在添加修改元素的時候可以指定,每次指定後,zset會自動重新按新的值調整順序。
可以理解為有兩列的MySQL表,一列存value,一列存順序。操作中key理解為zset(有序集合的名稱)的名字
1: zadd ---重複插入時候會不成功,且將順序更新
向名稱為key的zset中添加元素member,score用於排序,如果該元素存在,則更新其順序
例:zadd myzset1 1 one ---> 插入了one並指定順序號
zrange
取值:zrange myzset1 0 -1 -----> 取myzset1的所有元素
zrange myzset1 0 -1 withscores ---->取出元素並吧順序號輸出
2:zrem 刪除有序集合中的一個元素
刪除名稱為key的zset中的元素member
例子:zrem zset1 two --->刪除two元素
3:zincrby
如果在名稱為key的zset中已經存在元素member,則改元素的score
增加increment(順序號)否則向該集合中添加元素,其score的值為increment
例:zincrby ssett1 2 one ---->對順序號減
zincrby ssett1 -2 one ---->對順序號加
4:zrank
返回名稱為key的zset中member元素的排名(按score從小到大排序)即下標
例:zrange zset2 0 -1 withscores
zrank zset2 four ---->返回一個元素的索引值
5:zrevrank
返回名稱為key的zset中member元素的排名(按score從大到小排序)即下標
例:zrevrank zset2 four ---->和zrank順序相反
6: zrevrange
值按降序排序(score從大到小排序)
例:zrevrange zset2 0 -1 withscoress
7:zrangebyscore
返回集合中score在給定地區的元素
例:zrangebyscore zset2 2 4 withscores --->取下標2,3,4,且有序返回
8:zcount
返回集合中score在給定地區的數量
例:zrangebyscore zset2 2 4 ----->2,3,4 ,就會返回3表示有3個元素
9:zcrad
返回集合元素中的個數
zcrad zset2 ---->zset2裡面所有元素的個數
10:zremrangebyrank
刪除集合中排名在給定區間的元素(按照索引刪除)
例:zremrangebyrank zset2 1 1 ---->刪除索引為 1到1的(1),2,3(刪除2和3)
11:zremrangebyscore
刪除集合中score給定區間的元素(按照順序號刪除)
例:zremrangebyscore zset2 2 5 --->刪除順序號為2到5
========================================END========================================
怎麼把無序集合轉換成有序集合集合具有無序性即順序同也樣集合
過般寫法會從小寫大(對於有限集合)
懂請Hi我祝學習愉快
什麼是集合中得 有序性? 無序性? 互異性?
無序性:集合每元素地位都相同元素之間無序
確定性:給定集合任給元素該元素或者屬於或者屬於該集合二者必居其允許有模稜兩情況出現例子高同學小數都能構成集合性質主要用於判斷集合否能形成集合
互異性:集合任何兩元素都認相同即每元素只能出現次寫成{112}等同於{12}互異性使集合元素沒有重複兩相同對象同集合時只能算作集合元素