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