redis我记不住的那些命令(一)
·
背景:我记不住那么多命令,又是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
更多推荐

所有评论(0)