目錄搜索
Clustercluster addslots(集群 槽位)cluster count failure reports(集群計數失敗報告)cluster countkeysinslotcluster delslotscluster failovercluster forgetcluster getkeysinslotcluster infocluster keyslot(集群鍵槽)cluster meetcluster nodes(集群節點)cluster replicate(集群復制)cluster reset(集群重置)cluster saveconfigcluster set config epochcluster setslotcluster slavescluster slotsreadonlyreadwriteConnectionauthechopingquitselectswapdbGeogeoaddgeodistgeohashgeoposgeoradiusgeoradiusbymemberHasheshdelhexistshgethgetallhincrbyhincrbyfloathkeyshlenhmgethmsethscanhsethsetnxhstrlenhvalsHyperLogLogpfaddpfcountpfmergeKeysdeldumpexistsexpireexpireatkeysmigratemoveobjectpersistpexpirepexpireatpttlrandomkeyrenamerenamenxrestorescansorttouchttltypeunlinkwaitListsblpopbrpopbrpoplpushlindexlinsertllenlpoplpushlpushxlrangelremlsetltrimrpoprpoplpushrpushrpushxPub/SubpsubscribepublishpubsubpunsubscribesubscribeunsubscribeScriptingevalevalshascript debugscript existsscript flushscript killscript loadServerbgrewriteaofbgsaveclient getnameclient killclient listclient pauseclient replyclient setnamecommandcommand countcommand getkeyscommand infoconfig getconfig resetstatconfig rewriteconfig setdbsizedebug objectdebug segfaultflushallflushdbinfolastsavemonitorrolesaveshutdownslaveofslowlogtimeSetssaddscardsdiffsdiffstoresintersinterstoresismembersmemberssmovespopsrandmembersremsscansunionsunionstoreSorted SetszaddzcardzcountzincrbyzinterstorezlexcountzrangezrangebylexzrangebyscorezrankzremzremrangebylexzremrangebyrankzremrangebyscorezrevrangezrevrangebylexzrevrangebyscorezrevrankzscanzscorezunionstoreStringsappendbitcountbitfieldbitopbitposdecrdecrbygetgetbitgetrangegetsetincrincrbyincrbyfloatmgetmsetmsetnxpsetexsetsetbitsetexsetnxsetrangestrlenTransactionsdiscardexecmultiunwatchwatch
文字

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

自1.0.0起可用。

時間復雜度: O(1)

設置key為保存字符串value。如果key已經保存了一個值,則不管其類型如何,都會被覆蓋。在 SET 操作成功之后,任何以前與密鑰關聯的生存時間都將被丟棄。

選項

從 Redis 開始2.6.12 SET 支持一組修改其行為的選項:

  • EX - 設置指定的到期時間,以秒為單位。

  • PX 毫秒 - 設置指定的到期時間,以毫秒為單位。

  • NX  - 只有在密鑰不存在的情況下才能設置密鑰。

  • XX  - 只有在鑰匙已經存在的情況下才能設置。

注意:由于 SET 命令選項可以替代 SETNX,SETEX,PSETEX,因此在未來的 Redis 版本中,這三個命令可能會被棄用并最終被刪除。

返回值

簡單字符串回復:OK如果 SET 正確執行??栈貜停喝绻捎谟脩糁付?code>NXor XX選項但未滿足條件而未執行 SET 操作,則返回 Null Bulk Reply 。

例子

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

模式

注意:以下模式不推薦使用Redlock算法,該算法實現起來稍微復雜一些,但提供了更好的保證并具有容錯性。

該命令SET resource-name anystring NX EX max-lock-time是使用Redis實現鎖定系統的簡單方法。

如果上述命令返回OK(或者如果命令返回 Nil 后一段時間后重試),則客戶端可以獲取鎖,并使用 DEL 刪除鎖。

鎖定將在到期時間后自動釋放。

可以使這個系統更健壯地修改解鎖模式,如下所示:

  • 設置一個不可猜測的大型隨機字符串(稱為標記),而不是設置固定字符串。

  • 不要使用 DEL 來釋放鎖定,而是發送一個只在值匹配時才刪除密鑰的腳本。

這樣可以避免客戶端在過期時間后嘗試釋放鎖,從而刪除由稍后獲取鎖的另一個客戶端創建的密鑰。

解鎖腳本的一個示例與以下內容類似:

if redis.call("get",KEYS[1]) == ARGV[1]then    return redis.call("del",KEYS[1])else    return 0end

該腳本應該用來調用 EVAL ...script... 1 resource-name token-value

上一篇:下一篇:
3d试机号绕胆图