Redis学习笔记---String类型

String是Redis最简单的数据类型, 可通过help @string查看string类型所有操作
Redis学习笔记---String类型

常用命令

  1. SET key value [EX seconds] [PX milliseconds] [NX|XX]
    将键key设定为指定的“字符串”值。
    如果 key 已经保存了一个值,那么这个操作会直接覆盖原来的值,并且忽略原始类型。
    当set命令执行成功之后,之前设置的过期时间都将失效
    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可能会不推荐使用并且最终抛弃这几个命令

  2. SETEX key seconds value
    设置key对应字符串value,并且设置key在给定的seconds时间之后超时过期

  3. SETNX key value
    将key设置值为value,如果key不存在,这种情况下等同SET命令。 当key存在时,什么也不做

  4. STRLEN key 返回key的string类型value的长度。如果key对应的非string类型,就返回错误

  5. APPEND key value
    如果 key 已经存在,并且值为字符串,那么这个命令会把 value 追加到原来值(value)的结尾。 如果 key 不存在,那么它将首先创建一个空字符串的key,再执行追加操作,这种情况 APPEND 将类似于 SET 操作。

  6. BITCOUNT key [start end]
    统计字符串被设置为1的bit数.
    一般情况下,给定的整个字符串都会被进行计数,通过指定额外的 start 或 end 参数,可以让计数只在特定的位上进行。
    start 和 end 参数的设置和 GETRANGE 命令类似,都可以使用负数值:比如 -1 表示最后一个位,而 -2 表示倒数第二个位,以此类推。
    不存在的 key 被当成是空字符串来处理,因此对一个不存在的 key 进行 BITCOUNT 操作,结果为 0 。

  7. GET key
    返回key的value。如果key不存在,返回特殊值nil。如果key的value不是string,就返回错误,因为GET只处理string类型的values

  8. DECR key
    对key对应的数字做减1操作。如果key不存在,那么在操作之前,这个key对应的值会被置为0。如果key有一个错误类型的value或者是一个不能表示成数字的字符串,就返回错误。这个操作最大支持在64位有符号的整型数字。

  9. DECRBY key decrement
    将key对应的数字减decrement。如果key不存在,操作之前,key就会被置为0。如果key的value类型错误或者是个不能表示成数字的字符串,就返回错误。这个操作最多支持64位有符号的正型数字。

  10. INCR key
    对存储在指定key的数值执行原子的加1操作。
    如果指定的key不存在,那么在执行incr操作之前,会先将它的值设定为0。
    如果指定的key中存储的值不是字符串类型(fix:)或者存储的字符串类型不能表示为一个整数,
    那么执行这个命令时服务器会返回一个错误(eq:(error) ERR value is not an integer or out of range)。
    这个操作仅限于64位的有符号整型数据。
    注意: 由于redis并没有一个明确的类型来表示整型数据,所以这个操作是一个字符串操作。
    执行这个操作的时候,key对应存储的字符串被解析为10进制的64位有符号整型数据。
    事实上,Redis 内部采用整数形式(Integer representation)来存储对应的整数值,所以对该类字符串值实际上是用整数保存,也就不存在存储整数的字符串表示(String representation)所带来的额外消耗。
    计数器、限速器很好的解决

  11. INCRBY key increment
    将key对应的数字加decrement。如果key不存在,操作之前,key就会被置为0。如果key的value类型错误或者是个不能表示成数字的字符串,就返回错误。这个操作最多支持64位有符号的正型数字。

  12. GETRANGE key start end
    这个命令是被改成GETRANGE的,在小于2.0的Redis版本中叫SUBSTR。 返回key对应的字符串value的子串,这个子串是由start和end位移决定的(两者都在string内)。可以用负的位移来表示从string尾部开始数的下标。所以-1就是最后一个字符,-2就是倒数第二个,以此类推。
    这个函数处理超出范围的请求时,都把结果限制在string内

  13. GETSET key value
    自动将key对应到value并且返回原来key对应的value。如果key存在但是对应的value不是字符串,就返回错误。

  14. MGET key [key …]
    返回所有指定的key的value。对于每个不对应string或者不存在的key,都返回特殊值nil。正因为此,这个操作从来不会失败

  15. MSET key value [key value …]
    对应给定的keys到他们相应的values上。MSET会用新的value替换已经存在的value,就像普通的SET命令一样。如果你不想覆盖已经存在的values,请参看命令MSETNX。
    MSET是原子的,所以所有给定的keys是一次性set的。客户端不可能看到这种一部分keys被更新而另外的没有改变的情况。