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

注意:EXPX不能同时使用。

 

 

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数据类型之 字符串类型的主要内容,如果未能解决你的问题,请参考以下文章

Redis学习笔记

Redis学习笔记13Redis数据类型之HyperLogLogs类型

Redis学习笔记10Redis数据类型之 链表类型

Redis学习笔记-数据类型之string类型

Redis学习笔记09Redis数据类型之 哈希表类型

Redis学习笔记系列目录