Redis---B站学习---redis数据类型String

Redis—B站学习—redis数据类型String

Redis字符串(String)

  1. 单值单value
  2. 常用
    1. set
    2. get
    3. del:删除给定的一个或多个 key 。不存在的 key 会被忽略。返回被删除key的个数
      #  删除单个 key
      
      redis> SET name huangz
      OK
      
      redis> DEL name
      (integer) 1
      
      
      # 删除一个不存在的 key
      
      redis> EXISTS phone
      (integer) 0
      
      redis> DEL phone # 失败,没有 key 被删除
      (integer) 0
      
      
      # 同时删除多个 key
      
      redis> SET name "redis"
      OK
      
      redis> SET type "key-value store"
      OK
      
      redis> SET website "redis.com"
      OK
      
      redis> DEL name type website
      (integer) 3
      
    4. strlen key:返回key对应value字符串的长度
    5. append key: 返回追加key对应的value的长度
    6. Incr,一定要是数字才能进行加减:为键 key 储存的数字值加上一。
      redis> SET page_view 20
      OK
      
      redis> INCR page_view
      (integer) 21
      
      redis> GET page_view    # 数字值在 Redis 中以字符串的形式保存
      "21"
      
    7. decr,一定要是数字才能进行加减:为键 key 储存的数字值减去一。
      redis> SET failure_times 10
      OK
      
      redis> DECR failure_times
      (integer) 9
      
    8. incrby,一定要是数字才能进行加减:为键 key 储存的数字值加上增量 increment 。
      redis> SET rank 50
      OK
      
      redis> INCRBY rank 20
      (integer) 70
      
      redis> GET rank
      "70"
      
    9. decrby,一定要是数字才能进行加减:将键 key 储存的整数值减去减量 decrement 。
      redis> SET count 100
      OK
      
      redis> DECRBY count 20
      (integer) 80
      
    10. getrange/setrange
      1. getrange:返回键 key 储存的字符串值的指定部分, 字符串的截取范围由 start 和 end 两个偏移量决定 (包括 start 和 end 在内)。获取指定区间范围内的值,类似between…and的关系从零到负一表示全部
        redis> SET greeting "hello, my friend"
        OK
        
        redis> GETRANGE greeting 0 4          # 返回索引0-4的字符,包括4"hello"
        
        redis> GETRANGE greeting -1 -5        # 不支持回绕操作
        ""
        
        redis> GETRANGE greeting -3 -1        # 负数索引
        "end"
        
        redis> GETRANGE greeting 0 -1         # 从第一个到最后一个
        "hello, my friend"
        
        redis> GETRANGE greeting 0 1008611    # 值域范围不超过实际字符串,超过部分自动被符略
        "hello, my friend"
        
      2. setrange:从偏移量 offset 开始, 用 value 参数覆写(overwrite)键 key 储存的字符串值。设置指定区间范围内的值,格式是setrange key值 具体值
        对非空字符串执行 SETRANGE 命令:
        redis> SET greeting "hello world"
        OK
        
        redis> SETRANGE greeting 6 "Redis"
        (integer) 11
        
        redis> GET greeting
        "hello Redis"
        
        对空字符串/不存在的键执行 SETRANGE 命令:
        redis> EXISTS empty_string
        (integer) 0
        
        redis> SETRANGE empty_string 5 "Redis!"   # 对不存在的 key 使用 SETRANGE
        (integer) 11
        
        redis> GET empty_string                   # 空白处被"\x00"填充
        "\x00\x00\x00\x00\x00Redis!"
        
    11. setex(set with expire)键秒值/setnx(set if not exist)
      1. setex: 设置带过期时间的key,动态设置。setex 键 秒值 真实值。将键 key 的值设置为 value , 并将键 key 的生存时间设置为 seconds 秒钟。
        在键 key 不存在的情况下执行 SETEX :
        redis> SETEX cache_user_id 60 10086
        OK
        
        redis> GET cache_user_id  # 值
        "10086"
        
        redis> TTL cache_user_id  # 剩余生存时间
        (integer) 49
        
        键 key 已经存在, 使用 SETEX 覆盖旧值:
        redis> SET cd "timeless"
        OK
        
        redis> SETEX cd 3000 "goodbye my love"
        OK
        
        redis> GET cd
        "goodbye my love"
        
        redis> TTL cd
        (integer) 2997
        
      2. setnx: 只有在 key 不存在时设置 key 的value值。
        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"
        
    12. mset/mget/msetnx
      1. mset: 同时设置一个或多个 key-value 对。
        同时对多个键进行设置:

        redis> MSET date "2012.3.30" time "11:00 a.m." weather "sunny"
        OK
        
        redis> MGET date time weather
        1) "2012.3.30"
        2) "11:00 a.m."
        3) "sunny"
        

        覆盖已有的值:

        redis> MGET k1 k2
        1) "hello"
        2) "world"
        
        redis> MSET k1 "good" k2 "bye"
        OK
        
        redis> MGET k1 k2
        1) "good"
        2) "bye"
        
      2. mget: 获取所有(一个或多个)给定 key 的值。如果给定的字符串键里面, 有某个键不存在, 那么这个键的值将以特殊值 nil 表示。

        redis> SET redis redis.com
        OK
        
        redis> SET mongodb mongodb.org
        OK
        
        redis> MGET redis mongodb
        1) "redis.com"
        2) "mongodb.org"
        
        redis> MGET redis mongodb mysql     # 不存在的 mysql 返回 nil
        1) "redis.com"
        2) "mongodb.org"
        3) (nil)
        
      3. msetnx: 同时设置一个或多个 key-value 对,当且仅当所有给定 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"
        

        对某个已经存在的键进行设置:

        redis> MSETNX rmdbs "Sqlite" language "python"  # rmdbs 键已经存在,操作失败
        (integer) 0
        
        redis> EXISTS language                          # 因为 MSETNX 命令没有成功执行
        (integer) 0                                     # 所以 language 键没有被设置
        
        redis> GET rmdbs                                # rmdbs 键也没有被修改
        "MySQL"
        
    13. getset(先get再set)
      getset: 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。简单一句话,先get然后立即set
      redis> GETSET db mongodb    # 没有旧值,返回 nil
      (nil)
      
      redis> GET db
      "mongodb"
      
      redis> GETSET db redis      # 返回旧值 mongodb
      "mongodb"
      
      redis> GET db
      "redis"
      

你可能感兴趣的:(Redis)