Redis笔记3:数据类型之字符串(String)

   

命令描述语法
Set赋值SET key value
Get 获取值GET key
APPEND追加字符串APPEND key value
STRLEN返回key的长度STRLEN key
INCR数值加一INCR key
INCRBY设置增加数值的步长INCRBY key increment
DECR数值减一DECR key
DECRBY设置减少数值的步长DECRBY key decrement
SETRANGE  字符串替换SETRANGE key start "value"
GETRANGE   截取字符串GETRANGE key start end
SETEX设置key在服务器中存在的时间SETEX key seconds value
SETNXKey不存在设置值,否则不做操作SETNX key value
MSET设置多个key、valueMSET key value [key value ...]
MGET返回多个key的值MGET key [key ...]
MSETNXKey不存在设置多个key、value值,否则不做操作MSETNX key value  [key value ...]
GETSET先获取旧值再赋新值GETSET key value


1、SET key value 将字符串值value关联到key。如果key已经持有其他值,SET就覆写就值,无视类型。

返回值: SET 在设置操作成功完成时,才返回 OK 。
SET 命令的行为可以通过一系列参数来修改: 
EX second :设置键的过期时间为 second 秒。
PX millisecond :设置键的过期时间为 millisecond 毫秒。
NX :只在键不存在时,才对键进行设置操作。
XX :只在键已经存在时,才对键进行设置操作。
示例:
# 对不存在的key进行设置
127.0.0.1:6379> SET k1 1
OK
127.0.0.1:6379> GET k1
"1"

# 对已存在的key进行设置

127.0.0.1:6379> SET k2 "value2"
OK
127.0.0.1:6379> GET k2
"value2"
# 使用EX选项,设置键的过期时间为 second 秒。
127.0.0.1:6379> SET k3 3 EX 86400
OK
127.0.0.1:6379> GET k3
"3"
127.0.0.1:6379> TTL k3
(integer) 86387
127.0.0.1:6379> SET k3 33
OK
# 使用PX选项,设置键的过期时间为 millisecond 毫秒。
127.0.0.1:6379> SET k4 4 PX 86400
OK
127.0.0.1:6379> GET k4
"4"
127.0.0.1:6379> PTTL k4
(integer) 68219
# 使用NX选项,只在键不存在时,才对键进行设置操作。
127.0.0.1:6379> SET k5 5 NX
OK
127.0.0.1:6379> GET k5
"5"
127.0.0.1:6379> SET k5 "k55" NX 
(nil)
127.0.0.1:6379> GET k5
"4"

# 使用XX选项,只在键已经存在时,才对键进行设置操作。

127.0.0.1:6379> EXISTS k6
(integer) 0
127.0.0.1:6379> SET k6 6 XX
(nil)
127.0.0.1:6379> SET k6 6
OK
127.0.0.1:6379> SET k6 "xx666" XX
OK
127.0.0.1:6379> GET k6
"xx666"

# NX 或 XX 可以和 EX 或者 PX 组合使用

127.0.0.1:6379>  SET key-nx "hello" EX 10086 NX
OK
127.0.0.1:6379> GET key-nx
"hello"
127.0.0.1:6379>  TTL key-nx
(integer) 10075
127.0.0.1:6379> SET key-xx "old value"
OK
127.0.0.1:6379> SET key-xx "new value" PX 123321 XX
OK
127.0.0.1:6379>  GET key-xx
"new value"
127.0.0.1:6379>  PTTL key-xx
(integer) 107932

# EX 和 PX 可以同时出现,但后面给出的选项会覆盖前面给出的选项

127.0.0.1:6379>  SET key "value" EX 1000 PX 5000000			# 这是 EX 参数设置的值
OK
127.0.0.1:6379> TTL key
(integer) 4993  
127.0.0.1:6379>  SET another-key "value" PX 5000000 EX 1000		# 这是 EX 参数设置的值
OK
127.0.0.1:6379>  TTL another-key
(integer) 995


2、GET key   返回 key 所关联的字符串值。
返回值:如果 key 不存在时,返回 nil ,否则,返回 key 的值。 如果 key 不是字符串类型,那么返回一个错误。
示例:
127.0.0.1:6379> GET key11
(nil)
127.0.0.1:6379> SET key11 123
OK
127.0.0.1:6379> get key11
"123" 


3、APPEND key value   如果 key 已经存在并且是一个字符串,APPEND 命令将 value 追加到 key 原来的值的末尾。 如果 key 不存在,APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。
返回值:追加 value 之后,key 中字符串的长度。
示例:
127.0.0.1:6379> EXISTS myappend
(integer) 0
127.0.0.1:6379> APPEND myappend "redis—append-key"
(integer) 16
127.0.0.1:6379>  APPEND myappend " - mc114e" 
(integer) 25
127.0.0.1:6379> GET myappend
"redis—append-key - mc114e"


4、STRLEN key  返回 key 所储存的字符串值的长度。
返回值:字符串值的长度。 当 key 不存在时,返回 0 。
示例:
127.0.0.1:6379> SET mykey "Hello Redis"
OK
127.0.0.1:6379> STRLEN mykey
(integer) 11
127.0.0.1:6379> STRLEN nokey
(integer) 0


5、INCR key   将  key 中储存的数字值增一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行INCR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 

返回值:执行INCR 命令之后 key 的值。
示例:
127.0.0.1:6379> set count 20
OK
127.0.0.1:6379> INCR count
(integer) 21
127.0.0.1:6379> get count
"21"
127.0.0.1:6379> set name hello
OK
127.0.0.1:6379> INCR name
(error) ERR value is not an integer or out of range
127.0.0.1:6379> get name
"hello"


6、INCRBY key increment   将 key 所储存的值加上增量 increment 。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行INCRBY 命令。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。本操作的值限制在 64 位 (bit) 有符号数字表示之内。
返回值:加上 increment 之后,key 的值。
示例:
127.0.0.1:6379> SET rank 50
OK
127.0.0.1:6379> INCRBY rank 20
(integer) 70
127.0.0.1:6379> EXISTS counter
(integer) 0
127.0.0.1:6379> INCRBY counter 30
(integer) 30


7、DECR key   将 key 中储存的数字值减一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行DECR 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。本操作的值限制在 64 位 (bit) 有符号数字表示之内。 
返回值:执行DECR 命令之后 key 的值。
示例:

127.0.0.1:6379> SET failure_times 10
OK
127.0.0.1:6379> DECR failure_times
(integer) 9
127.0.0.1:6379> EXISTS count
(integer) 0
127.0.0.1:6379> DECR count
(integer) -1


8、DECRBY key decrement  将 key 所储存的值减去减量 decrement 。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行DECRBY 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。本操作的值限制在 64 位 (bit) 有符号数字表示之内。 

返回值: 减去 decrement 之后,key 的值。
示例:

127.0.0.1:6379> SET count 100
OK
127.0.0.1:6379>  DECRBY count 20
(integer) 80
127.0.0.1:6379>  EXISTS pages
(integer) 0
127.0.0.1:6379>  DECRBY pages 10
(integer) -10


9、SETRANGE key offset value  用 value 参数覆写 (overwrite) 给定 key 所储存的字符串值,从偏移量 offset 开始。不存在的 key 当作空白字符串处理。 
返回值:被SETRANGE 修改之后,字符串的长度。
示例:

127.0.0.1:6379> SET greeting "hello world"
OK
127.0.0.1:6379> SETRANGE greeting 6 "Redis"
(integer) 11
127.0.0.1:6379> GET greeting
"hello Redis"
127.0.0.1:6379> EXISTS empty_string
(integer) 0
127.0.0.1:6379> SETRANGE empty_string 5 "Redis!" 
(integer) 11
127.0.0.1:6379> GET empty_string
"\x00\x00\x00\x00\x00Redis!"


10、GETRANGE key start end  返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移量决定 (包括 start 和 end在内)。负数偏移量表示从字符串最后开始计数,-1 表示最后一个字符,-2 表示倒数第二个,以此类推。
返回值: 截取得出的子字符串。
示例:

127.0.0.1:6379> SET greeting "hello, my friend"
OK
127.0.0.1:6379>  GETRANGE greeting 0 4      		# 返回索引 0-4 的字符,包括 4。
"hello"
127.0.0.1:6379>  GETRANGE greeting -1 -5    		# 不支持回绕操作
""
127.0.0.1:6379>  GETRANGE greeting -3 -1    		# 负数索引
"end"
127.0.0.1:6379> GETRANGE greeting 0 -1      		# 从第一个到最后一个
"hello, my friend"
127.0.0.1:6379>  GETRANGE greeting 0 1008611    	# 值域范围不超过实际字符串,超过部分自动被忽略
"hello, my friend"


11、SETEX key seconds value  将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。如果 key 已经存在,SETEX 命令将覆写旧值。
这个命令类似于以下两个命令: 
SET key value 
EXPIRE key seconds # 设置生存时间 
不同之处是,SETEX 是一个原子性 (atomic) 操作,关联值和设置生存时间两个动作会在同一时间内完成,该命令在 Redis 用作缓存时,非常实用。 

返回值:设置成功时返回 OK 。当 seconds 参数不合法时,返回一个错误。
示例:

127.0.0.1:6379> SETEX key1 86400 1			# 在 key 不存在时进行 SETEX
OK
127.0.0.1:6379> GET key1
"1"
127.0.0.1:6379> TTL key1					# 剩余生存时间
(integer) 86390     


127.0.0.1:6379> SET key2 2		
OK
127.0.0.1:6379> SETEX key2 86400 "key_2"	# key 已经存在时,SETEX 覆盖旧值
OK
127.0.0.1:6379> GET key2
"key_2"
127.0.0.1:6379> TTL key2					# 剩余生存时间
(integer) 86388


12、SETNX key value  将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则SETNX 不做任何动作。 SETNX 是『SET if Not eXists』(如果不存在,则 SET) 的简写。 
返回值:设置成功,返回 1 。 设置失败,返回 0 。
示例:

127.0.0.1:6379> EXISTS key_nx
(integer) 0
127.0.0.1:6379> SETNX key_nx abc
(integer) 1
127.0.0.1:6379> SETNX key_nx "key_nx"
(integer) 0
127.0.0.1:6379> GET key_nx
"abc"


13、MSET key value [key value …]同时设置一个或多个 key-value 对。如果某个给定 key 已经存在,那么MSET 会用新值覆盖原来的旧值,如果这不是你所希望的效果,请考虑使用MSETNX 命令:它只会在所有给定 key 都不存在的情况下进行设置操作。
返回值:总是返回 OK (因为 MSET 不可能失败)。
示例:

127.0.0.1:6379> MSET k1 1 k2 2 k3 3 
OK
127.0.0.1:6379> MGET k1 k2 k3
1) "1"
2) "2"
3) "3"


14、MGET key [key …] 返回所有 (一个或多个) 给定 key 的值。如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。因此,该命令永不失败。 
返回值: 一个包含所有给定 key 的值的列表。

示例:
127.0.0.1:6379> MSET k1 1 k2 2 k3 3
OK
127.0.0.1:6379> MGET k1 k2 k4
1) "1"
2) "2"
3) (nil) 


15、MSETNX key value [key value …] 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。即使只有一个给定 key 已存在,MSETNX 也会拒绝执行所有给定 key 的设置操作。 
返回值:当所有 key 都成功设置,返回 1 。如果所有给定 key 都设置失败 (至少有一个 key 已经存在),那么返回 0 。
示例:
127.0.0.1:6379> msetnx uname "lisi" uage 33 uemail "12306@163.com"
(integer) 1
127.0.0.1:6379> MGET uname uage uemail
1) "lisi"
2) "33"
3) "12306@163.com"
127.0.0.1:6379> MSETNX uname "zhangsan" ugender 1
(integer) 0
127.0.0.1:6379> EXISTS ugender
(integer) 0
127.0.0.1:6379> get uname
"lisi"


16、GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值 (old value)。当 key 存在但不是字符串类型时,返回一个错误。 
返回值:返回给定 key 的旧值。当 key 没有旧值时,也即是,key 不存在时,返回 nil 。
示例:

127.0.0.1:6379> EXISTS db
(integer) 0
127.0.0.1:6379> GETSET db mongodb
(nil)
127.0.0.1:6379> GET db
"mongodb"
127.0.0.1:6379> GETSET db redis
"mongodb"
127.0.0.1:6379> GET db
"redis"



(完毕)



转载:http://blog.csdn.net/thinkercode/article/details/46538173
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值