Redis基本命令

String

SDS使用結構體實現,結構體中的len屬性直接記錄了該SDS結構體中buf數組中已使用的長度,所以獲取字符串長度時,只須要獲取len屬性的值,這個操做的複雜度爲O(1)。
SDS實現了空間預分配和惰性空間釋放兩種優化策略,減小了修改字符串時內存分配的次數。
SDS被修改時會自動動態擴展至修改值的長度大小,避免了內存溢出問題。redis

Strings 基本命令

  • APPEND 追加值到一個key上 均攤時間複雜度是O(1), 由於redis用的動態字符串的庫在每次分配空間的時候會增長一倍的可用空閒空間,因此在添加的value較小並且已經存在的 value是任意大小的狀況下,均攤時間複雜度是O(1)
127.0.0.1:6379> exists key1
(integer) 0
127.0.0.1:6379> append key1 "hello"
(integer) 5
127.0.0.1:6379> append key1 " world"
(integer) 11
127.0.0.1:6379> get key1
"hello world"
127.0.0.1:6379>
  • BITCOUNT key [start end] 時間複雜度O(n) 統計字符串被設置爲1的bit數. 能夠結合位圖法使用~
127.0.0.1:6379> bitcount bits 
(integer) 0
127.0.0.1:6379> setbit bits 5 1
(integer) 0
127.0.0.1:6379> bitcount bits 
(integer) 1
127.0.0.1:6379> setbit bits 4 1
(integer) 0
127.0.0.1:6379> bitcount bits 
(integer) 2
127.0.0.1:6379>
  • DECR key 對key對應的數字作減1操做。若是key不存在,那麼在操做以前,這個key對應的值會被置爲0。若是key有一個錯誤類型的value或者是一個不能表示成數字的字符串,就返回錯誤。這個操做最大支持在64位有符號的整型數字~
127.0.0.1:6379> set key2 "11"
OK
127.0.0.1:6379> decr key2
(integer) 10
127.0.0.1:6379> decr key3  //key3 不存在
(integer) -1
127.0.0.1:6379> get key3
"-1"
127.0.0.1:6379> SET key4 "234293482390480948029348230948"
OK
127.0.0.1:6379> decr key4
(error) ERR value is not an integer or out of range
  • DECRBY key decrement 將key對應的數字減decrement。若是key不存在,操做以前,key就會被置爲0。若是key的value類型錯誤或者是個不能表示成數字的字符串,就返回錯誤。這個操做最多支持64位有符號的正型數字~
127.0.0.1:6379> set key5 12
OK
127.0.0.1:6379> decrby key5 5
(integer) 7
127.0.0.1:6379>   其他同decr命令
//GET key 返回key的value。若是key不存在,返回特殊值nil。若是key的value不是string,就返回錯誤,由於GET只處理string類型的values。
//SET key value [EX seconds] [PX milliseconds] [NX|XX] 將鍵key設定爲指定的「字符串」值。 若是    key 已經保存了一個值,那麼這個操做會直接覆蓋原來的值,而且忽略原始類型。 當set命令執行成功以後,以前設置的過時時間都將失效
127.0.0.1:6379> get key6
(nil)
127.0.0.1:6379> set key6 test
OK
127.0.0.1:6379> get key6
"test"
  • GETBIT key offset 返回key對應的string在offset處的bit值 當offset超出了字符串長度的時候,這個字符串就被假定爲由0比特填充的連續空間。當key不存在的時候,它就認爲是一個空字符串,因此offset老是超出範圍,而後value也被認爲是由0比特填充的連續空間。到內存分配
  • SETBIT key offset value 設置或者清空key的value(字符串)在offset處的bit值。
127.0.0.1:6379> setbit key7 6 1
(integer) 0
127.0.0.1:6379> getbit key7 6
(integer) 1
127.0.0.1:6379> getbit key7 100
(integer) 0
  • INCR key 對存儲在指定key的數值執行原子的加1操做。若是指定的key不存在,那麼在執行incr操做以前,會先將它的值設定爲0。
127.0.0.1:6379> incr key8 
(integer) 1
127.0.0.1:6379> incr key8 
(integer) 2
127.0.0.1:6379> get key8
"2"
  • INCRBY key increment
127.0.0.1:6379> incrby key9 10
(integer) 10
127.0.0.1:6379> incrby key9 1
(integer) 11
127.0.0.1:6379> get key9
"11"
  • SETEX key seconds value 設置key對應字符串value,而且設置key在給定的seconds時間以後超時過時。這個命令等效於執行下面的命令
  • SET mykey value
  • EXPIRE mykey seconds數組

  • SETEX是原子的,也能夠經過把上面兩個命令放到MULTI/EXEC塊中執行的方式重現。相比連續執行上面兩個命令,它更快,由於當Redis當作緩存使用時,這個操做更加經常使用。緩存

  • SETNX key value 將key設置值爲value,若是key不存在,這種狀況下等同SET命令。 當key存在時,什麼也不作。SETNX是」SET if Not exists」的簡寫。
127.0.0.1:6379> setnx key10 "hello"
(integer) 1
127.0.0.1:6379> setnx key10 "world"
(integer) 0
127.0.0.1:6379> get key10
"hello"
相關文章
相關標籤/搜索