文章内容来自:redis命令参考,本篇文章主要是方便个人理解记忆及使用时查询。
(一)字符串
1、set key value [expiration EX seconds|PX milliseconds] [NX|XX]
将字符串值value 关联到 key 。
如果 key 已经持有其他值, SET 就覆写旧值, 无视类型。
当 SET 命令对一个带有生存时间(TTL)的键进行设置之后, 该键原有的 TTL 将被清除。
可选参数
-
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 : 只在键已经存在时, 才对键进行设置操作。
返回值
设置操作成功完成时返回OK
因为条件没达到而造成设置操作未执行(nil)
示例
127.0.0.1:6379> set hh hello
OK
127.0.0.1:6379> get hh
"hello"
127.0.0.1:6379> set hh hello ex 10
OK
127.0.0.1:6379> ttl hh
(integer) 8
127.0.0.1:6379> set hh hello nx
OK
127.0.0.1:6379> set hh world xx
OK
127.0.0.1:6379> get hh
"world"
127.0.0.1:6379> set hh hello px 10000
OK
2、GET key
返回与键 key 相关联的字符串值。
返回值
如果键 key 不存在, 那么返回特殊值 (nil); 否则, 返回键 key 的值。
如果键 key 的值并非字符串类型, 那么返回一个错误, 因为 GET 命令只能用于字符串值。
3、GETSET key value
将键 key的值设为 value , 并返回键 key 在被设置之前的旧值。
返回值
返回给定键 key的旧值。
如果键 key没有旧值, 也即是说, 键 key在被设置之前并不存在, 那么命令返回 (nil)。
当键 key存在但不是字符串类型时, 命令返回一个错误。
示例
127.0.0.1:6379> GETSET kk linux
"redis"
127.0.0.1:6379> get kk
"linux"
127.0.0.1:6379> GETSET ss hell
(nil)
4、SETEX key seconds value
将键 key 的值设置为 value, 并将键 key的生存时间设置为 seconds 秒钟。
如果键 key已经存在, 那么 SETEX 命令将覆盖已有的值。
SETEX 命令的效果和以下两个命令的效果类似:
SET key value
EXPIRE key seconds # 设置生存时间
SETEX和这两个命令的不同之处在于 SETEX是一个原子(atomic)操作, 它可以在同一时间内完成设置值和设置过期时间这两个操作, 因此 SETEX命令在储存缓存的时候非常实用。
返回值
命令在设置成功时返回 OK。 当 seconds 参数不合法时, 命令将返回一个错误。
示例
127.0.0.1:6379> SETEX hh 10 hello
OK
127.0.0.1:6379> ttl hh
(integer) 7
5、PSETEX key milliseconds value
这个命令和 SETEX 命令相似, 但它以毫秒为单位设置 key 的生存时间, 而不是像 SETEX 命令那样以秒为单位进行设置。
返回值
命令在设置成功时返回 OK。
示例
127.0.0.1:6379> PSETEX kk 10000 redis
OK
127.0.0.1:6379> ttl kk
(integer) 6
127.0.0.1:6379> ttl kk
(integer) -2
6、SETNX key value
只在键 key不存在的情况下, 将键 key的值设置为 value 。
若键 key已经存在, 则 SETNX 命令不做任何动作。
SETNX是『SET if Not eXists』(如果不存在,则 SET)的简写。
返回值
命令在设置成功时返回 1 , 设置失败时返回 0 。
示例
127.0.0.1:6379> SETNX hh hello
(integer) 0
127.0.0.1:6379> get hh
"world"
127.0.0.1:6379> SETNX kk redis
(integer) 1
127.0.0.1:6379> get kk
"redis"
7、STRLEN key
返回键 key 储存的字符串值的长度。
当键 key不存在时, 命令返回 0 。
当 key储存的不是字符串值时, 返回一个错误。
示例
127.0.0.1:6379> get hh
"world"
127.0.0.1:6379> STRLEN hh
(integer) 5
8、APPEND key value
如果键 key已经存在并且它的值是一个字符串, APPEND 命令将把 value 追加到键 key现有值的末尾。
如果 key不存在, APPEND 就简单地将键 key的值设为 value , 就像执行 SET key value 一样。
返回值
追加 value 之后, 键 key 的值的长度。
示例
127.0.0.1:6379> keys *
1) "ss"
2) "hh"
3) "ww"
127.0.0.1:6379> APPEND oo linux
(integer) 5
127.0.0.1:6379> get oo
"linux"
127.0.0.1:6379> APPEND oo redis
(integer) 10
127.0.0.1:6379> get oo
"linuxredis"
(二)列表
1、LPUSH key value [value …]
将一个或多个值 value 插入到列表 key 的表头(最左边)
如果有多个 value值,那么各个 value值按从左到右的顺序依次插入到表头:
比如说,对空列表 mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a ,这等同于原子性地执行 LPUSH mylist a 、 LPUSH mylist b 和 LPUSH mylist c 三个命令。
如果 key 不存在,一个空列表会被创建并执行 LPUSH操作。
返回值
执行 LPUSH命令后,列表的长度。
示例
127.0.0.1:6379> LPUSH list 1
(integer) 1
127.0.0.1:6379> LPUSH list 2 3 4 5 6 7 8
(integer) 8
127.0.0.1:6379> LRANGE list 0 -1
1) "8"
2) "7"
3) "6"
4) "5"
5) "4"
6) "3"
7) "2"
8) "1"
2、LPUSHX key value
将值 value 插入到列表 key 的表头,当且仅当 key存在并且是一个列表。当 key不存在时, LPUSHX 命令什么也不做。
返回值
LPUSHX 命令执行之后,列表的长度。
示例
127.0.0.1:6379> LPUSHX list 9
(integer) 9
127.0.0.1:6379> LPUSHX list2 a b c
(integer) 0
3、LRANGE key start stop
返回列表 key中指定区间内的元素,区间以偏移量 start和 stop 指定。
下标(index)参数 start和 stop都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。
你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
超出范围的下标
超出范围的下标值不会引起错误。
如果 start下标比列表的最大下标 end ( LLEN list 减去 1 )还要大,那么 LRANGE 返回一个空列表。
如果 stop下标比 end 下标还要大,Redis将 stop 的值设置为 end 。
返回值
一个列表,包含指定区间内的元素。
示例
127.0.0.1:6379> LRANGE list 0 -1
1) "8"
2) "7"
3) "6"
4) "5"
5) "4"
6) "3"
7) "2"
8) "1"
127.0.0.1:6379> LRANGE list 9 10
(empty list or set)
4、RPUSH key value [value …]
将一个或多个值 value 插入到列表 key 的表尾(最右边)
如果有多个 value值,那么各个 value值按从左到右的顺序依次插入到表尾:
比如说,对空列表 mylist 执行命令 RPUSH mylist a b c ,列表的值将是 a b c ,这等同于原子性地执行 RPUSH mylist a 、 RPUSH mylist b 和 RPUSH mylist c 三个命令。
如果 key 不存在,一个空列表会被创建并执行 RPUSH操作。
返回值
执行 RPUSH 命令后,列表的长度。
示例
127.0.0.1:6379> RPUSH list2 1 2 3 4 5 6 7 8
(integer) 8
127.0.0.1:6379> LRANGE list2 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
5、RPUSHX key value
将值 value 插入到列表 key 的表尾,当且仅当 key存在并且是一个列表。当 key不存在时, LPUSHX 命令什么也不做。
返回值
RPUSHX 命令执行之后,列表的长度。
示例
127.0.0.1:6379> RPUSHX list2 9
(integer) 9
127.0.0.1:6379> RPUSHX list3 a b c
(integer) 0
(三)哈希表
1、HSET key field value
将哈希表 key 中域 field 的值设置为 value 。
如果给定的哈希表并不存在, 那么一个新的哈希表将被创建并执行 HSET 操作。
如果域 field 已经存在于哈希表中, 那么它的旧值将被新值 value 覆盖。
返回值
当 HSET命令在哈希表中新创建 field域并成功为它设置值时, 命令返回 1 ;
如果域 field已经存在于哈希表, 并且 HSET命令成功使用新值覆盖了它的旧值, 那么命令返回 0 。
示例
127.0.0.1:6379> HSET hash key1 hello
(integer) 1
127.0.0.1:6379> hset hash key1 world
(integer) 0
2、HGET key field
返回哈希表中给定域的值。
返回值
HGET 命令在默认情况下返回给定域的值。
如果给定域不存在于哈希表中, 又或者给定的哈希表并不存在, 那么命令返回 nil 。
示例
127.0.0.1:6379> HGET hash key1
"world"
127.0.0.1:6379> HGET hash key
(nil)
3、HSETNX hash field value
当且仅当域 field尚未存在于哈希表的情况下, 将它的值设置为 value 。
如果给定域已经存在于哈希表当中, 那么命令将放弃执行设置操作。
如果哈希表 hash 不存在, 那么一个新的哈希表将被创建并执行 HSETNX 命令。
返回值
HSETNX 命令在设置成功时返回 1 , 在给定域已经存在而放弃执行设置操作时返回 0 。
示例
127.0.0.1:6379> HSETNX hash key1 hh
(integer) 0
127.0.0.1:6379> HSETNX hash key2 world
(integer) 1
4、HDEL key field [field …]
删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
返回值
被成功移除的域的数量,不包括被忽略的域。
示例
127.0.0.1:6379> HDEL hash key1 key2
(integer) 2
127.0.0.1:6379> HMGET hash key1 key2
1) (nil)
2) (nil)
5、HLEN key
返回哈希表 key 中域的数量。
返回值
哈希表中域的数量。当 key不存在时,返回 0 。
示例
127.0.0.1:6379> HLEN hash
(integer) 0
127.0.0.1:6379> HLEN hh
(integer) 0
6、HEXISTS key field
检查给定域 field 是否存在于哈希表 key 当中。
返回值
HEXISTS命令在给定域存在时返回 1, 在给定域不存在时返回 0 。
示例
127.0.0.1:6379> HEXISTS hash key1
(integer) 0
127.0.0.1:6379> Hset hash key1 hello
(integer) 1
127.0.0.1:6379> HEXISTS hash key1
(integer) 1
7、HKEYS key
返回哈希表 key 中的所有域。
返回值
一个包含哈希表中所有域的表。当 key 不存在时,返回一个空表。
示例
127.0.0.1:6379> HKEYS hash
1) "key1"
127.0.0.1:6379> HDEL hash key1
(integer) 1
127.0.0.1:6379> HKEYS hash
(empty list or set)
8、HVALS key
返回哈希表 key 中所有域的值。
返回值
一个包含哈希表中所有值的表。当 key 不存在时,返回一个空表。
示例
127.0.0.1:6379> HVALS hash
(empty list or set)
127.0.0.1:6379> hset hash key1 hello
(integer) 1
127.0.0.1:6379> HVALS hash
1) "hello"
9、HSTRLEN key field
返回哈希表 key 中, 与给定域 field相关联的值的字符串长度(string length)。
如果给定的键或者域不存在, 那么命令返回 0 。
返回值
一个整数。
示例
127.0.0.1:6379> HSTRLEN hash key1
(integer) 5
127.0.0.1:6379> HSTRLEN hash key
(integer) 0
其他
1、ttl key
以秒为单位,返回给定 key的剩余生存时间(TTL, time to live)。
返回值
当 key不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key的剩余生存时间。
2、EXISTS key
检查给定 key是否存在。
返回值
若 key存在,返回 1 ,否则返回 0 。
127.0.0.1:6379> EXISTS kk
(integer) 1