• redis我记不住的那些命令(一)


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

    一、键的过期时间

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

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

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

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

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

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

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

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

    1. 127.0.0.1:6379> set age 18
    2. # expire : 设置给定键多少秒后过期,下例:表示60秒后过期
    3. 127.0.0.1:6379> expire age 60
    4. # ttl : 查看给定的键还有多少秒
    5. 127.0.0.1:6379> ttl age
    6. # pttl : 查看给定的键还有多少毫秒
    7. 127.0.0.1:6379> pttl age
    8. # persist : 移除键的过期时间,即 持久
    9. 127.0.0.1:6379> persist age
    10. # expireat : 设定给定键在unix时间戳为过期时间
    11. 127.0.0.1:6379> expireat age 1669640818
    12. # pexpire : 设置给定键多少毫秒后过期
    13. 127.0.0.1:6379> pexpire age 60000
    14. # pexpireat : 设置给定键多少unix时间戳的毫秒后过期
    15. 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

    1. 127.0.0.1:6379> set age 30
    2. 127.0.0.1:6379> set weight 85
    3. 127.0.0.1:6379> set height 175
    4. 127.0.0.1:6379> multi
    5. 127.0.0.1:6379> incr age
    6. 127.0.0.1:6379> incr weight
    7. 127.0.0.1:6379> incr height
    8. 127.0.0.1:6379> exec
    9. 31
    10. 86
    11. 176

    2 . multi/discard

    1. 127.0.0.1:6379> set age 30
    2. 127.0.0.1:6379> set weight 85
    3. 127.0.0.1:6379> set height 175
    4. 127.0.0.1:6379> multi
    5. 127.0.0.1:6379> incr age
    6. 127.0.0.1:6379> incr weight
    7. 127.0.0.1:6379> incr height
    8. 127.0.0.1:6379> discard
    9. 127.0.0.1:6379> get age
    10. 30

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

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

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

    1. 127.0.0.1:6379> set age 200
    2. 127.0.0.1:6379> watch age
    3. 127.0.0.1:6379> multi
    4. # 另外启动一个客户端去修改age
    5. 第二个客户端 127.0.0.1:6379> set age 300
    6. # 然后在原来的客户端执行下面语句
    7. 127.0.0.1:6379> set age 100
    8. 127.0.0.1:6379> exec
    9. 127.0.0.1:6379> get age
    10. 300

  • 相关阅读:
    HJ108 求最小公倍数
    Shell(2)数值运算与判断
    Java 多线程编程
    Java使用正则表达式判断独立字符的存在
    redis的原理和源码-redis的六种数据类型基本介绍:string、hash、list、set、zset、stream
    【Node.js】Express-Generator:快速生成Express应用程序的利器
    【C++设计模式之备忘录模式:行为型】分析及示例
    论文解读(KP-GNN)《How Powerful are K-hop Message Passing Graph Neural Networks》
    java面向对象02——常见的设计模式
    数据结构(一)—— 数据结构简介
  • 原文地址:https://blog.csdn.net/u010566813/article/details/128086499