MGET
MGET key [key …]
返回给定的一个或多个字符串a键的值。 如果给定的字符串键里面, 有某个键不存在, 那么这个键的值为空白
例子:
127.0.0.1:6379› mget a hello测试工程师123127.0.0.1:6379› mget a hello b测试工程师123nihao127.0.0.1:6379›
MSET
MSET key value [key value …]
同时设置多个键值对。
如果某个给定键已经存在, 那么 MSET 将使用新值去覆盖旧值, 如果这不是你所希望的效果, 请考虑使用 MSETNX 命令, 这个命令只会在所有给定键都不存在的情况下进行设置。 MSET 是一个原子性(atomic)操作, 所有给定键都会在同一时间内被设置, 不会出现某些键被设置了但是另一些键没有被设置的情况。
例子:
同时对多个键进行设置:
redis› MSET date "2012.3.30" time "11:00 a.m." weather "sunny"OKredis› MGET date time weather"2012.3.30""11:00 a.m.""sunny"
覆盖已有的值:
redis› MSET k1 "hello" k2 "world"OKredis› MGET k1 k21) "hello"2) "world"redis› MSET k1 "good" k2 "bye"OKredis› MGET k1 k2"good""bye"
MSETNX
MSETNX key value [key value …]
当且仅当所有给定键都不存在时, 为所有给定键设置值。 即使只有一个给定键已经存在, MSETNX 命令也会拒绝执行对所有键的设置操作。
MSETNX 是一个原子性(atomic)操作, 所有给定键要么就全部都被设置, 要么就全部都不设置, 不可能出现第三种状态。 当所有给定键都设置成功时, 命令返回 1 ; 如果因为某个给定键已经存在而导致设置未能成功执行, 那么命令返回 0 。
例子: 对不存在的键执行 MSETNX 命令:
redis› MSETNX rmdbs "MySQL" nosql "MongoDB" key-value-store "redis"1redis› MGET rmdbs nosql key-value-store"MySQL""MongoDB""redis"
对某个已经存在的键进行设置:
redis› MSETNX rmdbs "Sqlite" language "python" # rmdbs 键已经存在,操作失败 0redis› GET language # 值为空,language 没有设置成功redis› GET rmdbs # rmdbs 键也没有被修改"MySQL"
作业
- 批量设置键值对 x 1,y 2 ,z 3
MSET x 1 y 2 z 3
- 批量查询键值对 x,y,z
MGET x y z
- 批量设置键值对 m 1,n 2, a 3, 如果其中的key已存在,则不执行
MSETNX m 1 n 2 a 3