Skip to content

Latest commit

 

History

History
258 lines (211 loc) · 5.46 KB

数据类型.md

File metadata and controls

258 lines (211 loc) · 5.46 KB

redis常用命令参考文档

一、String(字符串)

1.1 SET

语法:

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

将字符串 value 关联到 key, 如果key已经有value, SET 命令就会覆盖旧值, 无视类型, 这个 key 的存在时间也会被覆盖

可选参数:

  • EX seconds: 将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds 的效果等同于执行 SETEX key seconds value
  • PX milliseconds: 将键的过期时间设置为 milliseconds 毫秒。 执行 SET key value PX milliseconds 的效果等同于执行 PSETEX key milliseconds value
  • NX: 只在键不存在时, 才对键进行设置操作。 执行 SET key value NX 的效果等同于执行 SETNX key value
  • XX: 只在键已经存在时, 才对键进行设置操作。

说明: 因为 SET 命令可以通过参数来实现 SETNXSETEX 以及 PSETEX 命令的效果, 所以 Redis 将来的版本可能会移除并废弃 SETNXSETEXPSETEX 这三个命令。

返回值:

在 Redis 2.6.12 版本以前, SET 命令总是返回 OK

从 Redis 2.6.12 版本开始, SET 命令只在设置操作成功完成时才返回 OK ; 如果命令使用了 NX 或者 XX 选项, 但是因为条件没达到而造成设置操作未执行, 那么命令将返回空批量回复(NULL Bulk Reply)。

代码示例:

对不存在的键进行设置:

> SET key "value"
OK
> GET key
"value"

对已存在的键进行设置:

> SET key "new value"
OK
> GET key
"new value"

使用 EX 选项:

> SET key-with-expire-time "hello" EX 10086
OK
> GET key-with-expire-time
"hello"
> TTL key-with-expire-time
(integer) 10066

使用 PX 选项:

> SET key-with-pexpire-time "moto" PX 11111
OK
> GET key-with-pexpire-time
"moto"
> PTTL key-with-pexpire-time
(integer) 121904

使用 NX 选项:

> SET not-exists-key "value" NX
OK   # key 不存在, 设置成功
> get not-exists-key
"value"
> set not-exists-key "new-value" NX
(nil)  # key 存在, 设置失败
> get not-exists-key
"value"  # value 还是原值

使用 XX 选项:

> EXISTS exists-key
(integer) 0   # key 不存在
> set exists-key "value" XX
(nil)   # key 不存在设置失败
> SET exists-key "value"
OK    
> SET exists-key "new-value" XX
OK   # key 存在, 成功
> get exists-key
"new-value"   # value 是最新的值

1.2 SETNX

语法:

只在键 key 不存在的情况下, 将键 key 的值设置为 value

若键 key 已经存在, 则 SETNX 命令不做任何动作。

SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。

返回值:

命令在设置成功时返回 1 , 设置失败时返回 0

代码示例:

> exists job
(integer) 0                   # key 不存在
> SETNX job "proprammer"
(integer) 1                   # key 不存在时, 设置成功
> SETNX job "code-farmer"
(integer) 0                   # key 已存在, 设置失败
> GET job
"proprammer"                  # value 还是原来的值

1.3 SETEX

将键 key 的值设置为 value , 并将键 key 的生存时间设置为 seconds 秒钟。

如果键 key 已经存在, 那么 SETEX 命令将覆盖已有的值。

SETEX 命令的效果和以下两个命令的效果类似:

> SET key value
> EXPIRE key seconds  # 设置生存时间

SETEX 和这两个命令的不同之处在于: SETEX 是一个原子(atomic)操作, 它可以在同一时间内完成设置值和设置过期时间这两个操作, 因此 SETEX 命令在储存缓存的时候非常实用。

返回值:

命令在设置成功时返回 OK 。 当 seconds 参数不合法时, 命令将返回一个错误。

代码示例: 在键 key 不存在的情况下执行 SETEX

> SETEX cache_user_id 60 10086
OK
> GET cache_user_id
"10086"
> TTL cache_user_id
(integer) 49

key 已经存在, 使用 SETEX 覆盖旧值:

> SET cd "timeless"
OK
> SETEX cd 3000 "goodbye my love"
OK
> get cd
"goodbye my love"
> TTL cd
(integer) 2996

1.4 PSETEX

1.5 GET

1.6 GETSET

1.7 STRLEN

1.8 APPEND

1.9 SETRANGE

1.10 GETRANGE

1.11 INCR

1.12 INCRBY

1.13 INCRBYFLOAT

1.14 DECR

1.15 DECRBY

1.16 MSET

1.17 MSETNX

1.18 MGET

二、Hash(哈希, 类似map)

2.1 HSET

2.2 HSETNX

2.3 HGET

2.4 HEXISTS

2.5 HDEL

2.1 HLEN

2.6 HSTRLEN

2.7 HINCRBY

2.8 HINCRBYFLOAT

2.9 HMSET

2.10 HMGET

2.11 HKEYS

2.12 HVALS

2.13 HGETALL

2.14 HSCAN

三、List(列表)

3.1 LPUSH

3.2 LPUSHX

3.3 RPUSH

3.4 RPUSHX

3.5 LPOP

3.6 RPOP

3.7 RPOPLPUSH

3.8 LREM

3.9 LLEN

3.10 LINDEX

3.11 LINSERT

3.12 LSET

3.13 LRANGE

3.14 LTRIM

3.15 BLPOP

3.16 BRPOP

3.17 BRPOPLPUSH

四、Set(集合)

4.1 SADD

4.2 SISMEMBER

4.3 SPOP

4.4 SRANDMEMBER

4.5 SREM

4.6 SMOVE

4.7 SCARD

4.8 SMEMBERS

4.9 SSCAN

4.10 SINTER

4.11 SINTERSTORE

4.12 SUNION

4.13 SUNIONSTORE

4.14 SDIFF

4.15 SDIFFSTORE

五、Zset(有序集合)

5.1 ZADD

5.2 ZSCORE

5.3 ZINCRBY

5.4 ZCARD

5.5 ZCOUNT

5.6 ZRANGE

5.7 ZREVRANGE

5.8 ZRANGEBYSCORE

5.9 ZREVRANGEBYSCORE

5.10 ZRANK

5.11 ZREVRANK

5.12 ZREM

5.13 ZREMRANGEBYRANK

5.14 ZREMRANGEBYSCORE

5.15 ZRANGEBYLEX

5.16 ZLEXCOUNT

5.17 ZREMRANGEBYLEX

5.18 ZSCAN

5.19 ZUNIONSTORE

5.20 ZINTERSTORE