一、Redis數據結構之字符串,掌握基本命令(2)--簡單透徹!

 

第一章中我講到了redis的常用的全局命令(地址:https://blog.csdn.net/qq_32317661/article/details/88663527),這一章我們繼續,廢話不多說,直接幹!

 

1.批量設置值

mset key1 value1  key2 value2 key3 value3 ...

設置成功返回 OK

 

2.批量獲取值

 

mget key1  key2  key3 ...

就會按照順序返回不同key的值

 

思考1:看到這裏,mset的作用就是批量插入或者批量更新,那麼這個命令是不是具有原子性呢?能不能保證數據一致性呢?

舉例: 
mset key1 value1 key2 value2

如果在for循環期間(key1-value1已經set成功),發送kill -15命令,redis關閉,如果開啓RDB選項,RDB文件會部分被修改(value1被修改),無法保證原子性,如果只開啓AOF選項,AOF文件不會被修改,能保證原子性。

對於開啓RDB的情況,因爲此時內存已經被修改,RDB是對內存進行的快照,因此RDB文件會被修改;對於開啓AOF的情況,因爲AOF保存執行的命令,在命令執行過程中,redis關閉,並不會將該命令寫入AOF文件,因此不會存在部分修改的情況。

RDB 和AOF不明白的不要着急,我會在後面的章節講到。

 

思考2:批量設置命令和單個值設置命令,效率如何?

 

 

 

兩者相差了10倍!!!在實際場景中,加上業務邏輯,兩者的速度肯定不止10倍!!所以學會批量操作,有助於提高業務處理效率,但是批量操作的所發送的命令數也不是無節制,要不然就會造成redis堵塞或者網絡堵塞。

 3.計數

incr key 

incr命令用於對值做自增操作,返回結果分爲三種情況:
·值不是整數,返回錯誤。
·值是整數,返回自增後的結果。
·鍵不存在,按照值爲0自增,返回結果爲1。
例如對一個不存在的鍵執行incr操作後,返回結果是1.

再次對鍵執行incr命令,返回結果是2.

如果值不是整數,那麼會返回錯誤:(error) ERR value is not an integer or out of range.
 

除了incr命令,Redis提供了decr(自減)、incrby(自增指定數字)、 decrby(自減指定數字)、incrbyfloat(自增浮點數):
decr key

incrby key increment

decrby key decrement

incrbyfloat key increment
很多存儲系統和編程語言內部使用CAS機制實現計數功能,會有一定的 CPU開銷,但在Redis中完全不存在這個問題,因爲Redis是單線程架構,任何命令到了Redis服務端都要順序執行。
 

4.追加值

append  key  value

成功後返回字符串的字符數量

如果key不存在,就相當於添加,然後返回字符串的字符數量

 

下一章我們重點講一下 redis 緩存爲字符串數據類型 有哪些應用場景!!

 

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