日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SET key value [EX seconds] [PX milliseconds] [NX|XX]

發布時間:2024/4/13 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SET key value [EX seconds] [PX milliseconds] [NX|XX] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Set?key?to hold the string?value. If?key?already holds a value, it is overwritten, regardless of its type. Any previous time to live associated with the key is discarded on successful?SET?operation.

將鍵key設定為指定的“字符串”值。

如果 key 已經保存了一個值,那么這個操作會直接覆蓋原來的值,并且忽略原始類型。

當set命令執行成功之后,之前設置的過期時間都將失效

選項

從2.6.12版本開始,redis為SET命令增加了一系列選項:

  • EX?seconds?– Set the specified expire time, in seconds.
  • PX?milliseconds?– Set the specified expire time, in milliseconds.
  • NX?– Only set the key if it does not already exist.
  • XX?– Only set the key if it already exist.

  • EX?seconds?– 設置鍵key的過期時間,單位時秒
  • PX?milliseconds?– 設置鍵key的過期時間,單位時毫秒
  • NX?– 只有鍵key不存在的時候才會設置key的值
  • XX?– 只有鍵key存在的時候才會設置key的值

注意:?由于SET命令加上選項已經可以完全取代SETNX,?SETEX,?PSETEX的功能,所以在將來的版本中,redis可能會不推薦使用并且最終拋棄這幾個命令。

返回值

simple-string-reply:如果SET命令正常執行那么回返回OK,否則如果加了NX?或者?XX選項,但是沒有設置條件。那么會返回nil。

例子

redis> SET mykey "Hello" OK redis> GET mykey "Hello" redis>

設計模式

注意:?下面這種設計模式并不推薦用來實現redis分布式鎖。應該參考the Redlock algorithm的實現,因為這個方法只是復雜一點,但是卻能保證更好的使用效果。

命令?SET resource-name anystring NX EX max-lock-time?是一種用 Redis 來實現鎖機制的簡單方法。

如果上述命令返回OK,那么客戶端就可以獲得鎖(如果上述命令返回Nil,那么客戶端可以在一段時間之后重新嘗試),并且可以通過DEL命令來釋放鎖。

客戶端加鎖之后,如果沒有主動釋放,會在過期時間之后自動釋放。

可以通過如下優化使得上面的鎖系統變得更加魯棒:

  • 不要設置固定的字符串,而是設置為隨機的大字符串,可以稱為token。
  • 通過腳步刪除指定鎖的key,而不是DEL命令。

上述優化方法會避免下述場景:a客戶端獲得的鎖(鍵key)已經由于過期時間到了被redis服務器刪除,但是這個時候a客戶端還去執行DEL命令。而b客戶端已經在a設置的過期時間之后重新獲取了這個同樣key的鎖,那么a執行DEL就會釋放了b客戶端加好的鎖。

解鎖腳本的一個例子將類似于以下:

if redis.call("get",KEYS[1]) == ARGV[1] thenreturn redis.call("del",KEYS[1]) elsereturn 0 end

這個腳本執行方式如下:

EVAL …script… 1 resource-name token-value

?

總結

以上是生活随笔為你收集整理的SET key value [EX seconds] [PX milliseconds] [NX|XX]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。