Redis SET命令用于设置给定key的值。如果key已经存储其他值,SET就覆写旧值,且无视类型。
redis 127.0.0.1:6379> SET KEY_NAME VALUE在 Redis 2.6.12以前版本, SET命令总是返回OK。从Redis 2.6.12版本开始,SET在设置操作成功完成时,才返回OK 。
实例:
# 对不存在的键进行设置 redis 127.0.0.1:6379> SET key "value" OK redis 127.0.0.1:6379> GET key "value" # 对已存在的键进行设置 redis 127.0.0.1:6379> SET key "new-value" OK redis 127.0.0.1:6379> GET key "new-value"Redis Get命令用于获取指定key的值。如果key不存在,返回nil。如果key储存的值不是字符串类型,返回一个错误。
redis 127.0.0.1:6379> GET KEY_NAME返回值:返回key的值,如果key不存在时,返回nil。 如果key不是字符串类型,那么返回一个错误。
实例:
# 对不存在的 key 或字符串类型 key 进行 GET redis> GET db (nil) redis> SET db redis OK redis> GET db "redis" # 对不是字符串类型的 key 进行 GET redis> DEL db (integer) 1 redis> LPUSH db redis mongodb mysql (integer) 3 redis> GET db (error) ERR Operation against a key holding the wrong kind of valueRedis Getrange命令用于获取存储在指定key中字符串的子字符串。字符串的截取范围由start和end 两个偏移量决定(包括start和end在内)。
redis 127.0.0.1:6379> GETRANGE KEY_NAME start end返回值:截取得到的子字符串。
实例:
redis 127.0.0.1:6379> SET mykey "This is my test key" OK redis 127.0.0.1:6379> GETRANGE mykey 0 3 "This" redis 127.0.0.1:6379> GETRANGE mykey 0 -1 "This is my test key"Redis Setrange命令用指定的字符串覆盖给定key所储存的字符串值,覆盖的位置从偏移量 offset 开始。
redis 127.0.0.1:6379> SETRANGE KEY_NAME OFFSET VALUE返回值:被修改后的字符串长度。
实例:
redis 127.0.0.1:6379> SET key1 "Hello World" OK redis 127.0.0.1:6379> SETRANGE key1 6 "Redis" (integer) 11 redis 127.0.0.1:6379> GET key1 "Hello Redis"Redis Getset命令用于设置指定key的值,并返回key的旧值。
redis 127.0.0.1:6379> GETSET KEY_NAME VALUE返回值:返回给定key的旧值。当key没有旧值时,即key不存在时,返回nil。当key存在但不是字符串类型时,返回一个错误。
实例:
redis> GETSET db mongodb # 没有旧值,返回 nil (nil) redis> GET db "mongodb" redis> GETSET db redis # 返回旧值 mongodb "mongodb" redis> GET db "redis"Redis Getbit命令用于对key所储存的字符串值,获取指定偏移量上的位(bit)。
redis 127.0.0.1:6379> GETBIT KEY_NAME OFFSET返回值:字符串值指定偏移量上的位(bit)。当偏移量OFFSET比字符串值的长度大,或者key不存在时,返回0 。
实例:
# 对不存在的 key 或者不存在的 offset 进行 GETBIT, 返回 0 redis> EXISTS bit (integer) 0 redis> GETBIT bit 10086 (integer) 0 # 对已存在的 offset 进行 GETBIT redis> SETBIT bit 10086 1 (integer) 0 redis> GETBIT bit 10086 (integer) 1Redis Setbit命令用于对key所储存的字符串值,设置或清除指定偏移量上的位(bit)。
redis 127.0.0.1:6379> Setbit KEY_NAME OFFSET返回值:指定偏移量原来储存的位。
实例:
redis> SETBIT bit 10086 1 (integer) 0 redis> GETBIT bit 10086 (integer) 1 redis> GETBIT bit 100 # bit 默认被初始化为 0 (integer) 0Redis Setex命令为指定的key设置值及其过期时间。如果key已经存在,SETEX命令将会替换旧的值。
redis 127.0.0.1:6379> SETEX KEY_NAME TIMEOUT VALUE返回值:设置成功时返回OK。
实例:
redis 127.0.0.1:6379> SETEX mykey 60 redis OK redis 127.0.0.1:6379> TTL mykey 60 redis 127.0.0.1:6379> GET mykey "redisRedis Setnx(SET if Not eXists)命令在指定的key不存在时,为key设置指定的值。
redis 127.0.0.1:6379> SETNX KEY_NAME VALUE返回值:设置成功,返回1 。 设置失败,返回0。
实例:
redis> EXISTS job # job 不存在 (integer) 0 redis> SETNX job "programmer" # job 设置成功 (integer) 1 redis> SETNX job "code-farmer" # 尝试覆盖 job ,失败 (integer) 0 redis> GET job # 没有被覆盖 "programmer"Redis Strlen命令用于获取指定key所储存的字符串值的长度。当key储存的不是字符串值时,返回一个错误。
redis 127.0.0.1:6379> STRLEN KEY_NAME返回值:字符串值的长度。 当key不存在时,返回0。
实例:
# 获取字符串的长度 redis> SET mykey "Hello world" OK redis> STRLEN mykey (integer) 11 # 不存在的 key 长度为 0 redis> STRLEN nonexisting (integer) 0Redis Incr命令将key中储存的数字值增一。如果key不存在,那么key的值会先被初始化为0 ,然后再执行INCR操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。本操作的值限制在64位(bit)有符号数字表示之内。
redis 127.0.0.1:6379> INCR KEY_NAME返回值:执行INCR命令之后key的值。
实例:
redis> SET page_view 20 OK redis> INCR page_view (integer) 21 redis> GET page_view # 数字值在 Redis 中以字符串的形式保存 "21"Redis Incrby命令将key中储存的数字加上指定的增量值。如果key不存在,那么key的值会先被初始化为0,然后再执行INCRBY命令。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。本操作的值限制在64位(bit)有符号数字表示之内。
redis 127.0.0.1:6379> INCRBY KEY_NAME INCR_AMOUNT返回值 加上指定的增量值之后,key的值。
实例:
# key 存在且是数字值 redis> SET rank 50 OK redis> INCRBY rank 20 (integer) 70 redis> GET rank "70" # key 不存在时 redis> EXISTS counter (integer) 0 redis> INCRBY counter 30 (integer) 30 redis> GET counter "30" # key 不是数字值时 redis> SET book "long long ago..." OK redis> INCRBY book 200 (error) ERR value is not an integer or out of rangeRedis Incrbyfloat命令为key中所储存的值加上指定的浮点数增量值。如果key不存在,那么INCRBYFLOAT会先将key的值设为0,再执行加法操作。
redis 127.0.0.1:6379> INCRBYFLOAT KEY_NAME INCR_AMOUNT返回值:执行命令之后key的值。
实例:
# 值和增量都不是指数符号 redis> SET mykey 10.50 OK redis> INCRBYFLOAT mykey 0.1 "10.6" # 值和增量都是指数符号 redis> SET mykey 314e-2 OK redis> GET mykey # 用 SET 设置的值可以是指数符号 "314e-2" redis> INCRBYFLOAT mykey 0 # 但执行 INCRBYFLOAT 之后格式会被改成非指数符号 "3.14" # 可以对整数类型执行 redis> SET mykey 3 OK redis> INCRBYFLOAT mykey 1.1 "4.1" # 后跟的 0 会被移除 redis> SET mykey 3.0 OK redis> GET mykey # SET 设置的值小数部分可以是 0 "3.0" redis> INCRBYFLOAT mykey 1.000000000000000000000 # 但 INCRBYFLOAT 会将无用的 0 忽略掉,有需要的话,将浮点变为整数 "4" redis> GET mykey "4"Redis Decr命令将key中储存的数字值减一。如果key不存在,那么key的值会先被初始化为0,然后再执行DECR操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。本操作的值限制在 64 位(bit)有符号数字表示之内。
redis 127.0.0.1:6379> DECR KEY_NAME返回值:执行命令之后key的值。
实例:
# 对存在的数字值 key 进行 DECR redis> SET failure_times 10 OK redis> DECR failure_times (integer) 9 # 对不存在的 key 值进行 DECR redis> EXISTS count (integer) 0 redis> DECR count (integer) -1 # 对存在但不是数值的 key 进行 DECR redis> SET company YOUR_CODE_SUCKS.LLC OK redis> DECR company (error) ERR value is not an integer or out of rangeRedis Decrby命令将key所储存的值减去指定的减量值。如果key不存在,那么key的值会先被初始化为0,然后再执行DECRBY操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。本操作的值限制在64位(bit)有符号数字表示之内。
redis 127.0.0.1:6379> DECRBY KEY_NAME DECREMENT_AMOUNT返回值:减去指定减量值之后,key的值。
实例:
# 对已存在的 key 进行 DECRBY redis> SET count 100 OK redis> DECRBY count 20 (integer) 80 # 对不存在的 key 进行DECRBY redis> EXISTS pages (integer) 0 redis> DECRBY pages 10 (integer) -10Redis Append命令用于为指定的key追加值。如果key已经存在并且是一个字符串,APPEND命令将value追加到key原来的值的末尾。如果key不存在,APPEND就简单地将给定key设为value,就像执行SETkeyvalue一样
redis 127.0.0.1:6379> APPEND KEY_NAME NEW_VALUE返回值:追加指定值之后,key中字符串的长度。
实例:
# 对不存在的 key 执行 APPEND redis> EXISTS myphone # 确保 myphone 不存在 (integer) 0 redis> APPEND myphone "nokia" # 对不存在的 key 进行 APPEND ,等同于 SET myphone "nokia" (integer) 5 # 字符长度 # 对已存在的字符串进行 APPEND redis> APPEND myphone " - 1110" # 长度从 5 个字符增加到 12 个字符 (integer) 12 redis> GET myphone "nokia - 1110"Redis Mget命令返回所有(一个或多个)给定key的值。如果给定的key里面,有某个key不存在,那么这个key返回特殊值nil。
redis 127.0.0.1:6379> MGET KEY1 KEY2 .. KEYN返回值:一个包含所有给定key的值的列表。
实例:
redis 127.0.0.1:6379> SET key1 "hello" OK redis 127.0.0.1:6379> SET key2 "world" OK redis 127.0.0.1:6379> MGET key1 key2 someOtherKey 1) "Hello" 2) "World" 3) (nil)Redis Mset命令用于同时设置一个或多个key-value对。
redis 127.0.0.1:6379> MSET key1 value1 key2 value2 .. keyN valueN返回值:总是返回OK。
实例:
redis 127.0.0.1:6379> MSET key1 "Hello" key2 "World" OK redis 127.0.0.1:6379> GET key1 "Hello" redis 127.0.0.1:6379> GET key2 1) "World"Redis Msetnx命令用于所有给定key都不存在时,同时设置一个或多个key-value对。
redis 127.0.0.1:6379> MSETNX key1 value1 key2 value2 .. keyN valueN返回值:当所有key都成功设置,返回1。 如果所有给定key都设置失败(至少有一个key已经存在),那么返回0。
实例:
# 对不存在的 key 进行 MSETNX redis> MSETNX rmdbs "MySQL" nosql "MongoDB" key-value-store "redis" (integer) 1 redis> MGET rmdbs nosql key-value-store 1) "MySQL" 2) "MongoDB" 3) "redis" # MSET 的给定 key 当中有已存在的 key redis> MSETNX rmdbs "Sqlite" language "python" # rmdbs 键已经存在,操作失败 (integer) 0 redis> EXISTS language # 因为 MSET 是原子性操作,language 没有被设置 (integer) 0 redis> GET rmdbs # rmdbs 也没有被修改 "MySQL"