Redis學(xué)習(xí)筆記(二):Redis常用數(shù)據(jù)類型之set、zset的命令以及全局命令

上一篇博客說了str、hash和list三種數(shù)據(jù)類型,這篇博客將會(huì)介紹五種數(shù)據(jù)類型的后兩種set和zset,分別是集合和有序集合。這兩個(gè)數(shù)據(jù)類型就我個(gè)人的開發(fā)經(jīng)驗(yàn)來說沒用過,一方面是不熟悉,一方面是前面的三種類型基本已經(jīng)滿足了日常開發(fā)需求。在文章的最后還會(huì)補(bǔ)充說明一些全局的命令,至此關(guān)于命令的內(nèi)容就結(jié)束啦。寫的有點(diǎn)麻煩,但是寫完后有種發(fā)現(xiàn)新大陸的感覺,后期在使用redis的時(shí)候,選擇性知識(shí)體系將會(huì)更寬,不會(huì)僅限于一兩種數(shù)據(jù)類型啦。

redis數(shù)據(jù)類型之set

set集合和Java中的set集合有點(diǎn)像,內(nèi)部元素是無序的,不可重復(fù)。單個(gè)鍵的value值里面可以存儲(chǔ)2的32次方減1個(gè)元素。另外還可以直接做交、并、差集的運(yùn)算。下面來一起了解一下set集合的常用命令。

常用命令

  • sadd key members:向集合中插入元素,一次可以插入多個(gè)元素,member值指定具體元素

    sadd user:1:tag it java js
    
  • smembers key:查詢集合中的所有元素

    smembers user:1:tag
    
  • srem key members:移除集合中的元素,可以一次移除多個(gè),members值指定具體元素

    srem user:1:tag js
    
  • scard key:獲取當(dāng)前集合元素個(gè)數(shù)

    scard user:1:tag
    
  • sdiff keys:取第一個(gè)集合和其他集合的差集

    sdiff user:2:tag user:1:tag
    
  • sdiffstore destination keys:將取得的差集存儲(chǔ)的destination指定的集合中,如果destination指定的集合存在,直接覆蓋,如不存在,新增集合存儲(chǔ)

    sdiffstore difftags user:1:tag user:2:tag
    
  • sunion keys:取多個(gè)集合的并集

    sunion user:1:tag user:2:tag
    
  • sunionstore destination keys:取多個(gè)集合的并集,并將并集存儲(chǔ)到destination指定集合中,如果destination指定的集合存在,直接覆蓋,如不存在,新增集合存儲(chǔ)

    sunionstore uniontags user:1:tag user:2:tag
    
  • sinter keys:取多個(gè)集合之間的交集

    sinter user:1:tag user:2:tag
    
  • sinter destination keys:取多個(gè)集合之間的交集,并將交集存儲(chǔ)到destination指定集合中,如果destination指定的集合存在,直接覆蓋,如不存在,新增集合存儲(chǔ)

    sinterstore intertags user:1:tag user:2:tag
    

redis數(shù)據(jù)類型之zset

zset是有序的集合,內(nèi)部元素不可重復(fù),單個(gè)鍵下可以存儲(chǔ)2的32次方減1個(gè)元素。zset內(nèi)部元素排序是通過當(dāng)前元素的分?jǐn)?shù)來的,默認(rèn)采用正排序。一般用來做排行榜相關(guān)需求比較多。

常用命令

  • zadd key [nx|xx] [ch] [incr] scores members:添加zset類型數(shù)據(jù),nx、xx為可選值,nx表示不可覆蓋,xx為可覆蓋,在zadd命令里面ch、incr基本不用,可以使用zincrby替代。score表示分?jǐn)?shù),雙精度浮點(diǎn)數(shù),以字符串形式表示。

    zadd user 10 u1 15 u2 11 u3
    
  • zincrby key increment member:對(duì)zset集合中member對(duì)應(yīng)的分?jǐn)?shù)做累加操作,具體累加的數(shù)值有increment指定

    ### u1的分?jǐn)?shù)累加10
    zincrby user 10 u1
    
  • zrange key start stop [withscores]:正排序,指定start和stop角標(biāo),這種角標(biāo)的規(guī)則和list列表的角標(biāo)規(guī)則相同,具體可以參考list列表角標(biāo)的說明,withscores表示在返回值中包含分?jǐn)?shù)

    ## 正序方式獲取前兩名的member和對(duì)應(yīng)的分?jǐn)?shù)
    zrange user 0 1 withscores
    
  • zrevrange key start stop [withscores]:反排序,指定start和stop角標(biāo),withscores表示在返回值中包含分?jǐn)?shù)

    ## 反序方式獲取前兩名的member和對(duì)應(yīng)的分?jǐn)?shù)
    zrevrange user 0 1 withscores
    
  • zscore key member:查詢指定元素的分?jǐn)?shù)值

    zscore user u1
    
  • zrank key member:正排序,獲取當(dāng)前元素的排名

    zrank user u1
    
  • zrevrank key member:反排序,獲取當(dāng)前元素的排序

    zrevrank user u1
    
  • zcount key min max:指定分?jǐn)?shù)范圍內(nèi)的元素個(gè)數(shù),min和max表示分?jǐn)?shù)的邊界

    zcount key 10 20
    

說明:正排序表示從小到大排序,分?jǐn)?shù)越大越靠后,反排序表示從大到小,分?jǐn)?shù)越高越靠前

redis全局命令

redis有一些全局命令是經(jīng)常被使用的,比如刪除、設(shè)置有效時(shí)間等。下面列出經(jīng)常使用的。

常用命令

  • del keys:根據(jù)key刪除,可以同時(shí)刪除多個(gè)

    del user:1 user:2
    
  • exists keys:判斷指定key是否存在

    exists user:1
    
  • flushdb:清空當(dāng)前的數(shù)據(jù)庫,redis本身把數(shù)據(jù)庫分為16個(gè)部分,從0~15,可以通過select命令切換數(shù)據(jù),flushdb是清空當(dāng)前所在的數(shù)據(jù)庫部分

    flushdb
    
  • flushall:清空所有數(shù)據(jù)庫,將清除數(shù)據(jù)庫16個(gè)部分的所有數(shù)據(jù)

    flushall
    

    注意要分清楚flushallflushdb的區(qū)別,千萬不要用錯(cuò)了,否則就尷尬啦。

  • dbsize:查看當(dāng)前數(shù)據(jù)庫存在的key總數(shù)

    dbsize
    
  • select index:切換到指定的數(shù)據(jù)庫,index可選值為0~15

    select 11
    
  • keys pattern:查詢當(dāng)前數(shù)據(jù)庫的所有key

    keys *
    keys a*
    
  • expire key seconds:設(shè)置指定key的有效時(shí)間,單位秒

    ### 設(shè)置user:1有效時(shí)間為10秒,超過時(shí)間過期自動(dòng)刪除
    expire user:1 10
    
  • ttl key:查看當(dāng)前key還有多長時(shí)間失效

    ttl user:1
    
  • type key:查看當(dāng)前key存儲(chǔ)數(shù)據(jù)的類型,類型有string、hash、set、zset、list

    type user:1
    

總結(jié)

到這里基本的命令都寫完了,也都忘完了。在寫這些內(nèi)容參考了很多東西,有個(gè)騰訊云關(guān)于redis的說明,感覺很好,推薦給大家,可以參照一下。參考地址:https://cloud.tencent.com/developer/section/1374142

本文作者:程序猿楊鮑
版權(quán)歸作者所有,轉(zhuǎn)載請(qǐng)注明出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容