5. Redis数据类型–String
Redis 字符串(String)
Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法如下:
语法
redis 127.0.0.1:6379> COMMAND KEY_NAME
实例
redis 127.0.0.1:6379> SET runoobkey redis
OK
redis 127.0.0.1:6379> GET runoobkey
"redis"
在以上实例中我们使用了 SET 和 GET 命令,键为 runoobkey。
Redis 字符串命令
下表列出了常用的 redis 字符串命令:
1 SET key value
设置指定 key 的值。
2 GET key
获取指定 key 的值。
3 GETRANGE key start end
返回 key 中字符串值的子字符
4 GETSET key value
将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
5 GETBIT key offset
对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
6 MGET key1 [key2..]
获取所有(一个或多个)给定 key 的值。
7 SETBIT key offset value
对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
8 SETEX key seconds value
将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
9 SETNX key value
只有在 key 不存在时设置 key 的值。
10 SETRANGE key offset value
用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。
11 STRLEN key
返回 key 所储存的字符串值的长度。
12 MSET key value [key value ...]
同时设置一个或多个 key-value 对。
13 MSETNX key value [key value ...]
同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
14 PSETEX key milliseconds value
这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。
15 INCR key
将 key 中储存的数字值增一。
16 INCRBY key increment
将 key 所储存的值加上给定的增量值(increment) 。
17 INCRBYFLOAT key increment
将 key 所储存的值加上给定的浮点增量值(increment) 。
18 DECR key
将 key 中储存的数字值减一。
19 DECRBY key decrement
key 所储存的值减去给定的减量值(decrement) 。
20 APPEND key value
如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。
更多命令请参考:https://redis.io/commands
Redis String类型操做命令实例:
set: 设置值
127.0.0.1:6379> set name "json"
OK
127.0.0.1:6379> set age 28
OK
keys * : 查看所有得key
keys name : 查看对应key
127.0.0.1:6379> keys *
1) "key1"
2) "age"
3) "name"
move key1 1: 移除数据库0中得key1,
127.0.0.1:6379> move key1 1
(integer) 1
127.0.0.1:6379> keys *
1) "age"
2) "name"
get : 获取key对应得值
127.0.0.1:6379> get name
"json"
127.0.0.1:6379> get age
"28"
EXISTS: 查看 key是否存在
127.0.0.1:6379> EXISTS name
(integer) 1
127.0.0.1:6379> EXISTS name1
(integer) 0
APPEND:追加内容到key对应得值中
127.0.0.1:6379> APPEND name " hello "
(integer) 11
127.0.0.1:6379> APPEND name " world "
(integer) 18
127.0.0.1:6379> get name
"json hello world "
APPEND:追加得key不存在时,新建key
127.0.0.1:6379> APPEND like "sleep"
(integer) 5
127.0.0.1:6379> get like
"sleep"
127.0.0.1:6379> keys *
1) "like"
2) "age"
3) "name"
STRLRN : 查看key对应得内容得长度
127.0.0.1:6379> STRLEN name
(integer) 18
INCR: 自增1
DECR: 自减1
127.0.0.1:6379> SET num 0
OK
127.0.0.1:6379> INCR num
(integer) 1
127.0.0.1:6379> INCR num
(integer) 2
127.0.0.1:6379> INCR num
(integer) 3
127.0.0.1:6379> get num
"3"
127.0.0.1:6379> DECR num
(integer) 2
127.0.0.1:6379> DECR num
(integer) 1
127.0.0.1:6379> get num
"1"
INCRBY: 增加指定量
DECRBY: 减少指定量
127.0.0.1:6379> INCRBY num 10
(integer) 11
127.0.0.1:6379> INCRBY num 10
(integer) 21
127.0.0.1:6379> GET num
"21"
127.0.0.1:6379>
127.0.0.1:6379> DECRBY num 5
(integer) 16
127.0.0.1:6379> DECRBY num 5
(integer) 11
127.0.0.1:6379> DECRBY num 5
(integer) 6
127.0.0.1:6379> GET num
"6"
字符串截取指定位置字符串:GETRANGE (闭区间)
127.0.0.1:6379> SET benz "Best or Nothing!"
OK
127.0.0.1:6379>
127.0.0.1:6379> get benz
"Best or Nothing!"
127.0.0.1:6379>
127.0.0.1:6379> getrange benz 0 3
"Best"
127.0.0.1:6379>
127.0.0.1:6379> getrange benz 0 -1
"Best or Nothing!"
127.0.0.1:6379>
字符串替换指定位置开始字符串:SETRANGE
127.0.0.1:6379> GET benz
"Best or Nothing!"
127.0.0.1:6379>
127.0.0.1:6379> SETRANGE benz 0 "BEST"
(integer) 16
127.0.0.1:6379>
127.0.0.1:6379> GET benz
"BEST or Nothing!"
SETEX:设置键过期时间
SETNX:如果不存在就设置(常用于分布式锁中)
127.0.0.1:6379> SETEX timeout 10 "login out" # timeout 10秒后自动删除
OK
127.0.0.1:6379> GET timeout # 10秒内可以获取到
"login out"
127.0.0.1:6379> GET timeout # 10秒后获取不到
了
(nil)
127.0.0.1:6379> GET timeout
(nil)
127.0.0.1:6379> GET timeout
(nil)
127.0.0.1:6379> SETNX dbname "redis" # 如果dbname不存在就设置,设置成功返回1
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> GET dbname
"redis"
127.0.0.1:6379>
127.0.0.1:6379> SETNX dbname "mongoDB" # 如果dbname不存在就设置,设置不成功则返回0
(integer) 0
127.0.0.1:6379> MOVE dbname 1
(integer) 1
127.0.0.1:6379> SETNX dbname "mongoDB"
(integer) 1
127.0.0.1:6379>
MSET: 批量设置值
MGET::批量获取值
127.0.0.1:6379> MSET k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> keys *
1) "k3"
2) "k1"
3) "k2"
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)
GETSET: 先获取再设置
127.0.0.1:6379> GETSET dbname redis # 获取dbname,不存在则返回null,然后设置dbname为redis
(nil)
127.0.0.1:6379> GET dbname
"redis"
127.0.0.1:6379> GETSET dbname mongodb # 获取dbname,返回redis,然后设置dbname为mongodb
"redis"
127.0.0.1:6379> GET dbname
"mongodb"