redis之字符串系列之一

21 篇文章 0 订阅

字符串类型是Redis最基础的数据结构。首先键都是字符串类型,而且其他几种数据结构都是在字符串类型基础上构建的,所以字符串类型能为其他四种数据结构的学习奠定基础。如图2-7所示,字符串类型的值实际可以是字符串(简单的字符串、复杂的字符串(例如JSON、XML))、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能超过512MB


目录

set

setnx

setex

psetex:


set

1.语法:

set key value [EX seconds] [PX milliseconds] [NX|XX]
将字符串的value关联到key.如果存在的话,直接覆盖掉
2.参数解析:
EX seconds:设置键的过期时间秒。执行set key value Ex seconds和setex key seconds value一样。
PX milliseconds:过期时间用毫秒设置。set key value PX milliseconds和psetex key milliseconds value一样。
NX:只在键不存在的时候,才对键进行设置操作,相当于添加。set key value NX和setnx key value一样。
XX:只在键已经存在时,才对键进行设置操作,相当于更新。
set可以通过参数实现setnx、setex、psetex,所以未来版本可能会移除掉。
3.返回值:
2.6.12以前总是返回OK
2.6.12开始,成功时返回OK ,否则返回空回复
4.代码示例:
不存在的键进行设置:

set m "Hello"
get m

已存在的键进行设置:

set m "World"
get m

返回:"World"
使用EX选项(设置过期时间秒):

set m "hello" EX 300
get m
TTL m(查看还剩多少秒过期)

使用PX选项(设置过期时间毫秒):

set m "hello" PX 456654
get m
PTTL m(查看还剩多少毫秒过期)

使用NX选项(键不存在时设置,已经存在的话设置无效):

set m "hello" NX
get m
set m "world" NX
get m
返回:"hello"

使用XX选项(键存在时设置,不存在时设置无效):

exists m
set m "hello" XX
set m "hello"
set m "world" XX
get m
返回:"world"

setnx

1.语法:

setnx key value
只在键不存在的情况下,将键key的值设置为value.
若键存在,不做任何动作
2.返回值:
成功时返回1,否则0
3.例子:

exists m
setnx m "hello"
setnx m "world"
get m
返回:"hello"

setex

1.语法

setex key seconds value
将键key的值设置为value,并将key的生存时间设置为seconds秒
如果键存在,将会被覆盖掉。
setex和下面两个命令类似:

set key value
expire key seconds

不同之处:
setex是一个原子性的操作,它可以在同一时间内完成设置值和过期时间这两个操作,因此它在存储缓存的时候非常实用
2.返回值:
成功返回OK,当时间不合法时,返回一个错误。
3.例子:
在键key不存在的时候,执行setex:

setex m 60 "hello"
get m
TTL m

键已经存在,实用setex覆盖旧值:

set m "hello"
setex m 60 "world"
get m 
TTL m

psetex:

1.语法

psetex key milliseconds value
和setex类似,它的单位是毫秒
2.返回值:
成功返回OK

3.例子:

psetex m 10000 "hello"
PTTL m
get m

setnx和setxx实际中应用场景:

以setnx为例子:由于Redis单线程命令处理机制,如果有多个客户端同时设置setnx key value,setnx特性只有一个客户端能设置成功,setnx可以作为分布锁的一种实现方案,Redis官方给出了使用setnx实现分布式锁的方法:http://redis.io/topics/distlock

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值