• redis学习(五)


    一、Redis 发布订阅

    1、Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

    2、Redis 客户端可以订阅任意数量的频道。

    比如你订阅了银行的频道,当你的资金发生变动时,银行就会通过它的频道给你发送信息,在这里,你是属于被动接收的,而不是向银行索要信息,这个例子中,你就是sub(订阅者),而银行就是pub(发布者)。

    3、java如何操作redis:

    redis是一种缓存数据库,它也是C/S的结构,也就是客户端和服务端,一般来说,在java中,我们通常使用 jedis(客户端)去操作redis(服务端),这其中操作的时候,两者之间肯定要建立连接,就像数据库链接一样,在关系型数据库中,我们一般都维护一个连接池,以达到链接的复用,来省去建立连接和关闭连接的时间。所以在jedis中,同样也存在一个jedispool(jedis连接池)的概念,我们都是从池中去取连接使用。

    4、常用命令

    订阅频道:subscribe chat1
    发布消息:publish chat1 "hell0 ni hao"
    查看频道:pubsub channels
    查看某个频道的订阅者数量: pubsub numsub chat1
    退订指定频道: unsubscrible chat1   , punsubscribe java.*
    订阅一组频道: psubscribe java.*

    二、Redis 事务

    1、Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:

    • 批量操作在发送 EXEC 命令前被放入队列缓存。
    • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
    • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

    单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。

    事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。

    2、一个事务从开始到执行会经历以下三个阶段:

    • 开始事务。 MULTI
    • 命令入队。批量命令
    • 执行事务。EXEC

    4、常用命令

    redis事物:隔离性,原子性, 

    步骤: 开始事务,执行命令,提交事务   

    Multi  开始事务
    DISCARD 取消事务,放弃执行事务块内的所有命令。
    WATCH key [key ...] 监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
    UNWATCH 取消 WATCH 命令对所有 key 的监视。

    EXEC //提交事务

    三、Redis 脚本

    1、Redis 脚本使用 Lua 解释器来执行脚本。 Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL

    2、Eval 命令的基本语法如下:EVAL script numkeys key [key ...] arg [arg ...]

    五、Redis 连接

    Redis 连接命令主要是用于连接 redis 服务。

    六、Redis 服务器

    1、Redis 服务器命令主要是用于管理 redis 服务。

    2、Redis服务器负责与多个客户端建立网络连接,处理客户端发送的命令请求,在数据库中保存客户端执行命令所产生的数据,并通过资源管理来维持服务器自身的运转

    3、命令请求的执行过程

      set key value

      那么从客户端发送set key value 命令到获得回复ok期间,客户端和服务器共需要执行以下操作

      1:客户端向服务器发送命令请求set key value

      2:   服务器接收并处理客户端发来的命令请求 set key value 在数据库中进行设置操作,并产生命令回复ok

      3:服务器将命令回复OK发送给客户端

      4:客户端接收服务器返回的命令回复OK

    借鉴博文:https://www.runoob.com/redis/redis-server.html

         https://www.cnblogs.com/paulversion/p/8320782.html

         https://www.cnblogs.com/cxxjohnson/p/9072383.html

  • 相关阅读:
    CSS – rem, em, px
    CSS – Variables
    go等待子协程完成再结束
    go原生mysql链接
    [恢]hdu 2511
    linux中竖线'|',双竖线‘||’,&和&&的意思
    SSH隧道:端口转发功能详解
    shell脚本执行返回的状态码
    第1章 ssh命令和SSH服务详解
    shell脚本中各种括号的区别以及用法
  • 原文地址:https://www.cnblogs.com/dongtian-blogs/p/10801320.html
Copyright © 2020-2023  润新知