字符串类型是 Redis 中最为基础的数据存储类型,一个key对应一个value。它在 Redis 中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。
value 除了是字符串以外还可以是数字。
使用场景:计数器,统计多单位的数量,粉丝数,对象缓存存储,分布式锁等
1、保存
如果设置的键不存在则为添加,如果设置的键已经存在则修改。
1.1 设置键值set
用于设置给定 key 的值。如果 key 已经存储其他值, set 就重写旧值,且无视类型。
set key value
设置键为name
值为school的数据: 【key:value】
set name school
1.2 设置键值及过期时间,以秒为单位 【expire:过期】【ttl aaa : 查看有效期剩余时间】
给指定的 key 设置值及time 秒的过期时间。如果 key 已经存在, setex命令将会替换旧的值,并设置过期时间。
setex key seconds value
设置键为aaa
值为aa
过期时间为10秒的数据:
setex aaa 10 aa
1.3 setnx
只有在key不存在时设置key的值。
setnx key value
1.4 设置多个键值 【multiple:多样的,多重的】
同时设置一个或多个 key-value 。
mset key1 value1 key2 value2 ...
设置键为a1
值为python
、键为a2
值为java
、键为a3
值为c
:
mset a1 python a2 java a3 c
1.5 追加值
将给定的value追加到key原值末尾。
append key value
向键为a1
中追加值 iloveyou:
append a1 iloveyou
注意:
- 如果 key 已经存在并且是一个字符串, append 命令将 value 追加到 key 原来的值的末尾。
- 如果 key 不存在, append 就简单地将给定 key 设为 value ,就像执行 set key value 一样。
1.6 getset操作
将给定key值设为value,并返回key的旧值(old value),简单一句话(先get然后立即set)。
getset key value
2、获取
2.1 获取get:根据键获取值,如果不存在此键则返回nil
用于获取指定 key 的值。如果 key 不存在,返回 nil 。
get key
获取键name
的值:
get name
2.2 根据多个键获取多个值
返回所有(一个或多个)给定 key 的值。
mget key1 key2 ...
注意:
- 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。
2.3 获取字符串长度strlen
获取指定 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。
strlen name
2.4 将键的值加1 (必须是数值型的字符串)
将 key 中储存的数字值增一。
incr age
# 因为Redis中不存在k1,所以先初始化为0,再递增,值为1
127.0.0.1:6379> incr k1
(integer) 1
# incr k1 存在k1,递增后k1的值为2
127.0.0.1:6379> incr k1
(integer) 2
# 如果value不是数字就会报错
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> INCR k2
(error) ERR value is not an integer or out of range
注意:
- 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 incr 操作。
- 如字符串类型的值不能表示为数字、或者是其他类型,那么返回一个错误。
2.5 将键的值减1 (必须是数值型的字符串)
将 key 中储存的数字值减一。
decr age
127.0.0.1:6379> decr k1
(integer) 1
127.0.0.1:6379> decr k1
(integer) 0
127.0.0.1:6379> decr k1
(integer) -1
127.0.0.1:6379> decr k1
(integer) -2
#如果
set k2 v2
decr k2 因为k2不为数值,Redis返回一个错误
注意:
- 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 decr 操作。
- 如字符串类型的值不能表示为数字、或者是其他类型,那么返回一个错误。
2.6 将键的值加N (必须是数值型的字符串)
将key存储的数字值按照step进行增减。
incrby age 5
注意:
- 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 incrby/decrby 命令。
- 如字符串类型的值不能表示为数字、或者是其他类型,那么返回一个错误。
2.7 将键的值减N (必须是数值型的字符串)
将key存储的数字值按照step进行增减。
decrby age 5
注意:
- 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 incrby/decrby 命令。
- 如字符串类型的值不能表示为数字、或者是其他类型,那么返回一个错误。
2.8 获取键的范围位置值
获取指定区间范围内的值,类似between........and 的关系。
getrange key start end
2.9 键所对应的值的下标某个位置开始向后覆盖字符串
setrange key offset value
3、删除
3.1 删除键及对应的值
del key1 key2 ...
删除键a2、a3
:
del a2 a3