参考:http://redisdoc.com/
1、set 命令
127.0.0.1:6379> set k1 hello
OK
127.0.0.1:6379> set k2 v2
OK
2、set key的名字
- 设置字符串,如果字符串键已存在,则覆盖之前的字符串的键和值
127.0.0.1:6379> set k1 hello
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> keys *
1) "k2"
2) "k1"
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379>
3、get key的名字
127.0.0.1:6379> keys *
1) "k2"
2) "k1"
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379>
4、del key的名字
127.0.0.1:6379> keys *
k3
127.0.0.1:6379> del k3
1
127.0.0.1:6379> keys *
127.0.0.1:6379>
5、append key的名字 key的值
- 如果键 key 已经存在并且它的值是一个字符串, APPEND 命令将把 value 追加到键 key 现有值的末尾。
- 如果 key 不存在, APPEND 就简单地将键 key 的值设为 value , 就像执行 SET key value 一样。
127.0.0.1:6379> keys *
1) "k1"
127.0.0.1:6379> APPEND k1 hello
(integer) 7
127.0.0.1:6379> get k1
"v1hello"
127.0.0.1:6379>
6、strlen key的名字
- 返回键 key 储存的字符串值的长度。
- 当键 key 不存在时, 命令返回 0 。
- 当 key 储存的不是字符串值时, 返回一个错误。
127.0.0.1:6379> get k1
"v1hello"
127.0.0.1:6379> STRLEN k1
(integer) 7
127.0.0.1:6379>
7、incr key(一定要是数字才能进行加减)
- 为键 key 储存的数字值加上一。
- 如果键 key 不存在, 那么它的值会先被初始化为 0 , 然后再执行 INCR 命令。
- 如果键 key 储存的值不能被解释为数字, 那么 INCR 命令将返回一个错误。
127.0.0.1:6379> keys *
1) "k2"
2) "k1"
127.0.0.1:6379> get k1
"v1hello"
127.0.0.1:6379> get k2
"5"
127.0.0.1:6379> INCR k2
(integer) 6
127.0.0.1:6379> INCR k2
(integer) 7
127.0.0.1:6379> INCR k1
(error) ERR value is not an integer or out of range
127.0.0.1:6379>
8、decr key(一定要是数字才能进行加减)
- 为键 key 储存的数字值减去一。
- 如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECR 操作。
- 如果键 key 储存的值不能被解释为数字, 那么 DECR 命令将返回一个错误。
127.0.0.1:6379> keys *
1) "k2"
2) "k1"
127.0.0.1:6379> get k1
"v1hello"
127.0.0.1:6379> get k2
"2"
127.0.0.1:6379> decr k2
(integer) 1
127.0.0.1:6379> decr k2
(integer) 0
127.0.0.1:6379> decr k2
(integer) -1
127.0.0.1:6379> decr k2
(integer) -2
127.0.0.1:6379> decr k1
(error) ERR value is not an integer or out of range
127.0.0.1:6379>
9、incrby key increment(一定要是数字才能进行加减)
- 为键 key 储存的数字值加上增量 increment 。
- 如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 INCRBY 命令。
- 如果键 key 储存的值不能被解释为数字, 那么 INCRBY 命令将返回一个错误。
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set k1 2
OK
127.0.0.1:6379> get k1
"2"
127.0.0.1:6379> INCRBY k1 3
(integer) 5
127.0.0.1:6379> INCRBY k1 3
(integer) 8
127.0.0.1:6379> INCRBY k1 3
(integer) 11
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> INCRBY k2 5
(error) ERR value is not an integer or out of range
127.0.0.1:6379>
10、decrby key decrement(一定要是数字才能进行加减)
- 将键 key 储存的整数值减去减量 decrement 。
- 如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECRBY 命令。
- 如果键 key 储存的值不能被解释为数字, 那么 DECRBY 命令将返回一个错误。
127.0.0.1:6379> set count 10
OK
127.0.0.1:6379> get count
"10"
127.0.0.1:6379> DECRBY count 2
(integer) 8
127.0.0.1:6379> DECRBY count 2
(integer) 6
127.0.0.1:6379> DECRBY count 2
(integer) 4
127.0.0.1:6379> DECRBY count 2
(integer) 2
127.0.0.1:6379> DECRBY count 2
(integer) 0
127.0.0.1:6379> DECRBY count 2
(integer) -2
127.0.0.1:6379> set k4 hello
OK
127.0.0.1:6379> get k4
"hello"
127.0.0.1:6379> DECRBY k4 2
(error) ERR value is not an integer or out of range
127.0.0.1:6379>
11、getrange key start end
- 获取指定区间范围内的值,类似于between…and的关系(零到负一表示全部)
- 返回键 key 储存的字符串值的指定部分, 字符串的截取范围由 start 和 end 两个偏移量决定 (包括 start 和 end 在内)。
- 负数偏移量表示从字符串的末尾开始计数, -1 表示最后一个字符, -2 表示倒数第二个字符, 以此类推。
127.0.0.1:6379> set k5 hello123456789
OK
127.0.0.1:6379> GETRANGE k5 0 -1
"hello123456789"
127.0.0.1:6379> GETRANGE k5 0 6
"hello12"
127.0.0.1:6379>
12、setrange key offset value
- setrange 设置指定区间范围内的值,格式是setrange key值 具体值
- 从偏移量 offset 开始, 用 value 参数覆写(overwrite)键 key 储存的字符串值。
- 不存在的键 key 当作空白字符串处理。
127.0.0.1:6379> get k5
"hello123456789"
127.0.0.1:6379> SETRANGE k5 0 xiaozhi
(integer) 14
127.0.0.1:6379> get k5
"xiaozhi3456789"
127.0.0.1:6379> set k6 hello
OK
127.0.0.1:6379> SETRANGE k6 3 nihao
(integer) 8
127.0.0.1:6379> get k6
"helnihao"
127.0.0.1:6379>
13、setex key seconds value
- setex是『set with expire』(设置值并且设置过期时间)的简写。
- 将键 key 的值设置为 value , 并将键 key 的生存时间设置为 seconds 秒钟。
- 如果键 key 已经存在, 那么 SETEX 命令将覆盖已有的值。
- SETEX 和(SET、EXPIRE)这两个命令的不同之处在于 SETEX 是一个原子(atomic)操作, 它可以在同一时间内完成设置值和设置过期时间这两个操作, 因此 SETEX 命令在储存缓存的时候非常实用。
127.0.0.1:6379> SETEX k1 20 v1
OK
127.0.0.1:6379> ttl k1
(integer) 17
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> ttl k1
(integer) -2
127.0.0.1:6379> get k1
(nil)
127.0.0.1:6379>
14、setnx key value
- 只在键 key 不存在的情况下, 将键 key 的值设置为 value 。
- 若键 key 已经存在, 则 SETNX 命令不做任何动作。
- SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set k1 helloworld
OK
127.0.0.1:6379> SETNX k1 v1
(integer) 0
127.0.0.1:6379> get k1
"helloworld"
127.0.0.1:6379> SETNX k2 v2
(integer) 1
127.0.0.1:6379> get k2
"v2"
127.0.0.1:6379>
15、mset key value [key value …]
- 同时为多个键设置值。
- 如果某个给定键已经存在, 那么 MSET 将使用新值去覆盖旧值, 如果这不是你所希望的效果, 请考虑使用 MSETNX 命令, 这个命令只会在所有给定键都不存在的情况下进行设置。
- MSET 是一个原子性(atomic)操作, 所有给定键都会在同一时间内被设置, 不会出现某些键被设置了但是另一些键没有被设置的情况。
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> mget k1 k2 k3
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> set k5 v5 k6 v6
(error) ERR syntax error
127.0.0.1:6379>
16、mget key [key …]
- 返回给定的一个或多个字符串键的值。
- 如果给定的字符串键里面, 有某个键不存在, 那么这个键的值将以特殊值 nil 表示。
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> mget k1 k2 k3
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> mget k1 k2 k3 k4
1) "v1"
2) "v2"
3) "v3"
4) (nil)
127.0.0.1:6379>
17、msetnx key value [key value …]
- 当且仅当所有给定键都不存在时, 为所有给定键设置值。
- 即使只有一个给定键已经存在, MSETNX 命令也会拒绝执行对所有键的设置操作。
- msetnx是一个原子性(atomic)操作, 所有给定键要么就全部都被设置, 要么就全部都不设置, 不可能出现第三种状态。
- 当所有给定键都设置成功时, 命令返回 1 ; 如果因为某个给定键已经存在而导致设置未能成功执行, 那么命令返回 0 。
127.0.0.1:6379> keys *
1) "k3"
2) "k2"
3) "k1"
127.0.0.1:6379> msetnx k3 v3 k4 v4
(integer) 0
127.0.0.1:6379> mget k1 k2 k3 k4
1) "v1"
2) "v2"
3) "v3"
4) (nil)
127.0.0.1:6379> msetnx k5 v5 k6 v6
(integer) 1
127.0.0.1:6379> mget k1 k2 k3 k5 k6
1) "v1"
2) "v2"
3) "v3"
4) "v5"
5) "v6"
127.0.0.1:6379>
18、getset key value
- 先获取值,在设置值
- 将键 key 的值设为 value , 并返回键 key 在被设置之前的旧值。
- 键 key 在被设置之前并不存在, 那么命令返回 nil 。当键 key 存在但不是字符串类型时, 命令返回一个错误。
127.0.0.1:6379> mget k1 k2 k3 k5 k6
1) "v1"
2) "v2"
3) "v3"
4) "v5"
5) "v6"
127.0.0.1:6379> getset k7 v7
(nil)
127.0.0.1:6379> GETSET k6 hello
"v6"
127.0.0.1:6379> get k6
"hello"
127.0.0.1:6379>