目录
redis指令不区分大小写。
1、列表操作
提前说明:关于列表的操作,如果涉及指定下标索引值的参数,非负数表示从左边开始数,负数表示从右边开始数。
LPUSH key val0 val1 val2 .... //如果列表key没有,就会自动创建,从列表的左边依次加入列表
RPUSH key val0 val1 val2 .... //从列表右边依次加入列表
LPUSHX key value //向左边列表头插入一个元素,仅仅只能一个元素,如果列表不存在,则什么都不做,返回0,否则插入元素
RPUSHX key value //向右边列表头插入一个元素
LPOP key //获取列表最左边的头元素并将其移除列表
RPOP key //获取列表最右边的头元素并将其移除列表
LLEN key //查看列表的长度
LRANGE key start stop //获取列表中 [start, stop] 区间的元素,闭区间。 列表从左边数,下标以0开始,从右边数,下标以 -1 开始,正数代表从左边数,负数代表从右边数,比如 0 代表左边第一个元素, -1代表右边第一个元素。
1、如果 start 和 stop 都是非负数。
如果 start <= stop ,则从左边数,获取[start, stop] 区间的元素。
如果 start > stop,则返回空。
2、如果 start 和 stop 都是负数。
如果 start <= stop,则从右边数,获取区间元素,比如 LRANGE key -1 -2 表示获取从右边数的第一个和第二个元素。
如果 start > stop, 则返回空。
3、如果 start 和 stop 一正一负。
则看start 的实际位置是否在 stop 的实际位置之前,如果是则返回区间元素, 如果不是,返回空。
LREM key count value //表示删除列表前 count 个元素中值为 value 的元素。
1、count > 0 表示从左边数, 2、count < 0 表示从右边数, 3、count = 0 表示列表的全部元素。
BLPOP key1 key2 ... timeout //阻塞获取第一个不为空的列表的最左元素,并将该元素移除,如果全为空,则阻塞,直到某个列表有新元素加入,或者直到 timeout 超时时间结束。
1、timeout = 0 时,表示无限阻塞下去,除非某个列表不为空。
2、timeout > 0 时,表示超时时间也可以解除阻塞状态,并返回空给客户端。
BRPOP key1 key2 ... timeout //阻塞获取第一个不为空的列表的最右元素,和 BLPOP 功能类似。
BRPOPLPUSH sourcekey destinationkey timeout // 阻塞获取 sourcekey 列表的最右边的元素,timeout 为超时时间,如果能够在超时时间内获取到元素,则将该元素返回给客户端,并将其添加到 destinationkey 列表的最左边,如果从 sourcekey 列表中获取不到元素,则返回给客户端空,并且不做任何其它操作。
RPOPLPUSH sourcekey destinationkey //非阻塞方式获取 sourcekey 列表的最右边的元素,将该元素返回给客户端,并将其添加到 destinationkey 列表的最左边,如果从 sourcekey 列表中获取不到元素,则返回给客户端空,并且不做任何其它操作。
LINDEX key index //获取下标为 index 的元素。如果 index 超出范围,则返回空,如果 index 为非负数,则从左边数,否则从右边数。
LINSERT key BEFORE|AFTER pivot value // 将 value 插入 pivot 之前或者之后,如果 key 为空或者不存在,则什么都不做,返回0,如果 key 存在且不为空,pivot 存在,则返回插入后列表长度,如果 pivot 不存在,则什么都不做,返回 -1。
LSET key index value //将列表的 index 位置处设置为 value 值,成功返回OK,如果 index 超出范围或者列表不存在,则返回错误信息。
LTRIM key start stop // 将列表的 [start, stop] 区间保留下来,其它的元素删除,成功返回ok。
2、哈希类型(散列类型)
HSET key field value //设置哈希对象中的 field 字段值为 value,如果字段 filed 不存在,则就添加,如果字段 field 存在,则更新
HGET key field //获取哈希对象中的 field 字段值,没有该字段,则返回空。
HMSET key field1 value1 field2 value2 .... //一次设置多个<字段名, 字段值>。
HMGET key field1 field2 ... // 一次获取多个字段的值。
HGETALL key //获取这个哈希对象的所有<字段名, 字段值>。
HEXISTS key field //判断哈希对象的该字段是否存在,如果存在,返回1,否则其它情况一律返回0。
HDEL key field1 field2 .... // 删除哈希对象的相关<字段名, 字段值>。
HINCRBY key field increment //为哈希表 key 中的域 field 的值加上增量 increment 。增量也可以为负数,相当于对给定域进行减法操作。如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY命令。如果域 field 不存在,那么在执行命令前,域的值被初始化为 0 。对一个储存字符串值的域 field 执行 HINCRBY 命令将造成一个错误。
HINCRBYFLOAT key field increment //为哈希表 key 中的域 field 的值加上浮点数增量 increment 。
HKEYS key //获取这个哈希对象的所有字段名 field。
HLEN key //获取这个哈希对象的所有字段数量。
HSETNX key field value //若 field 已经存在,则什么都不做,如果不存在,则添加<字段,字段值>。
HVALS key //获取这个哈希对象的所有字段的值。
HSCAN key cursor [MATCH pattern] [COUNT count] //遍历哈希对象的字段,可以设置从什么位置开始遍历,设置正则匹配,每次遍历的元素个数。和 SCAN 命令是一个意思,只是 HSCAN 命令只是针对一个哈希对象遍历的。
3、集合类型
SADD key value1 value2 ... // 向集合中添加若干个元素,如果元素已经存在,则忽略,返回实际添加成功的元素个数。
SREM key value1 value2 .... // 删除集合中的元素,如果元素不存在,则忽略,返回实际删除成功的元素个数。
SCARD key //返回集合中的元素个数。
SDIFF key 或者 SDIFF key1 key2 ... // 如果只有一个聚合,就返回集合中的全部元素,如果是多个集合,那就是返回第一个集合中与其它所有集合都不同的元素(即 第一个集合与所有集合的差集)。
SDIFFSTORE destination key key2 ... // 作用和 SDIFF 一样,只是将差集存储到 destination 集合中去。
SINTER key1 key2 ... // 返回这些集合的交集,如果其中有空集(不存在的集合被视为空集),那么结果也为空集。
SINTERSTORE destination key key2 .. //将集合的交集存到 destination 集合中。
SISMENBER key value //判断 value 是否是集合的元素,是,返回1,不是,返回-1。
SMEMBERS key // 返回集合中的所有元素。
SMOVE source destination member // 将集合的一个元素移到另一个集合中去。
SPOP key // 从集合中返回一个随机元素,并从集合中移除。
SRANDMEMBER key // 从集合中返回一个随机元素,不从集合中移除。
SREM member1 member2 ... // 删除集合中的若干个元素。
SUNION key1 key2 ... // 返回若干个集合的并集。
SUNIONSTORE destination key1 key2 ... // 将若干个集合的并集存入另一个集合 destination。
SSCAN key cursor [MATCH pattern] [COUNT count] // 扫描,和scan一样,只是扫描的对象是集合而已。
4、有序集合类型
ZADD key score member score1 member1 score2 member2 ... //添加若干个元素,每个元素都有分值。
ZCARD key //返回集合的元素个数。
ZCOUNT key min max // 返回集合中分值在 [min, max] 区间的元素个数。
ZINCRBY key increment member //在集合里的元素 member 的分值上加 increment 。
ZRANGE key start stop [WITHSCORES] // 返回集合中下标 [start, stop] 区间的元素(不包含分值),如果带上 WITHSCORES 参数就会将分值一起返回。
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] //返回分值在 [min, max] 区间的元素,WITHSCORES 参数就会将分值一起返回,LIMIT offset count 的意思是在 [min, max] 区间的元素里面,从第 offset 个元素开始,只获取 count 个元素,然后返回这 count 个元素。
ZRANK key member // 查看元素 member 在集合中按分值排名第几,0表示第一。
ZREM key member [member ...] // 删除集合中的指定元素。
ZREMRANGEBYRANK key start stop // 删除集合中按分值排名在 [start, stop] 区间的元素。
ZREMRANGEBYSCORE key min max // 删除集合中分值在 [min, max] 区间的元素。
ZREVRANGE key start stop [WITHSCORES] // 返回集合中排名在 [start, stop] 区间的元素的逆序列。
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] //返回集合中分值在 [min, max] 区间的元素的逆序列。
ZREVRANK key member // 返回 member 在集合中按照分值逆序排名中的名次,0 表示倒数第一。
ZSCORE key member //返回集合中member元素的分值
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] //将 numkeys 数量的有序集合做并集,并且将并集存入集合 destination 中, WEIGHTS 参数是可选的,表示每个集合对应的乘法因子,每个集合的每个元素的分值都要乘上对应的 weight ,默认 weight 为 1 , AGGREGATE 也是可选的,指定聚合方式,默认是 SUM 方式,表示元素的并集,分值相加, MIN 表示取分值最小的, MAX 表示取分值最大的。
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] // 交集,和 ZUNIONSTORE 指令类似。
ZSCAN key cursor [MATCH pattern] [COUNT count] // 扫描,和 scan 一样,针对的目标是有序集合。
5、对 key 的操作
DEL key key2 ... // 删除若干个key,key 可以是字符串,也可以是集合,列表,哈希,等等,只不过时间复杂度不一样,删除列表的话,就会一一删除掉列表里的每个元素,复杂符为 O(N)。 返回删除的键的数量。
EXISTS key // 检查 key 是否存在,存在返回1,否则返回 0。
EXPIRE key seconds // 设置 key 的生命周期,单位为秒。默认为永久的
PEXPIRE key milliseconds // 设置 key 的生命周期,单位为毫秒。默认为永久的
EXPIREAT key timestamp // 设置 key 的生命结束时刻,Timestamp 为 UNIX 时间戳。
KEYS pattern //全库扫描匹配,pattern就是一个规则参数。
MIGRATE host port key destination-db timeout [COPY] [REPLACE] // 将本 redis 实例上的 key 和 value 传递到另一个redis 实例上(host 主机名,port 端口, destination-db 数据库号,timeout 为两个 redis 实例通信的最大时间间隔),并将 key 从本实例上删除, 如果有 COPY,表示只是复制一份过去,并不会从本实例上删除,如果有 REPLACE,表示如果目的redis 实例上已经存在该 key 了,则替换掉它。
MOVE key db // 将 key 移动到指定数据库里去。
PERSIST key // 设置 key 为永久不过期的。
TTL key // 返回 key 的剩余生命时间,单位为秒,-2 表示 key 不存在,-1 表示永久。
PTTL key // 返回 key 的剩余生命时间,单位为毫秒,-2 表示 key 不存在,-1 表示永久。
RANDOMKEY //随机返回一个key
RENAME oldKey newKey // 给 key 改名字,如果新旧名字一样,或者旧名字不存在, 返回错误,如果新名字已经存在,则覆盖掉已经存在的<k, v>。
RENAMENX oldKey newKey // 仅当新名字不存在时,才会进行名字修改。
TYPE key // 返回 key 的类型。
SCAN cursor [MATCH pattern] [COUNT count] // 扫描匹配。
6、字符串类型
APPEND key value // 将 value 追加到 key 的值后。
SET key value [EX seconds] [PX milliseconds] [NX | XX] // 设置<key, value> ,EX 选项表示过期时间,单位秒,PX 表示过期时间,单位毫秒,NX 选项表示 key 不存在时才执行,XX 选项表示 key 存在时才执行。 如果 set key value 中 value 是新值要覆盖旧值,且如果没有指定过期时间的话,即为永久,过期时间也会覆盖。
GET key // 返回 key 的 value。
STRLEN key // 返回 key 对应的字符串长度。
SETRANGE key offset value // 用 value 参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始。如果 offset 超出了范围,则原字符串和 offset 之间的空白将由 "\x00" 填充。
SETBIT key offset value // (以 ascll 码为准)将字符串的 offset 位设置为 value,偏移量从 0 开始,value 只能是 1 或者 0。
GETBIT key offset // 返回字符串的 offset 位上的比特值。
MSETNX key value key1 value1 .... // 当所有的 key 都不存在时,才会执行指令。
MSET key value key1 value1 ... // 设置多个<k, v> 。
MGET key key2 ... // 获取多个 key 的 value,如果 key 不存在,则 value 为空。
INCRBYFLOAT key increment // 给 key 的 value 值加上浮点数 increment,increment 既可以是浮点数,也可以是整数,最多只能表示小数点的后十七位。
INCRBY key increment // 给 key 的 value 值加上 increment,increment 只能是整数。
INCR key // 自增1。
GETSET key value // 设置 key 的值为 value, 并且返回 key 的旧值。
GETRANGE key start stop // 返回 key 的值的 [start,stop] 区间的子串。
DECRBY key decrement // 将 key 的 value 值减去 decrement, decrement 只能是整数。
DECR key // 自减 1 。
BITCOUNT key [start] [end] // 统计 key 的 value 值里有多少个为 1 的比特位。
BITOP operation destkey key [key ...] // 对若干个 key 的 value 值进行按位逻辑运算,有 AND 、 OR 、 NOT 、 XOR。