Redis基本語法總結

Redis基本語法

存儲字符串string

字符串類型是Redis中最爲基礎的數據存儲類型,它在Redis中是二進制安全的,這便意味着該類型可以接受任何格式的數據,如JPEG圖像數據或Json對象描述信息等。在Redis中字符串類型的Value最多可以容納的數據長度是512M。

set key value:設定key持有指定的字符串value,如果該key存在則進行覆蓋操作。總是返回”OK”

get key:獲取key的value。如果與該key關聯的value不是String類型,redis將返回錯誤信息,因爲get命令只能用於獲取String value;如果該key不存在,返回null。

getset key value:先獲取(輸出)該key的值,然後在設置該key的值。

del key : 刪除key的值

incr key:將指定的key的value原子性的遞增1。如果該key不存在,其初始值爲0,在incr之後其值爲1。如果value的值不能轉成整型,如”hello”,該操作將執行失敗並返回相應的錯誤信息。

decr key:將指定的key的value原子性的遞減1。如果該key不存在,其初始值爲0,在incr之後其值爲-1。如果value的值不能轉成整型,如”hello”,該操作將執行失敗並返回相應的錯誤信息。

incrby key increment:將指定的key的value原子性增加increment。如果該key不存在,初始值爲0,在incrby之後,該值爲increment。如果該值不能轉成整型,如hello則失敗並返回錯誤信息。

decrby key decrement:將指定的key的value原子性減少decrement。如果該key不存在,初始值爲0,在decrby之後,該值爲decrement。如果該值不能轉成整型,如hello則失敗並返回錯誤信息。

append key value:如果該key存在,則在原有的value後追加該值(即拼接子字符串)。如果該 key不存在,則重新創建一個key/value

存儲hash

Redis中的Hashes類型可以看成具有String Key和String Value的map容器。所以該類型非常適合於存儲值對象的信息。如Username、Password和Age等。如果 Hash中包含很少的字段,那麼該類型的數據也將僅佔用很少的磁盤空間。每一個Hash可以存儲4294967295個鍵值對。

hset key field value:爲指定的key設定field/value對(鍵值對)。

hgetall key:獲取key中的所有filed-vaule。

hget key field:返回指定的key中的field的值。

hmset key fields:設置key中的多個filed/value。

hmget key fileds:獲取key中的多個filed的值。

hdel key filed:刪除key中的指定filed

del key:刪除key的hash值

hincrby key field increment:設置key中filed的值增加increment

hexists key field:判斷指定的key中的filed是否存在

hlen key:獲取key所包含的field的數量

hkeys key:獲取key中所有fieldname值

hvals key:獲取key中所有fieldvalue值

存儲list

在Redis中,List類型是按照插入順序排序的字符串鏈表。和數據結構中的普通鏈表一樣,我們可以在其頭部(left)和尾部(right)添加新的元素。在插入時,如果該鍵並不存在,Redis將爲該鍵創建一個新的鏈表。與此相反,如果鏈表中所有的元素均被移除,那麼該鍵也將會被從數據庫中刪除。List中可以包含的最大元素數量是 4294967295。從元素插入和刪除的效率視角來看,如果我們是在鏈表的兩頭插入或刪除元素,這將會是非常高效的操作,即使鏈表中已經存儲了百萬條記錄,該操作也可以在常量時間內完成。然而需要說明的是,如果元素插入或刪除操作是作用於鏈表中間,那將會是非常低效的。相信對於有良好數據結構基礎的開發者而言,這一點並不難理解。

lpush key value1 value2…:在指定的key所關聯的list的頭部插入所有的values,如果該key不存在,該命令在插入的之前創建一個與該key關聯的空鏈表,之後再向該鏈表的頭部插入數據。插入成功,返回元素的個數。[注意:一個一個都從左邊插入,如ipush key value1 value2,則插入結果是value2 value1]

rpush key value1 value2…:在該list的尾部添加元素

lrange key start end:獲取鏈表中從start到end的元素的值(從0開始),start、end可爲負數,若爲-1則表示鏈表尾部的元素,-2則表示倒數第二個,依次類推…

lpushx key value:僅當參數中指定的key存在時(如果與key管理的list中沒有值時,則該key不會創建)在指定的key所關聯的list的頭部插入value

rpushx key value:在該list的尾部添加元素

lpop key:返回並彈出指定的key關聯的鏈表中的第一個元素,即頭部元素

rpop key:從尾部彈出元素

rpoplpush resource destination:將resource集合中的尾部元素彈出並添加到destination集合頭部

llen key:返回指定的key關聯的鏈表中的元素的數量

lrem key count value:刪除count個值爲value的元素,如果count大於0,從頭向尾遍歷並刪除count個值爲value的元素;如果count小於0,則從尾向頭遍歷並刪除。如果count等於0,則刪除鏈表中所有等於value的元素。

lset key index value:設置鏈表中的index的腳標的元素值(相當於替換),0代表鏈表的頭元素,-1代表鏈表的尾元素。

linsert key before|after pivot value:在pivot元素前或者後插入value這個元素。

存儲set

在Redis中,我們可以將Set類型看作爲沒有排序的字符集合,和List類型一樣,我們也可以在該類型的數據值上執行添加、刪除或判斷某一元素是否存在等操作。需要說明的是,這些操作的時間是常量時間。Set可包含的最大元素數是4294967295。和List類型不同的是,Set集合中不允許出現重複的元素。和List類型相比,Set類型在功能上還存在着一個非常重要的特性,即在服務器端完成多個Sets之間的聚合計算操作,如unions、intersections和differences。由於這些操作均在服務端完成,因此效率極高,而且也節省了大量的網絡IO開銷。

sadd key value1 value2…:向set中添加數據,如果該key的值已有則不會重複添加

smembers key:獲取set中所有的成員

srem key member1 member2…:刪除set中指定的成員

sismember key member:判斷參數中指定的成員是否在該set中,1表示存在,0表示不存在或者該key本身就不存在

scard key:獲取set中成員的數量

sdiff key1 key2:返回key1與key2中相差的成員(key1-key2),而且與key的順序有關。即返回差集

sdiffstore destination key1 key2:將key1、key2相差的成員存儲在 destination上

sinter key1 key2:返回key1和key2的交集

sinterstore destination key1 key2:將返回的交集存儲在destination上

sunion key1 key2:返回並集

sunionstore destination key1 key2:將返回的並集存儲在destination上

srandmember key:隨機返回set中的一個成員

存儲sortedset

Sorted-Sets和Sets類型極爲相似,它們都是字符串的集合,都不允許重複的成員出現在一個Set中。它們之間的主要差別是Sorted-Sets中的每一個成員都會有一個分數(score)與之關聯,Redis正是通過分數來爲集合中的成員進行從小到大的排序。然而需要額外指出的是,儘管Sorted-Sets中的成員必須是唯一的,但是分數(score) 卻是可以重複的。

在Sorted-Set中添加、刪除或更新一個成員都是非常快速的操作,其時間複雜度爲集合中成員數量的對數。由於Sorted-Sets中的成員在集合中的位置是有序的,因此,即便是訪問位於集合中部的成員也仍然是非常高效的。事實上,Redis所具有的這一特徵在很多其它類型的數據庫中是很難實現的,換句話說,在該點上要想達到和Redis同樣的高效,在其它數據庫中進行建模是非常困難的。

zadd key score member score2 member2 …:將所有成員以及該成員的權重分數存放到sorted-set中

zrange key start end [withscores]:獲取集合中腳標爲start-end的成員,[withscores]參數表明返回的成員包含其分數。

zrevrange key start end [withscores]:倒序獲取集合中腳標爲start-end的成員,[withscores]參數表明返回的成員包含其分數。

zrangebyscore key min max [withscores][limit offset count]:返回分數在[min,max]的成員並按照分數從低到高排序。[withscores]:顯示分數;[limit offset count]:offset,表明從腳標爲offset的元素開始並返回count個成員

zcount key min max:獲取分數在[min,max]之間的成員數量

zcard key:獲取集合中的成員數量

zscore key member:返回指定成員的分數

zrem key member[member…]:移除集合中指定的成員,可以指定多個成員

zremrangebyrank key start end:按照排名範圍(從小到大排名)刪除元素(start和end爲排名位置)

zremrangebyscore key min max:按照分數(從小到大排名)刪除元素(min和max爲分數)

zincrby key increment member:設置指定成員的增加的分數,返回值是更改後的分數

zrank key member:返回成員在集合中的位置

zrevrank key member:逆序返回成員在集合中的位置

keys的通用操作
keys pattern:獲取所有與pattern匹配的key,但會所有與該key匹配的keys,*表示任意一個或多個字符,?表示任意一個字符

del key1 key2…:刪除指定的key

exists key:判斷key是否存在,1代表存在,0代表不存在

rename key newkey:爲當前的key重命名

expire key time:爲key設置過期時間,單位秒

ttl key:獲取該key所剩的超時時間,如果沒有設置超時返回-1,如果返回-2表示超時了(不存在),如果沒超時還存在則返回剩餘時間

type key:獲取指定key的類型,該命令將以字符串的格式返回。返回的字符串爲string、list、set、hash和zset。如果key不存在返回none

參考博客:https://blog.csdn.net/qq_34829447/article/details/81942202

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