Redis学习笔记08Redis数据类型之 字符串类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis学习笔记08Redis数据类型之 字符串类型相关的知识,希望对你有一定的参考价值。
1.1.1. set
设置字符串类型的键值,如果键已存在,则之前的值被覆盖,不关注之前的键值的类型。
语法:
SET key value [EX seconds] [PX milliseconds] [NX|XX]
参数:
key 键名
value 键值
EX seconds - 过期时间,秒。
PX milliseconds -- 过期时间,毫秒。
NX -- 仅仅当键不存在时才设置。
XX -- 仅仅当键已经存在时才设置。
返回值:
OK:操作成功。
nil:操作失败。
例子:
redis.coe2coe.me:6379> set host redis.coe2coe.me
OK
redis.coe2coe.me:6379> set host redis.coe2coe.me NX
(nil)
redis.coe2coe.me:6379> set host redis101.coe2coe.me XX
OK
redis.coe2coe.me:6379> get host
"redis101.coe2coe.me"
redis.coe2coe.me:6379> set host redis.coe2coe.me EX 10 XX
OK
redis.coe2coe.me:6379> set host redis.coe2coe.me PX 10000 NX
OK
redis.coe2coe.me:6379> ttl host
(integer) 8
redis.coe2coe.me:6379> set host redis.coe2coe.me EX 10 PX 100 XX
(error) ERR syntax error
注意:EX和PX不能同时使用。
1.1.2. get
获取指定的键的值。
语法:
GET key
参数:
key:键名。
返回值:
键值:操作成功。
nil:操作失败。
例子:
redis.coe2coe.me:6379> get host
(nil)
redis.coe2coe.me:6379> set host redis.coe2coe.me
OK
redis.coe2coe.me:6379> get host
"redis.coe2coe.me"
注意:
get 只能获取字符串的键值。
1.1.3. append
修改字符串的值,将指定的字符串添加到现有字符串的后面。
语法:
APPEND key value
参数:
key 键名。
value 字符串。
返回值:
整数:添加操作之后字符串的长度。
例子:
redis.coe2coe.me:6379> get host
(nil)
redis.coe2coe.me:6379> append host redis
(integer) 5
redis.coe2coe.me:6379> get host
"redis"
redis.coe2coe.me:6379> append host .coe2coe.me
(integer) 16
redis.coe2coe.me:6379> get host
"redis.coe2coe.me"
1.1.4. strlen
获取指定字符串的长度。
语法:
strlen key
参数:
key 键。
返回值:
整数:键值字符串的长度。
0:空字符串,或者键不存在。
redis.coe2coe.me:6379> get host
"redis.coe2coe.me"
redis.coe2coe.me:6379> strlen host
(integer) 16
redis.coe2coe.me:6379> get nosuchkey
(nil)
redis.coe2coe.me:6379> set emptystring ""
OK
redis.coe2coe.me:6379> get emptystring
""
redis.coe2coe.me:6379> strlen emptystring
(integer) 0
1.1.5. getrange
获取字符串的指定部分的子串。
语法
GETRANGE key start end
参数:
start 开始位置,从0开始。
end 结束位置,从0开始。
位置为0:第1个字符,位置为-1:最后1个字符,-2:倒数第2个字符,依此类推。
返回值:
字符串:获取到的子串。
例子:
redis.coe2coe.me:6379> get host
"redis.coe2coe.me"
redis.coe2coe.me:6379> getrange host 0 4
"redis"
redis.coe2coe.me:6379> getrange host -2 -1
"me"
redis.coe2coe.me:6379> getrange host -10 -4
"coe2coe"
redis.coe2coe.me:6379> getrange host 0 0
"r"
redis.coe2coe.me:6379> getrange host 0 -1
"redis.coe2coe.me"
redis.coe2coe.me:6379> getrange host -1 0
""
redis.coe2coe.me:6379> getrange host 20 30
""
redis.coe2coe.me:6379> getrange nosuchkey 0 -1
""
redis.coe2coe.me:6379> getrange -2,-1
(error) ERR wrong number of arguments for ‘getrange‘ command
1.1.6. setrange
设置字符串的某个位置的子字符串值。
语法:
SETRANGE key offset value
参数:
offset:位置,从0开始。
返回值:
整数:新字符串的长度。
如果指定的key不存在,则创建一个字符串,如果现有字符串不够长,则扩展现有字符串的长度。setrange总是确保字符串能够容纳value的值。
例子:
redis.coe2coe.me:6379> get host
(nil)
redis.coe2coe.me:6379> setrange host 6 coe2coe
(integer) 13
redis.coe2coe.me:6379> get host
"\x00\x00\x00\x00\x00\x00coe2coe"
redis.coe2coe.me:6379> setrange host 0 redis.
(integer) 13
redis.coe2coe.me:6379> get host
"redis.coe2coe"
redis.coe2coe.me:6379> setrange host 13 .me
(integer) 16
redis.coe2coe.me:6379> get host
"redis.coe2coe.me"
redis.coe2coe.me:6379> setrange host 6 abcdefg
(integer) 16
redis.coe2coe.me:6379> get host
"redis.abcdefg.me"
1.1.7. setex
设置新的值,同时设置过期时间。
语法:
SETEX key seconds value
参数:
seconds:过期时间,秒。
返回值:
OK:操作成功。
setex是一个原子操作,等效于以下命令序列:
SET mykey value
EXPIRE mykey seconds
例子:
redis.coe2coe.me:6379> get host
(nil)
redis.coe2coe.me:6379> setex host 10 redis.coe2coe.me
OK
redis.coe2coe.me:6379> get host
"redis.coe2coe.me"
redis.coe2coe.me:6379> ttl host
(integer) 4
1.1.8. setnx
仅当键不存在时才设置键的值。
语法:
SETNX key value
返回值:
1:设置成功。
0:没有设置。
例子:
redis.coe2coe.me:6379> get host
(nil)
redis.coe2coe.me:6379> setnx host redis.coe2coe.me
(integer) 1
redis.coe2coe.me:6379> get host
"redis.coe2coe.me"
redis.coe2coe.me:6379> setnx host redis2.coe2coe.me
(integer) 0
redis.coe2coe.me:6379> get host
"redis.coe2coe.me"
1.1.9. mset
设置多个key的值。
语法:
MSET key value [key value ...]
返回值:
OK:总是成功。
例子:
redis.coe2coe.me:6379> keys *
(empty list or set)
redis.coe2coe.me:6379> mset host redis.coe2coe.me port 6379
OK
redis.coe2coe.me:6379> keys *
1) "host"
2) "port"
1.1.10. mget
获取多个key的值。
语法:
MGET key [key ...]
例子:
redis.coe2coe.me:6379> mget host port nosuchkey
1) "redis.coe2coe.me"
2) "6379"
3) (nil)
1.1.11. incr
将一个整数增加1。
语法:
INCR key
参数:
key:一个整数的键名。如果键值不能转化为整数,则出错。键值可以非负数。操作不存在的键时,将创建一个新的键值为0的键,incr操作后的值为1。
返回值:
整数:增加后的键值。
ERROR:键值不能转化为整数。
例子:
redis.coe2coe.me:6379> set port 6379
OK
redis.coe2coe.me:6379> incr port
(integer) 6380
redis.coe2coe.me:6379> incr port
(integer) 6381
redis.coe2coe.me:6379> get port
"6381"
redis.coe2coe.me:6379> set host redis.coe2coe.me
OK
redis.coe2coe.me:6379> incr host
(error) ERR value is not an integer or out of range
redis.coe2coe.me:6379> set a -100
OK
redis.coe2coe.me:6379> incr a
(integer) -99
redis.coe2coe.me:6379> get a
"-99"
redis.coe2coe.me:6379> incr nosuchkey
(integer) 1
redis.coe2coe.me:6379> get nosuchkey
"1"
1.1.12. decr
将键值减去1。
语法:
decr key
参数:
key:同incr类似。请参考incr的参数说明。
返回值:
整数:减1后的键值。
ERROR:键值不能转化为整数。
例子:
redis.coe2coe.me:6379> set port 6379
OK
redis.coe2coe.me:6379> decr port
(integer) 6378
redis.coe2coe.me:6379> get port
"6378"
redis.coe2coe.me:6379> decr port
(integer) 6377
redis.coe2coe.me:6379> get port
"6377"
redis.coe2coe.me:6379> set a -100
OK
redis.coe2coe.me:6379> decr a
(integer) -101
redis.coe2coe.me:6379> get a
"-101"
redis.coe2coe.me:6379> del nosuchkey
(integer) 1
redis.coe2coe.me:6379> get nosuchkey
(nil)
redis.coe2coe.me:6379> decr nosuchkey
(integer) -1
redis.coe2coe.me:6379> get nosuchkey
"-1"
1.1.13. incrby
将一个整数增加指定的值。
语法:
INCRBY key increment
参数:
key:整数的键名。
increment:增加的值。
返回值:
整数:增加后的键值。
ERROR:键值不能转化为整数。
例子:
redis.coe2coe.me:6379> set port 6379
OK
redis.coe2coe.me:6379> incrby port 100
(integer) 6479
redis.coe2coe.me:6379> get port
"6479"
redis.coe2coe.me:6379> del nosuchkey
(integer) 1
redis.coe2coe.me:6379> get nosuchkey
(nil)
redis.coe2coe.me:6379> incrby nosuchkey 100
(integer) 100
redis.coe2coe.me:6379> get nosuchkey
"100"
1.1.14. decrby
将一个整数减去指定的值。
语法:
DECRBY key decrement
参数:
decrement:减去的值。
返回值:
整数:减去之后的键值。
ERROR:键值不能转化为整数。
例子:
redis.coe2coe.me:6379> set port 6379
OK
redis.coe2coe.me:6379> decrby port 100
(integer) 6279
redis.coe2coe.me:6379> get port
"6279"
redis.coe2coe.me:6379> del nosuchkey
(integer) 1
redis.coe2coe.me:6379> decrby nosuchkey 100
(integer) -100
redis.coe2coe.me:6379> get nosuchkey
"-100"
1.1.15. incrbyfloat
对一个数值增加指定的数值,可以是浮点数。
语法:
INCRBYFLOAT key increment
参数:
increment:增加的数值。
返回值:
数值:增加后的键值。
ERROR:键值不能转化为数值。
例子:
redis.coe2coe.me:6379> set a 10
OK
redis.coe2coe.me:6379> incrbyfloat a 100.123
"110.123"
redis.coe2coe.me:6379> get a
"110.123"
redis.coe2coe.me:6379> del nosuchkey
(integer) 1
redis.coe2coe.me:6379> incrbyfloat nosuchkey 100.123
"100.123"
redis.coe2coe.me:6379> get nosuchkey
"100.123"
以上是关于Redis学习笔记08Redis数据类型之 字符串类型的主要内容,如果未能解决你的问题,请参考以下文章