上一篇說了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中的某個指定的鍵對應的值加上一個數字