• 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

  • 相关阅读:
    问题解决:ModuleNotFoundError: No module named ‘skimage‘
    对象存储之:多版本
    这8大优势你都不知道,你敢说你精通单元测试?
    安卓多个listView拖动数据交换位置和拖动
    自动化测试 selenium+Junit 总结知识
    Mysql锁
    模糊控制器实现对某个对象追踪输入
    LeetCode19.删除链表的倒数第N个节点
    Javascript的事件循环机制
    JavaWeb开发-07-MySQL(二)
  • 原文地址:https://blog.csdn.net/u010566813/article/details/128086499