從今天開始我將重點分享一下Redis中的5種數據結構,今天咱們學習一下第一種數據結構字符串。字符串是Redis中的最基礎的數據結構。咱們保存到Redis中的key,也就是鍵,就是字符串結構的,除此以外,咱們之後學習的其它數據結構,也是在字符串的基礎上設計的,可見字符串結構對於Redis是多麼的重要。字符串中的值雖然是字符串可是能夠保存不少種類型的如:簡單的字符串、JSON、XML、二進制等等。但有一點要特別注意,就是在Redis中字符串類型的值最大隻能保存512MB。數據結構
set key value [EX seconds] [PX milliseconds] [NX|XX]
set命令有幾個非必須的選項,下面咱們看一下它們具體的說明app
下面咱們看一下setnx和setxx命令在實際的開發中,有什麼做用呢?咱們知道setnx命令只有固然key不存在的時候才能設置成功,換句話說,也就是同一個key在執行setnx命令時,只能成功一次,而且因爲Redis的單線程命令處理機制,即便多個客戶端同時執行setnx命令,也只人有一個客戶端執行成功。因此,正是基於setnx命令的這種特性,因此setnx命令能夠做爲分佈式鎖的一種解決方案。分佈式
2.獲取值學習
get key
3.批量設置值編碼
mset key value
4.批量獲取值spa
mget key
若是有些鍵不存在,那麼它的值將爲nil也就是空,而且返回的結果,就是按照傳入鍵的順序返回的。線程
5.計數設計
incr key
incr命令用於對值作自增操做,返回的結果分爲3種狀況:3d
除此以外,在Redis中除了有incr自增命令外,還提供了不少其它的有關對數字處理的命令。例如:code
decr key 自減 incrby kek increment 自增指定數字 decrby key decrement 自減指定數字 incrbyfloat key increment 自增浮點數
6.追加值
append key value
append命令能夠向字符串尾部追加值。
7.字符串長度
strlen key
因爲每一箇中文佔用3個字節,因此jilinwula這個鍵,返回是字符串長度爲12,而不是4。
8.設置並返回原值
getset key value
9.設置指定位置的字符
setrange key offeset value
10.獲取部分字符串
getrange key start end
在Redis中執行任何命令時,都有相應的時間複雜度的,複雜度越高也就越費時間,因此在執行Redis中的命令時,若是要執行的命令複雜度越高,就越要慎重。下面是字符串命令時間複雜度類型表:
命令 | 時間複雜度 |
---|---|
set key value | O(1) |
get key | O(1) |
del key | O(k) k是鍵的個數 |
mset key value | O(k) k是鍵的個數 |
mget key | O(k) k是鍵的個數 |
incr key | O(1) |
decr key | O(1) |
incrby key increment | O(1) |
decrby keky increment | O(1) |
incrbyfloat key iincrement | O(1) |
append key value | O(1) |
strlen key | O(1) |
setrange key offset value | O(1) |
getrange key start end | O(n) n是字符串長度 |
在Redis中字符串類型的內部編碼有3種。
原文地址:jilinwula.com