redis的基本使用笔记一
目錄
- 1.基本的命令
- 1.1 dbsize命令
- 1.2 keys命令
- 1.3 exists命令
- 1.4 move命令
- 1.5 del命令
- 1.6 expire命令
- 1.7 expipeat命令
- 1.9 persist命令
- 1.10 ttl命令
- 2.String類型的基本操作
- 2.1 append命令
- 2.2 strlen命令
- 2.3 incr命令!
- 2.4 incrby命令
- 2.5 decr命令
- 2.6 decrby命令
- 2.7 getrange命令
- 2.8 setrange命令
- 2.9 setex命令
- 2.10 setnx命令
- 2.11 mset命令
- 2.12 mget命令
- 2.13 msetnx命令
- 2.14 getset命令
- 3.List類型的基本操作
- 3.1 lpush命令
- 3.2 rpush命令
- 3.3 lrange命令
- 3.4 lpop命令
- 3.5 rpop命令
- 3.6 lindex命令
- 3.7 llen命令
- 3.8 lrem命令
- 3.9 ltrim命令
- 3.10 rpoplpush命令
- 3.11 lset命令
- 3.12 linsert命令
1.基本的命令
1.1 dbsize命令
查看當前數據庫的key數量
dbsize1.2 keys命令
查看所有key
keys *
keys支持正則表達式
1.3 exists命令
查看key是否存在,存在返回1,不存在返回0
exists key11.4 move命令
移動當前數據庫的key到別的數據庫中,轉移成功返回1,否則返回0
move key1 1
到第1個數據庫中查看(初始有16個數據庫,從0開始。默認是第0個數據庫)
1.5 del命令
刪除指定的key,若key不存在則忽略,返回刪除的key數量
1.6 expire命令
設置key的過期時間,超過時間后,將會自動刪除該key。
1.7 expipeat命令
作用與expipe命令相同,都用于為key設置生存時間。不同在于expipeat命令接受的時間參數是UNIX時間戳
時間戳的知識我不是很懂這里不作示范
1.9 persist命令
移除給定key的生存時間,將這個 key 從帶生存時間 key 轉換成一個不帶生存時間、永不過期的 key 。
1.10 ttl命令
返回key剩余的過期時間。 這種反射能力允許Redis客戶端檢查指定key在數據集里面剩余的有效期。
如果key不存在或者已過期,返回 -2
如果key存在并且沒有設置過期時間(永久有效),返回 -1 。
上面已經演示不作示范。
pexpire、pexpireat、ptll作用分別與expire、expireat、tll類似,只是前者單位是毫秒,后者是秒。
以上是常用的命令所以做了筆記,以便加深記憶。要更深入了解命令可以查看中文官網http://www.redis.cn/commands.html。
2.String類型的基本操作
2.1 append命令
如果 key 已經存在,并且值為字符串,那么這個命令會把 value 追加到原來值(value)的結尾。 如果 key 不存在,那么它將首先創建一個空字符串的key,再執行追加操作,這種情況 APPEND 將類似于 SET 操作。
2.2 strlen命令
返回key的string類型value的長度。如果key對應的非string類型,就返回錯誤。如果key不存在,返回0。
2.3 incr命令!
對存儲在指定key的數值執行原子的加1操作。
如果指定的key不存在,那么在執行incr操作之前,會先將它的值設定為0。
如果指定的key中存儲的值不是字符串類型或者存儲的字符串類型不能表示為一個整數,那么執行這個命令時服務器會返回一個錯誤:
(eq:(error) ERR value is not an integer or out of range)。
這個操作僅限于64位的有符號整型數據。
2.4 incrby命令
將key對應的數字加decrement。如果key不存在,操作之前,key就會被置為0。
2.5 decr命令
對key對應的數字做減1操作。如果key不存在,那么在操作之前,這個key對應的值會被置為0。
2.6 decrby命令
將key對應的數字減decrement。如果key不存在,操作之前,key就會被置為0。
2.7 getrange命令
返回key對應的字符串value的子串,這個子串是由start和end位移決定的(兩者都在string內)。可以用負的位移來表示從string尾部開始數的下標。所以-1就是最后一個字符,-2就是倒數第二個,以此類推。
這個函數處理超出范圍的請求時,都把結果限制在string內。
2.8 setrange命令
這個命令的作用是覆蓋key對應的string的一部分,從指定的offset處開始,覆蓋value的長度。如果offset比當前key對應string還要長,那這個string后面就補0以達到offset。不存在的keys被認為是空字符串,所以這個命令可以確保key有一個足夠大的字符串,能在offset處設置value。
2.9 setex命令
設置key對應字符串value,并且設置key在給定的seconds時間之后超時過期。
SETEX是原子的,也可以通過把上面兩個命令放到MULTI/EXEC塊中執行的方式重現。相比連續執行上面兩個命令,它更快,因此當Redis當做緩存使用時,這個操作更加常用。
2.10 setnx命令
將key設置值為value,如果key不存在,這種情況下等同SET命令。 當key存在時,什么也不做。SETNX是”SET if Not eXists”的簡寫。
2.11 mset命令
對應給定的keys到他們相應的values上。MSET會用新的value替換已經存在的value,就像普通的SET命令一樣。如果你不想覆蓋已經存在的values,請參看命令MSETNX。
MSET是原子的,所以所有給定的keys是一次性set的。客戶端不可能看到這種一部分keys被更新而另外的沒有改變的情況。
2.12 mget命令
返回所有指定的key的value。對于每個不對應string或者不存在的key,都返回特殊值nil。正因為此,這個操作從來不會失敗。
2.13 msetnx命令
對應給定的keys到他們相應的values上。只要有一個key已經存在,MSETNX一個操作都不會執行。 由于這種特性,MSETNX可以實現要么所有的操作都成功,要么一個都不執行,這樣可以用來設置不同的key,來表示一個唯一的對象的不同字段。
2.14 getset命令
自動將key對應到value并且返回原來key對應的value。如果key存在但是對應的value不是字符串,就返回錯誤。
3.List類型的基本操作
3.1 lpush命令
將所有指定的值插入到存于 key 的列表的頭部。如果 key 不存在,那么在進行 push 操作前會創建一個空列表。 如果 key 對應的值不是一個 list 的話,那么會返回一個錯誤。
可以使用一個命令把多個元素 push 進入列表,只需在命令末尾加上多個指定的參數。元素是從最左端的到最右端的、一個接一個被插入到 list 的頭部。 所以對于這個命令例子 LPUSH mylist a b c,返回的列表是 c 為第一個元素, b 為第二個元素, a 為第三個元素。
3.2 rpush命令
向存于 key 的列表的尾部插入所有指定的值。如果 key 不存在,那么會創建一個空的列表然后再進行 push 操作。 當 key 保存的不是一個列表,那么會返回一個錯誤。
可以使用一個命令把多個元素打入隊列,只需要在命令后面指定多個參數。元素是從左到右一個接一個從列表尾部插入。 比如命令 RPUSH mylist a b c 會返回一個列表,其第一個元素是 a ,第二個元素是 b ,第三個元素是 c。
3.3 lrange命令
返回存儲在 key 的列表里指定范圍內的元素。 start 和 end 偏移量都是基于0的下標,即list的第一個元素下標是0(list的表頭),第二個元素下標是1,以此類推。
偏移量也可以是負數,表示偏移量是從list尾部開始計數。 例如, -1 表示列表的最后一個元素,-2 是倒數第二個,以此類推。
3.4 lpop命令
移除并且返回 key 對應的 list 的前count個元素。不輸count時默認為1.
3.5 rpop命令
移除并返回存于 key 的 list 的最后count個元素。不輸count時默認為1
3.6 lindex命令
返回列表里的元素的索引 index 存儲在 key 里面。 下標是從0開始索引的,所以 0 是表示第一個元素, 1 表示第二個元素,并以此類推。 負數索引用于指定從列表尾部開始索引的元素。在這種方法下,-1 表示最后一個元素,-2 表示倒數第二個元素,并以此往前推。
當 key 位置的值不是一個列表的時候,會返回一個error。
3.7 llen命令
返回存儲在 key 里的list的長度。 如果 key 不存在,那么就被看作是空list,并且返回長度為 0。 當存儲在 key 里的值不是一個list的話,會返回error。
3.8 lrem命令
從存于 key 的列表里移除前 count 次出現的值為 value 的元素。 這個 count 參數通過下面幾種方式影響這個操作:
比如, LREM list -2 “hello” 會從存于 list 的列表里移除最后兩個出現的 “hello”。
需要注意的是,如果list里沒有存在key就會被當作空list處理,所以當 key 不存在的時候,這個命令會返回 0。
3.9 ltrim命令
修剪(trim)一個已存在的 list,這樣 list 就會只包含指定范圍的指定元素。start 和 stop 都是由0開始計數的, 這里的 0 是列表里的第一個元素(表頭),1 是第二個元素,以此類推。
例如: LTRIM foobar 0 2 將會對存儲在 foobar 的列表進行修剪,只保留列表里的前3個元素。
start 和 end 也可以用負數來表示與表尾的偏移量,比如 -1 表示列表里的最后一個元素, -2 表示倒數第二個,等等。
3.10 rpoplpush命令
RPOPLPUSH source destination原子性地返回并移除存儲在 source 的列表的最后一個元素(列表尾部元素), 并把該元素放入存儲在 destination 的列表的第一個元素位置(列表頭部)。
例如:假設 source 存儲著列表 a,b,c, destination存儲著列表 x,y,z。 執行 RPOPLPUSH 得到的結果是 source 保存著列表 a,b ,而 destination 保存著列表 c,x,y,z。
如果 source 不存在,那么會返回 nil 值,并且不會執行任何操作。 如果 source 和 destination 是同樣的,那么這個操作等同于移除列表最后一個元素并且把該元素放在列表頭部, 所以這個命令也可以當作是一個旋轉列表的命令。
3.11 lset命令
LSET key index value設置 index 位置的list元素的值為 value。 當index超出范圍時會返回一個error。
3.12 linsert命令
LINSERT key BEFORE|AFTER pivot value把 value 插入存于 key 的列表中在基準值 pivot 的前面或后面。
當pivot不存在時,返回-1。
當 key 不存在時,這個list會被看作是空list,任何操作都不會發生,返回0。
當 key 存在,但保存的不是一個list的時候,會返回error。
總結
以上是生活随笔為你收集整理的redis的基本使用笔记一的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 万事兴集成灶好不好?
- 下一篇: redis的基本使用笔记二