Redis大总结之二:Redis 事务,WATCH命令,生存时间

事务

Ø  MULTI,EXEC操作:事务的开始和结束标记

n 执行Multi命令,redis反馈ok表示开始事务;执行EXEC命令,结束事务,开始顺序执行事务中的操作。

127.0.0.1:6379[5]> MULTI

OK

127.0.0.1:6379[5]> set k1 1

QUEUED

127.0.0.1:6379[5]> set k2 2

QUEUED

127.0.0.1:6379[5]> exec

1) OK

2) OK

127.0.0.1:6379[5]> get k1

"1"

127.0.0.1:6379[5]> get k2

"2"

 

错误处理

Ø  语法错误:执行命令不存在或参数不对,都是语法错误,只有事务中有一处错误,redis执行exec命令后,会直接返回错误,正确的命令也不会被执行。

127.0.0.1:6379[5]> multi

OK

127.0.0.1:6379[5]> set name zhangsan

QUEUED

127.0.0.1:6379[5]> sss age 10

(error) ERR unknown command 'sss'

127.0.0.1:6379[5]> set sex nan

QUEUED

127.0.0.1:6379[5]> exec

(error) EXECABORT Transaction discarded because of previous errors.

127.0.0.1:6379[5]> get name

(nil)

127.0.0.1:6379[5]> get sex

(nil)

 

Ø  运行错误:此类错误执行命令没错,但是操作对应的键有误,会造成运行时才会发现的错误,但是不影响其它正确命令的执行。

127.0.0.1:6379[5]> multi

OK

127.0.0.1:6379[5]> set k 10

QUEUED

127.0.0.1:6379[5]>sadd k 20//使用散列集合的命令操作strings类型数据

QUEUED

127.0.0.1:6379[5]> set k 100

QUEUED

127.0.0.1:6379[5]> exec

1) OK

2) (error) WRONGTYPE Operation against a key holding the wrong kind of value

3) OK

127.0.0.1:6379[5]> get k

"100"

 

WATCH命令

监控指定键,若被监控的键在以下事务执行前被修改,则包含对此键有操作动作的事务不执行,返回nil。

 

127.0.0.1:6379[5]> get k

"20"

127.0.0.1:6379[5]> set k 30

OK

127.0.0.1:6379[5]>watch k

OK

127.0.0.1:6379[5]> set k 40

OK

127.0.0.1:6379[5]> multi

OK

127.0.0.1:6379[5]> set k 50

QUEUED

127.0.0.1:6379[5]> exec

(nil)

127.0.0.1:6379[5]> get k

"40"

 

生存时间

Ø  EXPIRE操作:设置一个键的生存时间,单位是秒,到时间后redis会自动删除它。

127.0.0.1:6379[5]> set name zhangsan

OK

127.0.0.1:6379[5]>expire name 10//生存时间为10s

(integer) 1

127.0.0.1:6379[5]> ttl name

(integer) 6

127.0.0.1:6379[5]> ttl name//TTL命令可以查看剩余的生存时间,剩余秒数

(integer) 2

127.0.0.1:6379[5]> ttl name

(integer) -2

127.0.0.1:6379[5]> get name

(nil)//name键已被redis删除

 

Ø  PERSIST操作:撤销键的生存时间,恢复为永久的键。   

 

OK

127.0.0.1:6379[5]> set name lisi

OK

127.0.0.1:6379[5]> expire name 10

(integer) 1

127.0.0.1:6379[5]>persist name

(integer) 1

127.0.0.1:6379[5]> ttl name

(integer) -1

127.0.0.1:6379[5]> get name

"lisi"

 

Ø  PEXPIRE操作:设置一个键的生存时间,单位是毫秒,到时间后redis会自动删除它。

127.0.0.1:6379[5]> pexpire name 10000

(integer) 1

127.0.0.1:6379[5]> pttl name  // PTTL命令可以查看剩余的生存时间,剩余毫秒数

(integer) 7139

127.0.0.1:6379[5]> pttl name

(integer) 2760

127.0.0.1:6379[5]> pttl name

(integer) -2


更多:

Redis大总结之一:Redis 五大数据类型及操作


 ----------------------------完----------------------------------


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值