【Redis总结】5-Redis数据类型之字符串(String)

 

一、String 数据类型 介绍

       Redis中最基本的数据类型,它是二进制安全的,可以包含任意数据类型,如图片等。Redis中String类型的数据上限的512M。下面是常用的String操作命令:

 String(字符串)数据类型常用命令说明

命令              说明
set

设置字符串的值

SET key value :设置指定 key 的值为 value

get GET key:获取字符串的值,如果 key 不存在时,返回 nil
del 删除指定键
append 取出对应键的值进行追加,如果键不存在,则会新建一个并且值追加进去
strlen 返回键对应的值的长度
incr 每次递增1
decr 每次递减1
incrby 每次递增n
decrby 每次递减n
incrbyfloat 每次递增浮点数大小
getrange 获取执行下标范围的字符串,类似strstring()截取字符串
setrange 设置指定下标的字符串进行替换
setex(set with expire)键秒值 设置值同时设置过期时间
setnx(set if not exist) 只有键不存在的时候才设置值,否则设值失败
mset

批量设置值

MSET key value [key value ...] :同时设置一个或多个 key-value 对

mget 批量获取值
msetnx 批量判断键是否存在并且设置值,如果其中有一个键已存在,所有操作都将失败
getset 获取设置key的值并返回原来的旧值

       下面我们通过一些示例详细说明上面命令的使用方法。

 

二、命令详解

1、set、get、del、append、strlen

  • set:设置字符串的值;
  • get:获取字符串的值,如果 key 不存在时,返回 nil;
  • del:删除指定key的键值对,删除成功返回1,删除失败返回0,如果key不存在说明删除失败,返回0;
  • append:取出对应键的值进行追加,如果键不存在,则会新建一个并且值追加进去;
  • strlen:返回键对应的值的长度;
127.0.0.1:6379> set k1 value1   # 设置 k1 键值对
OK
127.0.0.1:6379> get k1   # 获取 k1 键值对
"value1"
127.0.0.1:6379> get k2
(nil)
127.0.0.1:6379> del k1   # 删除 k1 键值对
(integer) 1
127.0.0.1:6379> get k1
(nil)
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> append k1 v2v3   # append 命令追加内容
(integer) 6
127.0.0.1:6379> get k1
"v1v2v3"
127.0.0.1:6379> strlen k1        # strlen 命令用于查看 key 值的长度
(integer) 6
127.0.0.1:6379> EXISTS k2        # EXISTS 查看 key 是否存在,不存在返回 0;存在,返回1
(integer) 0
127.0.0.1:6379> append k2 m1     # 如果 key 不存在,使用 append 命令则新建该 key,并将值赋予该 key
(integer) 2
127.0.0.1:6379> get k2
"m1"
127.0.0.1:6379> append a1 aa
(integer) 2
127.0.0.1:6379> get a1
"aa"

 

2、incr、decr、incrby、decrby、incrbyfloat

       注意:这组命令只对数字类型的值有效,如果值么包含错误的类型,或字符串类型的值不能表示为数字,那么将会报错,因为字符串等不能进行递增递减操作
       如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 incr 操作
       一定要是数字才能进行加减

  • incr:每次递增1;
  • decr:每次递减1;
  • incrby:每次递增n;
  • decrby:每次递减n;
  • incrbyfloat:每次递增n浮点数大小
127.0.0.1:6379> set k3 value3
OK
127.0.0.1:6379> get k3
"value3"
127.0.0.1:6379> INCR k3
(error) ERR value is not an integer or out of range

127.0.0.1:6379> set k4 444
OK
127.0.0.1:6379> INCR k4
(integer) 445
127.0.0.1:6379> INCR k4
(integer) 446

127.0.0.1:6379> INCR k5     # key 不存在时,初始化为 0,再自增
(integer) 1
127.0.0.1:6379> get k5
"1"

 

127.0.0.1:6379> set k4 446
OK
127.0.0.1:6379> get k4
"446"
127.0.0.1:6379> decr k4
(integer) 445
127.0.0.1:6379> decr k4
(integer) 444
127.0.0.1:6379> get k4
"444"

127.0.0.1:6379> decr k6    # key 不存在时,初始化为0,再减 1
(integer) -1
127.0.0.1:6379> decr k6
(integer) -2
127.0.0.1:6379> get k6
"-2"

 

127.0.0.1:6379> set k7 1
OK
127.0.0.1:6379> incrby k7 2
(integer) 3
127.0.0.1:6379> incrby k7 2
(integer) 5
127.0.0.1:6379> incrby k7 4
(integer) 9

127.0.0.1:6379> decrby k7 8
(integer) 1
127.0.0.1:6379> decrby k7 3
(integer) -2

 

127.0.0.1:6379> set k8 10
OK
127.0.0.1:6379> get k8
"10"
127.0.0.1:6379> INCRBYFLOAT k8 0.3   # 每次递增 0.3
"10.3"
127.0.0.1:6379> INCRBYFLOAT k8 0.3
"10.6"
127.0.0.1:6379> INCRBYFLOAT k8 0.3
"10.9"
127.0.0.1:6379> INCRBYFLOAT k8 0.3
"11.2"

 

3、getrange、setrange

  • getrange:获取执行下标范围的字符串,类似strstring()截取字符串,下标从0开始,-1表示最后一个;
  • setrange:设置指定下标的字符串进行替换;
127.0.0.1:6379> set s1 helloworld
OK
127.0.0.1:6379> GETRANGE s1 0 -1
"helloworld"
127.0.0.1:6379> GETRANGE s1 0 4
"hello"
127.0.0.1:6379> SETRANGE s1 5 Redis
(integer) 10
127.0.0.1:6379> get s1
"helloRedis"

 

4、setex、setnx

  • setex(set with expire)键秒值:设置值同时设置过期时间
  • setnx(set if not exist):只有键不存在的到时候才设置值,否则设置失败
127.0.0.1:6379> SETEX s2 20 helloRedis
OK
127.0.0.1:6379> ttl s2
(integer) 11
127.0.0.1:6379> ttl s2
(integer) 7
127.0.0.1:6379> get s2
"helloRedis"
127.0.0.1:6379> ttl s2    
(integer) 0
127.0.0.1:6379> ttl s2
(integer) -2
127.0.0.1:6379> get s2     # 20s后,s2键值对过期了,则会被直接删除
(nil)

127.0.0.1:6379> set s3 HelloChina
OK
127.0.0.1:6379> SETNX s3 HelloWorld    # s3 键值对存在时,setnx 命令设置失败
(integer) 0
127.0.0.1:6379> get s3
"HelloChina"
127.0.0.1:6379> EXISTS s4
(integer) 0
127.0.0.1:6379> get s4
(nil)
127.0.0.1:6379> SETNX s4 HelloWorld    # s4 键值对不存在时,setnx 命令设置成功
(integer) 1
127.0.0.1:6379> get s4
"HelloWorld"

 

5、mset、mget、msetnx

  • mset:批量设置值;
  • mget:批量获取值;
  • msetnx:批量判断键是否存在并且设置值,如果其中有一个键已存在,所有操作都将失败;
127.0.0.1:6379> MSET k1 value1 k2 value2 k3 value3
OK
127.0.0.1:6379> MGET k1 k2 k3
1) "value1"
2) "value2"
3) "value3"
127.0.0.1:6379> MGET k1 k2 k3 k4
1) "value1"
2) "value2"
3) "value3"
4) (nil)
127.0.0.1:6379> MGET k1 k2 k3 value2
1) "value1"
2) "value2"
3) "value3"
4) (nil)


127.0.0.1:6379> MSETNX k4 v44 k5 v55    # k4、k5 不存在,使用 MSETNX 设置成功
(integer) 1
127.0.0.1:6379> MGET k4 k5
1) "v44"
2) "v55"
127.0.0.1:6379> MSETNX k5 v5 k6 v66     # 只要有一个key已存在,所有操作都set不成功
(integer) 0
127.0.0.1:6379> MGET k4 k5 k6
1) "v44"
2) "v55"
3) (nil)

 

6、getset

  • getset:获取设置 key 的值并返回原来的旧值
127.0.0.1:6379> set k1 value01
OK
127.0.0.1:6379> get k1
"value01"
127.0.0.1:6379> GETSET k1 vv
"value01"
127.0.0.1:6379> get k1
"vv"

 

三、总结

       更多命令学习可以参考Redis中文官网 http://www.redis.cn/commands.html 进行学习。

posted on 2020-01-08 17:24  morgan363  阅读(109)  评论(0编辑  收藏  举报

导航