Redis——String数据类型

string是redis最基本的类型,你能够理解成与Memcached如出一辙的类型,一个key对应一个value。redis

string类型是二进制安全的。意思是redis的string能够包含任何数据。好比jpg图片或者序列化的对象 。mongodb

string类型是Redis最基本的数据类型,一个键最大能存储512MB。安全

 

string基本命令对象

一、SET key value图片

设置指定key的值,若是 key 已经存储其余值, SET 就覆写旧值,且无视类型。字符串

在 Redis 2.6.12 之前版本, SET 命令老是返回 OK 。get

从 Redis 2.6.12 版本开始, SET 在设置操做成功完成时,才返回 OK。string

 

二、GET key_nameit

 Get 命令用于获取指定 key 的值。若是 key 不存在,返回 nil 。若是key 储存的值不是字符串类型,返回一个错误。test

 

三、GETRANGE key_name  start end

Getrange 命令用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。返回截取获得的子字符串。

redis 127.0.0.1:6379> SET mykey "This is my test key"
OK
redis 127.0.0.1:6379> GETRANGE mykey 0 3
"This"
redis 127.0.0.1:6379> GETRANGE mykey 0 -1
"This is my test key"

 

四、GETSET key_name value

Getset 命令用于设置指定 key 的值,并返回 key 的旧值。

返回给定 key 的旧值。 当 key 没有旧值时,即 key 不存在时,返回 nil 。

当 key 存在但不是字符串类型时,返回一个错误。

redis> GETSET db mongodb    # 没有旧值,返回 nil
(nil)

redis> GET db
"mongodb"

redis> GETSET db redis      # 返回旧值 mongodb
"mongodb"

redis> GET db
"redis"

 

五、GETBIT key_name offset

Getbit 命令用于对 key 所储存的字符串值,获取指定偏移量上的位(bit)。返回字符串值指定偏移量上的位(bit)。当偏移量 OFFSET 比字符串值的长度大,或者 key 不存在时,返回 0 。

# 对不存在的 key 或者不存在的 offset 进行 GETBIT, 返回 0

redis> EXISTS bit
(integer) 0

redis> GETBIT bit 10086
(integer) 0


# 对已存在的 offset 进行 GETBIT

redis> SETBIT bit 10086 1
(integer) 0

redis> GETBIT bit 10086
(integer) 1

 

六、MGET key1  key2  ...keyN

 Mget 命令返回全部(一个或多个)给定 key 的值。 若是给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil ,返回一个包含全部给定 key 的值的列表。

redis 127.0.0.1:6379> MGET key1 key2 someOtherKey
1) "Hello"
2) "World"
3) (nil)

 

七、SETBIT KEY_NAME OFFSET

 Setbit 命令用于对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。返回指定偏移量原来储存的位。

redis> SETBIT bit 10086 1
(integer) 0

redis> GETBIT bit 10086
(integer) 1

redis> GETBIT bit 100   # bit 默认被初始化为 0
(integer) 0

八、SETEX key seconds value

将值value关联到key,并将key的过时时间设为seconds(以秒为单位),设置成功,返回OK。

redis 127.0.0.1:6379> SETEX mykey 60 redis
OK
redis 127.0.0.1:6379> TTL mykey
60
redis 127.0.0.1:6379> GET mykey
"redis

九、SETNX key value

只有在key不存在时设置key的值。设置成功,返回1,设置失败,返回0。

 

十、SETRANGE key offset value

用value参数覆写给定key所存储的字符串值,从偏移offset位置开始。

 

十一、STRLEN key_name

获取指定key所存储的字符串的长度。当key存储的不是字符串时,返回一个错误。当key不存在时,返回0.

# 获取字符串的长度

redis> SET mykey "Hello world"
OK

redis> STRLEN mykey
(integer) 11


# 不存在的 key 长度为 0

redis> STRLEN nonexisting
(integer) 0

 

十二、MSET key value [key value]

同时设置一个或多个key-value对,老是返回OK。

redis 127.0.0.1:6379> MSET key1 "Hello" key2 "World"
OK
redis 127.0.0.1:6379> GET key1
"Hello"
redis 127.0.0.1:6379> GET key2
1) "World"

 

1三、MSETNX key value [key value]

同时设置一个或多个key-value对,当且仅当全部给定key都不存在。

当全部 key 都成功设置,返回 1 。 若是全部给定 key 都设置失败(至少有一个 key 已经存在),那么返回 0 。

1四、PSETEX key milliseconds value

 Psetex 命令以毫秒为单位设置 key 的生存时间。设置成功时返回 OK 。

redis 127.0.0.1:6379> PSETEX mykey 1000 "Hello"
OK
redis 127.0.0.1:6379> PTTL mykey
999
redis 127.0.0.1:6379> GET mykey
1) "Hello"

 

1五、INCR key_name

将key中储存的数字值增一。

若是 key 不存在,那么 key 的值会先被初始化为 0 ,而后再执行 INCR 操做。若是值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操做的值限制在 64 位(bit)有符号数字表示以内。返回执行INCR命令以后key的值。

redis> SET page_view 20
OK

redis> INCR page_view
(integer) 21

redis> GET page_view    # 数字值在 Redis 中以字符串的形式保存
"21"

 

1六、INCRBY KEY_NAME INCR_AMOUNT

 Incrby 命令将 key 中储存的数字加上指定的增量值。

若是 key 不存在,那么 key 的值会先被初始化为 0 ,而后再执行 INCRBY 命令。

若是值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操做的值限制在 64 位(bit)有符号数字表示以内。返回加上指定的增量值以后,key的值。

# key 存在且是数字值

redis> SET rank 50
OK

redis> INCRBY rank 20
(integer) 70

redis> GET rank
"70"


# key 不存在时

redis> EXISTS counter
(integer) 0

redis> INCRBY counter 30
(integer) 30

redis> GET counter
"30"

 

1七、INCRBYFLOAT key_name incr_amount

Incrbyfloat 命令为 key 中所储存的值加上指定的浮点数增量值。

若是 key 不存在,那么 INCRBYFLOAT 会先将 key 的值设为 0 ,再执行加法操做。

返回执行命令以后key的值。

# 值和增量都是指数符号

redis> SET mykey 314e-2
OK

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

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

 

1八、DECR key_name

Decr 命令将 key 中储存的数字值减一。若是 key 不存在,那么 key 的值会先被初始化为 0 ,而后再执行 DECR 操做。若是值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操做的值限制在 64 位(bit)有符号数字表示以内。返回命令以后key的值。

# 对存在的数字值 key 进行 DECR

redis> SET failure_times 10
OK

redis> DECR failure_times
(integer) 9


# 对不存在的 key 值进行 DECR

redis> EXISTS count
(integer) 0

redis> DECR count
(integer) -1


# 对存在但不是数值的 key 进行 DECR

redis> SET company YOUR_CODE_SUCKS.LLC
OK

redis> DECR company
(error) ERR value is not an integer or out of range

 

1九、DECRBY  KEY_NAME DECREMENT_AMOUNT

Decrby 命令将 key 所储存的值减去指定的减量值。

若是 key 不存在,那么 key 的值会先被初始化为 0 ,而后再执行 DECRBY 操做。

若是值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操做的值限制在 64 位(bit)有符号数字表示以内。返回减去指定减量值以后,key的值。

# 对已存在的 key 进行 DECRBY

redis> SET count 100
OK

redis> DECRBY count 20
(integer) 80


# 对不存在的 key 进行DECRBY

redis> EXISTS pages
(integer) 0

redis> DECRBY pages 10
(integer) -10

 

20、APPEND KEY_NAME NEW_VALUE

Append 命令用于为指定的 key 追加值。

若是 key 已经存在而且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。

若是 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 同样。

返回追加指定值以后,key中字符串的长度。

# 对不存在的 key 执行 APPEND

redis> EXISTS myphone               # 确保 myphone 不存在
(integer) 0

redis> APPEND myphone "nokia"       # 对不存在的 key 进行 APPEND ,等同于 SET myphone "nokia"
(integer) 5                         # 字符长度


# 对已存在的字符串进行 APPEND

redis> APPEND myphone " - 1110"     # 长度从 5 个字符增长到 12 个字符
(integer) 12

redis> GET myphone
"nokia - 1110"
相关文章
相关标签/搜索