Redis命令整理(String,List)

String

SET

  • SET key value [EX seconds][PX milliseconds] [NX|XX]

  • 可选参数

    1. EX seconds: 设置过期时间,单位为秒,原子操作.SET key value EX second 效果等同于 SETEX key second value
    2. PX milliseconds:设置过期时间,单位为毫秒,原子操作 SET key value PX millisecond 效果等同于 PSETEX keymillisecond value
    3. NX:只有键不存在时,才会操作.SET key value NX 效果等同于 SETNX key value
    4. XX:只在键已经存在时,才对键进行设置操作

GET

  • 返回 key 所关联的字符串值。
  • 如果 key 不存在那么返回特殊值 nil
  • 假如 key 储存的值不是字符串类型,返回一个错误,因为 GET 只能用于处理字符串值。

GETBIT

  • GETBIT key offset
  • key 所储存的字符串值,获取指定偏移量上的位(bit)
  • offset 比字符串值的长度大,或者 key 不存在时,返回 0

GETSET

  • GETSET key value
  • 将给定 key 的值设为 value ,并返回 key 的旧值(old value)
  • key 存在但不是字符串类型时,返回一个错误

APPEND

  • APPEND key value
  • 如果key存在并且是一个字符串,则将value追加到key原来的值的末尾
  • 如果key不存在,就像执行set key value的操作一样

GETRANGE

  • GETRANGE key start end
  • 返回 key 中字符串值的子字符串,字符串的截取范围由 startend 两个偏移量决定(包括 startend 在内)

INCR,INCRBY,INCRBYFLOAT

  • INCR key:递增加1
  • INCRBY key increment:+increment
  • INCRBYFLOAT key increment: +increment
  • key不存在,先将key的值设为0,再做操作

DECR,DECRBY

  • 同上,递减操作

MSGET

  • MGET key [key ...]
  • 返回所有(一个或多个)给定 key 的值
  • 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。因此,该命令永不失败

MSSET

  • MSET key value [key value ...]
  • 同时设置一个或多个 key-value
  • 如果某个给定 key 已经存在,那么 [MSET] 会用新值覆盖原来的旧值
  • 是一个原子性(atomic)操作,所有给定 key 都会在同一时间内被设置,某些给定 key 被更新而另一些给定 key 没有改变的情况,不可能发生

MSSETNX

  • MSETNX key value [key value ...]
  • 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在
  • 即使只有一个给定 key 已存在,也不会执行此操作
  • 原子性操作,要么所有字段全部设置成功,要么全部失败

STRLEN

  • STRLEN key
  • 返回 key 所储存的字符串值的长度
  • key 储存的不是字符串值时,返回一个错误

List

BLPOP,BRPOP

  • BLPOP key [key ...] timeout,BRPOP key [key ...] timeout
  • 按给定 key 参数排列的先后顺序,依次检查各个列表,如果列表都为空,则阻塞链接,直到可以获取到元素
  • timeout 接受一个以秒为单位的数字作为值。超时参数设为 0 表示阻塞时间可以无限期延长
  • 阻塞版弹出元素,BLPOP弹出第一个非空列表的头部元素,BRPOP弹出第一个非空列表的尾部元素
  • 返回弹出元素的key,value

LPOP,RPOP

  • LPOP key,RPOP key
  • 移除并返回列表key的头元素,移除并返回列表key的尾部元素
  • key 不存在时,返回 nil

BRPOPLPUSH,RPOPLPUSH

  • BRPOPLPUSH source destination timeout,RPOPLPUSH source destination timeout
  • 给定列表 source 不为空时,两者表现一致
  • 列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端
  • source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素
  • source为空时,BRPOPLPUSH命令将阻塞连接,直到等待超时,或有另一个客户端对 source 执行 LPUSH 或 RPUSH命令为止
  • timeout 接受一个以秒为单位的数字作为值。超时参数设为 0 表示阻塞时间可以无限期延长
  • 如果 sourcedestination 相同,则列表中的表尾元素被移动到表头,并返回该元素,可以把这种特殊情况视作列表的旋转(rotation)操作

LINDEX

  • LINDEX key index
  • 按照下标获取列表中key的值
  • 如果 key 不是列表类型,返回一个错误

LINSERT

  • LINSERT key BEFORE|AFTER pivot value
  • 将值value,插入到值pivot的之前或之后
  • pivot 不存在于列表 key 时,不执行任何操作
  • key 不存在时, key 被视为空列表,不执行任何操作

LLEN

  • LLEN key
  • 返回列表的长度
  • 如果 key 不存在,返回0

LPUSH,LPUSHX

  • LPUSH key value[value...],LPUSHX key value
  • LPUSH可以插入多个值到列表头部,原子性操作,如果key不存在,则创建key,在执行插入操作
  • LPUSHX插入一个值到列表头部,如果key不存在,则不做操作

RPUSH,RPUSHX

  • RPUSH key value[value...],RPUSHX key value
  • RPUSH可以插入多个值到列表尾部,原子性操作,如果key不存在,则创建key,在执行插入操作
  • RPUSHX插入一个值到列表尾部,如果key不存在,则不做操作

LRANGE

  • LRANGE key start end
  • 获取列表的范围内的值,包含start和end
  • 超出范围的下标值不会引起错误
  • 如果start比最大的下标还大,则返回一个空列表
  • 如果end比最大下标还大,则以最大小标为结束

LTRIM

  • LTRIM key start end
  • 保留startend之间的元素,包含start,end,删除其余元素
  • 如果start比最大的下标还大,则返回一个空列表
  • 如果end比最大下标还大,则以最大小标为结束

LREM

  • LREM key count value
  • count > 0,从头开始搜索,移除与value相等的元素,数量为count的值
  • count < 0,从尾部向头开始搜索,移除与value相等的元素,数量为count的绝对值
  • count = 0,移除所有鱼value相等的元素

LSET

  • LSET key index value
  • 将下标为index的值设置为value
  • index 参数超出范围,或对一个空列表( key 不存在)LSET时,则返回一个错误