背景:我记不住那么多命令,又是Linux命令,又是Git命令,又是kubernetes的命令,又是maven命令,又是redis命令。所谓好记性不如烂笔头,记下来吧。

一、键的过期时间

expire : 设置给定键多少秒后过期

ttl : 查看给定的键还有多少秒

pttl : 查看给定的键还有多少毫秒

persist : 移除键的过期时间,即 持久

expireat : 设定给定键在unix时间戳为过期时间

pexpire : 设置给定键多少毫秒后过期

pexpireat : 设置给定键多少unix时间戳的毫秒后过期

注意:调用expire/pexpire以及 expireat/pexpireat 设定一个非正数的值将直接被删除,而不是失效。也就是说 设定0 或者 负数会导致删除操作。

127.0.0.1:6379> set age 18

# expire : 设置给定键多少秒后过期,下例:表示60秒后过期
127.0.0.1:6379> expire age 60

# ttl : 查看给定的键还有多少秒
127.0.0.1:6379> ttl age

# pttl : 查看给定的键还有多少毫秒
127.0.0.1:6379> pttl age

# persist : 移除键的过期时间,即 持久
127.0.0.1:6379> persist age

# expireat : 设定给定键在unix时间戳为过期时间
127.0.0.1:6379> expireat age  1669640818

# pexpire : 设置给定键多少毫秒后过期
127.0.0.1:6379> pexpire age 60000

# pexpireat : 设置给定键多少unix时间戳的毫秒后过期
127.0.0.1:6379> pexpireat age 1669640818000

二、redis事务(multi、exec、discard、watch、unwatch)

multi  : 表示事务开始

exec  : 表示事务输入完毕,开始执行

discard : 表示放弃之前输入的命令,并关闭事务,清除事务的上下文。

watch : 监视一个key或多个key,如果事务执行之前被其他命令改动,则事务将会被打断。

unwatch : 解除监视一个key或多个key

事务一般具有四大特性: 原子性、一致性、隔离性、永久性

redis事务的特点是: 首先,它不是真正的事务,因为它无法做到要么全部执行,要么全部取消。还有,它也不支持回滚,如下图所示:

是说重要注意的是 即使队列中某一个命令执行错误,其他在队列里面的命令也被处理,不会停止执行命令

 

对于回滚,redis不支持事务回滚,因为支持回滚在简单性和性能上有巨大的影响。

1 . multi/exec

127.0.0.1:6379> set age 30
127.0.0.1:6379> set weight 85
127.0.0.1:6379> set height 175
127.0.0.1:6379> multi
127.0.0.1:6379> incr age
127.0.0.1:6379> incr weight
127.0.0.1:6379> incr height
127.0.0.1:6379> exec
31
86
176

2 . multi/discard

127.0.0.1:6379> set age 30
127.0.0.1:6379> set weight 85
127.0.0.1:6379> set height 175
127.0.0.1:6379> multi
127.0.0.1:6379> incr age
127.0.0.1:6379> incr weight
127.0.0.1:6379> incr height
127.0.0.1:6379> discard
127.0.0.1:6379> get age
30

3. watch/unwatch 监视一个或多个key,如果有变化,这个事务将会被打断。

这里涉及到乐观锁的概念,乐观锁严格意义上来说是一种监视的方法,再配合某种语言的重试的机制可以实现在一段时间内的重试的功能。

乐观锁的实现就是使用了版本的机制。

127.0.0.1:6379> set age 200
127.0.0.1:6379> watch age
127.0.0.1:6379> multi

# 另外启动一个客户端去修改age
第二个客户端 127.0.0.1:6379> set age 300

# 然后在原来的客户端执行下面语句
127.0.0.1:6379> set age 100
127.0.0.1:6379> exec
127.0.0.1:6379> get age
300

更多推荐