Redis数据类型——常用Redis字符串(String)重点

参考:http://redisdoc.com/

1、set 命令

  • 设置字符串
127.0.0.1:6379> set k1 hello  //设置字符串的键为k1,值为hello
OK
127.0.0.1:6379> set k2 v2 //设置字符串的键为k2,值为v2
OK

2、set key的名字

  • 设置字符串,如果字符串键已存在,则覆盖之前的字符串的键和值
127.0.0.1:6379> set k1 hello  //设置字符串的键为k1和值位hello
OK
127.0.0.1:6379> set k2 v2   //设置字符串的键为k2和值位v2
OK
127.0.0.1:6379> set k1 v1   //设置字符串的键为k1和值位v1
OK
127.0.0.1:6379> keys *  //查询所有的key的名字
1) "k2"
2) "k1"
127.0.0.1:6379> get k1  //查看字符串键k1的值为v1,把之前的hello值覆盖掉了
"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  //查看字符串键k1的值为v1
"v1"
127.0.0.1:6379> 

4、del key的名字

  • 删除key的名字及改key的值
127.0.0.1:6379> keys *    //查询所有的键的名字
k3
127.0.0.1:6379> del k3    //删除字符串中k3的键和值,删除成功返回1
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  //键 key 已经存在,把 value 追加到键 key 现有值的末尾
(integer) 7
127.0.0.1:6379> get k1  //获取key的名字k1的值
"v1hello"
127.0.0.1:6379> 

6、strlen key的名字

  • 返回键 key 储存的字符串值的长度。
  • 当键 key 不存在时, 命令返回 0 。
  • 当 key 储存的不是字符串值时, 返回一个错误。
127.0.0.1:6379> get k1  //获取key的名字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   //k1已经存在, 则 SETNX 命令不做任何动作,返回 0
(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 //k4不存在, 那么这个键的值将以特殊值 nil 表示
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  //返回 0,某个给定键已经存在而导致设置未能成功执行
(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  //将键 k6的值设为llo , 并返回键k6在被设置之前的旧值。
"v6"
127.0.0.1:6379> get k6  
"hello"
127.0.0.1:6379> 

你可能感兴趣的:(redis)