• redis事务和redis集群


    一、事务(相对mysql来说简单)

    1. 比较

          

     ①:mysql   ----->start trantation ---->普通sql ------->回滚rollback------>commit
    
     ②:redis -------> multi-(放入queue队列)-->普通命令----->discard (取消,不是真正的回滚感觉) ---->exec

    2. 注

    rollback与discard的区别
    
       如果已经成功执行2条语句,第3条语句出错RollBack后,
    
          ①:前两条语句影响会消失
          ②:Discard只是结束本次事务(第三条失败,其他两条不影响),前两条语句造成的影响仍然存在


    在mutil后面的语句中,语句出错可能有两种情况
    1. 语法就有问题,这种exec时,报错,所有语句得不到执行
    2. 语法本身没错,但使用对象有问题,比如zadd操作list对象,exec之后,会执行正确的语句,并跳过有不适当的语句

    watch key1 key2 ....keyn 监视key有没有变化,如果有变,则事务取消

    unwatch 取消所有watch监视

    二、 发布订阅

    ①:publish aa ‘aa’  发布消息 (publish aa ‘aa’

    ②:subscribe aa  订阅消息
    ③:psubscribe aa   订阅消息,模糊匹配(aabb也可以接收到)

    三、集群搭建

    1. 主从备份,防止主机宕机

    2. 读写分离,分担master的任务

    3. 任务分离,如从服务分别分担备份工作与计算工作

    4. 

    ①:cp redis.conf redis210.conf
    ②:cp redis.conf redis211.conf

    ③:pkill -9 redis

    ④:vim redis.conf 修改配置文件
    --slave1配置
    pidfile /var/run/redis211.pid
        port 8031
        dbfilename dump211.rdb //快照(很浪费io,所以一台有rdb)
        slaveof localhost 8030 //作为8030的slave,也就是8030端口为master slaveof <masterip> <masterport>
        slave-read-only yes //只读
         --slave2配置
        pidfile /var/run/redis212.pid
        port 8032
        #save 900 1 //注释三个save是为了取消使用rdb
        #save 300 10
        #save 60 3000
        appendonly no //关闭aof(日志持久化)
        slaveof localhost 8030
        --master配置
        #save 900 1 //注释三个save是为了取消使用rdb
        #save 300 10
        #save 60 3000

    ⑤:
      ./bin/redis-server redis.conf
      ./bin/redis-server redis211.conf
      ./bin/redis-server redis212.conf

    ⑥:测试
      ./bin/redis-cli //先链接主服务器
        set title an
      ./bin/redis-cli -p 8031 //链接8031 redis服务器
        get title
        --set pic //因为只读所以报错


    ⑦:master设置连接密码:requirepass passwd
      slave设置连接master的密码:masterauth passwd


    ⑧:auth passwd

    ⑨:pkill -9 redis 杀掉redis进程

    ⑩:bind:可以绑定允许访问数据库的地址,只能绑定一个地址



    ⑬⑫

     5. 主从复制缺陷

      每次slave断开后(无论是主动断开,还是网络故障等)再连接master,都要master全部dump出来rdb,再aof,即同步的过程都要重新执行1遍,所以要记住,多台slave不要一下启动起来,否则master可能IO剧增。

        

  • 相关阅读:
    添加事件(jquery)
    闭包导致的问题
    学习之js绑定事件
    第二条 一个类如果有多个参数,考虑用Builder构造者模式
    用Intellij IDEA 创建第一个maven项目!
    OrderSessionHelper查看订单在session是否存在的辅助类
    css——overflow
    css——盒子
    css——外部样式
    css——权重叠加
  • 原文地址:https://www.cnblogs.com/an5211/p/7269547.html
Copyright © 2020-2023  润新知