事务
Ø 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 |
更多:
----------------------------完----------------------------------