Redis字符串详解

Redis字符串详解

Redis中的字符串有三种编码: rawembstr int

embstr:短字符串和浮点数,int是整数字符串,raw是可变且任意长度字符串

通过OBJECT ENCODING <key>即可查看字符串编码

命令详解

  • SET:设置一个字符串,SET <key> <value> [EX 过期时间(s)] [PX 过期时间(ms)] [NX(不存在时设置)|XX(存在时设置)]EXPX不能同时设置

    SET a abc			// 不设置过期时间和条件
    SET a abc EX 5		// 5秒钟过期
    SET a abc PX 5000	// 5000毫秒过期
    SET a abc NX		// 不存在时设置
    SET a abc XX		// 存在时设置
    
  • SETNX:当key不存在时设置,SET <key> <value>,相当于SET <key> <value> NX

  • SETEX:设置key过期时间并设置新值,SETEX <key> <过期时间(s)> <value>,相当于SET <key> <value> <EX 过期时间(s)>

  • PSETEX:命令和SETEX一样,只不过时间单位是毫秒

  • GET:获取字符串值,GET <key>

    SET a abc
    GET a	// abc
    
  • GETSET:获取并设置新值,GETSET <key> <value>

    SET a abc
    GETSET a def	// abc
    GET a			// def
    
  • STRLEN:获取字符串长度,STRLEN <key>

    SET a abc
    STRLEN a	// 3
    
  • APPEND:添加字符串到当前key指向的字符串末尾,APPEND <key> <value>

    SET a abc
    APPEND a " edf"
    GET a	// abc edf
    
  • SETRANGE:从指定位置开始修改原来字符串的值,字符串下标从0开始,SETRANGE <key> <offset> <replaceValue>

    SET a abc
    SETRANGE a 0 00
    GET a	// 00c
    
  • GETRANGE:返回指定范围的字符串,-1代表字符串最后位置,GETRANGE <key> <start> <end>

    SET a abc
    GETRANGE a 0 -1	// abc
    
  • INCR:让int编码字符串自增1,INCR <key>

    SET a 1
    INCR a
    GET a	// 2
    
  • INCRBY:让int编码字符串加上指定数值,INCRBY <key> <addValue>

    SET a 1
    INCRBY a 2
    GET a	// 3
    
  • INCRBYFLOAT:让浮点数加上指定数值,如果对int编码使用,会被转换成embstr编码,INCRBYFLOAT <key> <addValue>

    SET a 1
    OBJECT ENCODING a	// int 
    INCRBYFLOAT a 3.8
    OBJECT ENCODING a	// embstr
    GET a	// 4.8
    
  • DECR:int编码字符串自减,DECR <key>

    SET a 2
    DECR a
    GET a	// 1
    
  • DECRBY:int编码减去指定值,和INCRBY用法一样

  • MSET:一次性设置多个字符串,MSET <key> <value> [key value ..]

    MSET a a1 b b1 c c1
    
  • MGET:一次性获取多个字符串,MGET <key> [key ..]

    MGET a b c	// a1 b1 c1
    
  • MSETNX:设置多个字符串,如果有一个key已存在,则拒绝设置所有字符串,MSETNX <key> <value> [key value ..]

    SET a a1
    MSETNX b b1 c c1		// ok
    KEYS *					// a b c
    
    DEL b c
    MSETNX a a1 b b1 c c1	// fail
    KEYS *					// a
    

embstr、int、raw的转换机制

  • APPEND命令会把int和embstr编码转成raw
  • embstr编码的字符串在长度大于44时会被转换成raw编码
  • INCRBYFLOAT命令会将整数类型转成浮点型(embstr编码)

猜你喜欢

转载自www.cnblogs.com/dagger9527/p/12980205.html
今日推荐