redis數據類型之set,zset,hash

  上一篇說了string和list兩種數據類型,現在說說剩下的幾種數據類型;

  繼續敲命令每一個命令,害╮(╯_╰)╭

 

1.set

  這個就類似於java中的Set<Set<T>>,特點是:每一個set中元素無序,而且不能重複

 

 

 

  sadd: 沒有指定set就創建一個set,然後向其中添加元素

  smembers: 遍歷指定的set中所有元素

 

   scard: 返回指定set中元素的個數 

 

  spop:隨機移除set中一個元素,也可以指定數量,一次隨機移除多個;這個命令感覺沒啥用....

 

  smove:可以讓元素在兩個set之間移動,注意,下圖的newLanguage這個set會自動創建的

 

  srem:刪除set中指定的元素

 

  sismember: 判斷集合中是否有指定元素

 

  srandmember: 隨機返回一個元素,只是返回,不會對set中元素有 任何修改操作

 

  sdiff: 這個命令很容易理解,就是去掉交集,但是不會對原有的set做任何修改,返回的數據是前面的集合爲準 ;

  注意,可以接多個set,例如sdiff set1 set2 set3,以set1爲基準,首先去掉set1和set2的交集,然後去掉set1和set3的交集

 

  sinter: 求交集

  sunion: 求並集

 

2.zset

  這個zset和set的區別就是,set中的數據是無序的,而zset中是有序的,就好像jdk中Set和TreeSet一樣;

  下圖中其實和Set差不多,只不過在set中每一個元素中都有一個分數,就像打分一樣,我們每丟進去一個元素都要給它打分,然後排序就是根據分數進行排序的

 

 

  

  zadd: 常見zset,並給添加的元素打分

  zrange: 根據分數進行排序

 

  zrangebyscore: 查找分數在某個區間的所有元素,還可以跟sql一樣使用limit進行分頁

 

  zcard: 查看集合中元素的個數;

 

  zrank: 返回一個元素在zset中的排名

  zrevrank: 返回倒着數的排名

 

 

  zscore: 查看某個元素的分數

 

  zrem: 刪除某個元素

 

  zincrby: 給某個元素加分,通過這個命令可以實現一個排行榜的功能,比如每次給用戶的分數加一,然後使用zrange/zrevrange就能獲取排行榜

 

3.hash

  hash就當作是java中的Map<String,Map<String,Object>>,

 

 

 

  hset: 創建一個hash類型,然後設置鍵值對

  hget: 向指定的hash中獲取某個鍵對應的值

 

  hgetall: 獲取指定的hash中所有的鍵值對

 

  hdel: 刪除某個hash中的指定的鍵值對

 

  hexists: 判斷hash中的指定鍵值對是否存在

 

  hkeys: 獲取某個hash中所有的鍵

  hvals: 獲取某個hash中所有的值

 

 

  hmset: 在一個hash中同時設置多個鍵值對

  hmget: 在一個hash中同時取出多個鍵對應的值

 

  hsetnx: 有指定的鍵則啥也不變,沒有那個鍵就添加鍵值對;

 

 

   hincrby: 給hash中的某個指定的鍵對應的值加上一個數字

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章