中国体彩网唯一官网
目錄 搜索
Cluster cluster addslots(集群 槽位) cluster count failure reports(集群計數失敗報告) cluster countkeysinslot cluster delslots cluster failover cluster forget cluster getkeysinslot cluster info cluster keyslot(集群鍵槽) cluster meet cluster nodes(集群節點) cluster replicate(集群復制) cluster reset(集群重置) cluster saveconfig cluster set config epoch cluster setslot cluster slaves cluster slots readonly readwrite Connection auth echo ping quit select swapdb Geo geoadd geodist geohash geopos georadius georadiusbymember Hashes hdel hexists hget hgetall hincrby hincrbyfloat hkeys hlen hmget hmset hscan hset hsetnx hstrlen hvals HyperLogLog pfadd pfcount pfmerge Keys del dump exists expire expireat keys migrate move object persist pexpire pexpireat pttl randomkey rename renamenx restore scan sort touch ttl type unlink wait Lists blpop brpop brpoplpush lindex linsert llen lpop lpush lpushx lrange lrem lset ltrim rpop rpoplpush rpush rpushx Pub/Sub psubscribe publish pubsub punsubscribe subscribe unsubscribe Scripting eval evalsha script debug script exists script flush script kill script load Server bgrewriteaof bgsave client getname client kill client list client pause client reply client setname command command count command getkeys command info config get config resetstat config rewrite config set dbsize debug object debug segfault flushall flushdb info lastsave monitor role save shutdown slaveof slowlog time Sets sadd scard sdiff sdiffstore sinter sinterstore sismember smembers smove spop srandmember srem sscan sunion sunionstore Sorted Sets zadd zcard zcount zincrby zinterstore zlexcount zrange zrangebylex zrangebyscore zrank zrem zremrangebylex zremrangebyrank zremrangebyscore zrevrange zrevrangebylex zrevrangebyscore zrevrank zscan zscore zunionstore Strings append bitcount bitfield bitop bitpos decr decrby get getbit getrange getset incr incrby incrbyfloat mget mset msetnx psetex set setbit setex setnx setrange strlen Transactions discard exec multi unwatch watch
文字

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 正確執行。空回復:如果由于用戶指定了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

上一篇: 下一篇:
中国体彩网唯一官网