美文网首页
redis的高级特性

redis的高级特性

作者: 剑道_7ffc | 来源:发表于2020-07-23 10:41 被阅读0次

    发布订阅

    特点

    可以使用发布订阅来实现消息队列,但因为发出的消息不会被持久化,所以消费者只能收到从它开始订阅这个频道发之后发布的消息。

    命令

    支持订阅一个或多个具体的频道,也支持正则表达式订阅频道。具体命令请参考
    http://www.redis.cn/commands.html#pubsub

    redis事务

    特点

    执行命令的顺序按照进入队列的顺序执行。

    命令

    multi:开始事务,类似于sql的begin
    exec:执行事务,类似于sql的commit
    discard:取消事务,类似于sql的rollback
    watch:监视,类似于sql的版本号更新,当监视的key在exec执行之前发生修改,则执行事务会失败。

    错误

    1 若先执行一个错误命令,在执行exec,则整个事务拒绝执行即所有的命令都不会执行。
    2 若执行exec后出现错误,则该错误命令会被跳过,继续执行其他命令。

    Lua脚本

    作用

    类似于sql的函数,redis将整个脚本作为一个整体执行,保证其原子性。

    缓存Lua脚本

    先利用script load命令将函数生成摘要,服务端可以通过该摘要获取对应的函数,从而减少了客户端和服务端之前的网络传输消耗。

    命令

    具体命令请参考:http://www.redis.cn/commands.html#scripting

    脚本超时

    因为redis是单线程的,当这个线程因为执行脚本超时或者陷入死循环,redis是如何解决的?
    1 redis提供lua脚本的超时时间,若超过这个时间,redis可以接受命令但不执行命令,以确保脚本的原子性。
    2 若lua脚本没有对redis数据的修改操作,可以通过script kill来终止脚本的执行;反之,若只能通过shutdown nosave来终止脚本的执行。

    相关文章

      网友评论

          本文标题:redis的高级特性

          本文链接:https://www.haomeiwen.com/subject/dmlclktx.html