介绍

Redis的String类型可以是字符串(简单的字符串、复杂的字符串(例如JSON、XML))、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能超过512MB;

  • 使用下面的命令查看手册:

    1
    help @string

命令行模式

  • 进入命令行模式:

    1
    2
    3
    redis-cli -a password_value
    redis-cli -a password_value --raw
    --raw 避免中文显示乱码

常用命令

exist

  • 判断key存在, 返回true / false, 1/0

    1
    exists key

命令 说明
set [EX seconds|PX milliseconds|KEEPTTL] [NX|XX] 添加键值对
NX:当数据库中 key 不存在时,可以将 key-value 添加数据库
XX:当数据库中 key 存在时,可以将 key-value 添加数据库,与 NX 参数互斥
EX:key 的超时秒数
PX:key 的超时毫秒数,与 EX 互斥
setex <过期时间> 设置键值的同时,设置过期时间,单位秒
psetex key EXPIRY_IN_MILLISECONDS value 以毫秒为单位设置 key 的生存时间。
setnx 只有在 key 不存在时设置 key 的值
mset key1 value1 [key2 value2…] 批量创建kv,已存在的会被更新
msetnx key1 value1 [key2 value2…] # 批量创建kv,所有key不存在才会创建

  • 使用del命令删除数据,可批量可单个删除:

    1
    del key1 [key2 key3...]

命令 说明
set 如果对同一个key进行set即可更新该数据
getset 以新换旧,设置了新值同时获得旧值,下次再get的时候查到的就是新的value
setrange <起始位置> 覆写所储存的字符串值,从<起始位置>开始(索引从 0 开始)
append 将给定的 追加到原值的末尾
mset ….. 同时设置一个或多个 key-value 对
msetnx ….. 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在原子性,有一个失败则都失败
1
2
3
4
5
6
redis 127.0.0.1:6379> SET key1 "Hello World"
OK
redis 127.0.0.1:6379> SETRANGE key1 6 "Redis"
(integer) 11
redis 127.0.0.1:6379> GET key1
"Hello Redis"

命令 说明
keys PATTERN 符合给定模式的 key 列表 (Array)。 KEYS *查所有
get 查询对应键值
getset 以新换旧,设置了新值同时获得旧值
getrange <起始位置><结束位置> 获得值的范围,类似 java 中的 substring,[start,end],从0开始
mget ….. 同时获取一个或多个 value
strlen 获得值的长度

计数

命令 说明
incr 将 key 中储存的数字值增 1(原子操作)只能对数字值操作
如果key不存在,其初始值为0,在incr之后其值为1
如果value的值不能转为整型,如hello,该操作将执行失败并返回相应的错误信息
decr 将 key 中储存的数字值减 1(原子操作)只能对数字值操作
如果key不存在,其初始值为0,在decr之后其值为-1
如果value的值不能转为整型,如hello,该操作将执行失败并返回相应的错误信息
incrby / decrby <步长> 将 key 中储存的数字值增减。自定义步长(原子操作)
incrbyfloat 效果与incrby类似,此方法支持传浮点型的值,正数为增,负数为减
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 值和增量都不是指数符号

redis> SET mykey 10.50
OK

redis> INCRBYFLOAT mykey 0.1
"10.6"


# 值和增量都是指数符号

redis> SET mykey 314e-2
OK

redis> GET mykey # 用 SET 设置的值可以是指数符号
"314e-2"

redis> INCRBYFLOAT mykey 0 # 但执行 INCRBYFLOAT 之后格式会被改成非指数符号
"3.14"


# 可以对整数类型执行

redis> SET mykey 3
OK

redis> INCRBYFLOAT mykey 1.1
"4.1"


# 后跟的 0 会被移除

redis> SET mykey 3.0
OK

redis> GET mykey # SET 设置的值小数部分可以是 0
"3.0"

redis> INCRBYFLOAT mykey 1.000000000000000000000 # 但 INCRBYFLOAT 会将无用的 0 忽略掉,有需要的话,将浮点变为整数
"4"

redis> GET mykey
"4"