Redis學習筆記三:Redis的數據類型

redis是一種高級的key-value的存儲系統
1,key是字符串類型
2,value能夠存儲五種數據類型:

1.存儲字符串 string

  1. set key value:設定key持有指定的字符串value,如果該key存在則進行覆蓋操作
  2. get key:獲取key的value。如果與該key關聯的value不是String類型,redis 將返回錯誤信息,因爲get命令只能用於獲取String value;如果該key不存在,返回null
  3. getset key value:先獲取該key的值,然後在設置該key的值
  4. incr key:將指定的key的value原子性的遞增1.如果該key不存在,其初始值 爲0,在incr之後其值爲1。如果value的值不能轉成整型,如hello,該操作將執 行失敗並返回相應的錯誤信息
  5. decr key:將指定的key的value原子性的遞減1.如果該key不存在,其初始值 爲0,在incr之後其值爲-1。如果value的值不能轉成整型,如hello,該操作將執 行失敗並返回相應的錯誤信息
  6. incrby key increment:將指定的key的value原子性增加increment,如果該 key不存在,器初始值爲0,在incrby之後,該值爲increment。如果該值不能轉成 整型,如hello則失敗並返回錯誤信息
  7. decrby key decrement:將指定的key的value原子性減少decrement,如果 該key不存在,器初始值爲0,在decrby之後,該值爲decrement。如果該值不能 轉成整型,如hello則失敗並返回錯誤信息
  8. append key value:如果該key存在,則在原有的value後追加該值;如果該 key 不存在,則重新創建一個key/value

2.存儲list類型

在Redis中,List類型是按照插入順序排序的字符串鏈表。和數據結構中的普通鏈表 一樣,我們可以在其頭部(left)和尾部(right)添加新的元素。
  1. lpush key value1 value2...:在指定的key所關聯的list的頭部插入所有的 values,如果該key不存在,該命令在插入的之前創建一個與該key關聯的空鏈 表,之後再向該鏈表的頭部插入數據。插入成功,返回元素的個數
  2. rpush key value1、value2…:在該list的尾部添加元素
  3. lrange key start end:獲取鏈表中從start到end的元素的值,start、end可 爲負數,若爲-1則表示鏈表尾部的元素,-2則表示倒數第二個,依次類推…
  4. lpushx key value:僅當參數中指定的key存在時(如果與key管理的list中沒 有值時,則該key是不存在的)在指定的key所關聯的list的頭部插入value
  5. rpushx key value:在該list的尾部添加元素
  6. lpop key:返回並彈出指定的key關聯的鏈表中的第一個元素,即頭部元素
  7. rpop key:從尾部彈出元素
  8. rpoplpush resource destination:將鏈表中的尾部元素彈出並添加到頭部
  9. llen key:返回指定的key關聯的鏈表中的元素的數量
  10. lset key index value:設置鏈表中的index的腳標的元素值,0代表鏈表的頭元 素,-1代表鏈表的尾元素
  11. lrem key count value:刪除count個值爲value的元素,如果count大於0,從頭向尾遍歷並刪除count個值爲value的元素,如果count小於0,則從尾向頭遍歷並刪除。如果count等於0,則刪除鏈表中所有等於value的元素
  12. linsert key before|after pivot value:在pivot元素前或者後插入value這個 元素

3.存儲set類型

在Redis中,我們可以將Set類型看作爲沒有排序的字符集合,和List類型一樣。但和List類型不同的是,Set集合中不允許出現重複的元素。
  1. sadd key value1、value2…:向set中添加數據,如果該key的值已有則不會重複添加
  2. smembers key:獲取set中所有的成員
  3. scard key:獲取set中成員的數量
  4. sismember key member:判斷參數中指定的成員是否在該set中,1表示存 在,0表示不存在或者該key本身就不存在
  5. srem key member1、member2…:刪除set中指定的成員
  6. srandmember key:隨機返回set中的一個成員
  7. sdiff sdiff key1 key2:返回key1與key2中相差的成員,而且與key的順序有 關。即返回差集
  8. sdiffstore destination key1 key2:將key1、key2相差的成員存儲在 destination上
  9. sinter key[key1,key2…]:返回交集
  10. sinterstore destination key1 key2:將返回的交集存儲在destination上
  11. sunion key1、key2:返回並集
  12. sunionstore destination key1 key2:將返回的並集存儲在destination上

4.存儲zset(sorted set)

Sorted-Sets和Sets類型極爲相似,它們都是字符串的集合,都不允許重複的成員出 現在一個Set中。它們之間的主要差別是Sorted-Sets中的每一個成員都會有一個分 數(score)與之關聯,Redis正是通過分數來爲集合中的成員進行從小到大的排序。然 而需要額外指出的是,儘管Sorted-Sets中的成員必須是唯一的,但是分數(score) 卻是可以重複的。
  1. zadd key score member score2 member2 … :將所有成員以及該成員的分數存放到sorted-set中
  2. zcard key:獲取集合中的成員數量
  3. zcount key min max:獲取分數在[min,max]之間的成員
  4. zincrby key increment member:設置指定成員的增加的分數
  5. zrange key start end [withscores]:獲取集合中腳標爲start-end的成員,[withscores]參數表明返回的成員包含其分數
  6. zrangebyscore key min max [withscores] [limit offset count]:返回分數在[min,max]的成員並按照分數從低到高排序。[withscores]:顯示分數;[limit offset count]:offset,表明從腳標爲offset的元素開始並返回count個成員
  7. zrank key member:返回成員在集合中的位置
  8. zrem key member[member…]:移除集合中指定的成員,可以指定多個成員
  9. zscore key member:返回指定成員的分數

5.存儲hash

Redis中的Hashes類型可以看成具有String Key和String Value的map容器。所 以該類型非常適合於存儲值對象的信息
  1. hset key field value:爲指定的key設定field/value對(鍵值對)
  2. hgetall key:獲取key中的所有filed-vaule
  3. hget key field:返回指定的key中的field的值
  4. hmset key fields:設置key中的多個filed/value
  5. hmget key fileds:獲取key中的多個filed的值
  6. hexists key field:判斷指定的key中的filed是否存在
  7. hlen key:獲取key所包含的field的數量
  8. hincrby key field increment:設置key中filed的值增加increment,如:age增加20

6. 最後附一張數據結構大致的存儲圖

圖片描述

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