redis发布订阅

摘要:
三个角色,提供的redis命令1.发布者publish频道消息给频道发消息2.订阅者SUBSCRIBE频道订阅频道PSUBSCRIBE频道*支持模糊匹配的订阅3.频道channel频道名自定义redis持久化之RDB1.在配置文件中添加参数,开启rdb功能redis.conf写入port6379daemonizeyeslogfile/data/6379/redis.logdir/data/6379

三个角色,提供的redis命令

1.发布者
    publish  频道  消息        给频道发消息
2.订阅者
    SUBSCRIBE  频道         订阅频道 
    PSUBSCRIBE 频道*支持模糊匹配的订阅
3.频道
    channel  频道名 自定义

redis持久化之RDB

1.在配置文件中添加参数,开启rdb功能

redis.conf 写入
    port 6379daemonize yes
    logfile /data/6379/redis.log
    dir /data/6379dbfilename   s15.rdb
    save 900 1                    #rdb机制 每900秒 有1个修>改记录
    save 300 10#每300秒        10个修改
    记录
    save 60  10000                #每60秒内        10000修>改记录

2.开启redis服务端,测试rdb功能

redis-server redis.conf 

redis持久化之aof

1.开启aof功能,在redis.conf中添加参数

    port 6379daemonize yes
    logfile /data/6379/redis.log
    dir /data/6379appendonly yes
    appendfsync everysec

2.启动redis服务端,指定aof功能,测试持久化数据

redis不重启之rdb数据切换到aof数据

1.准备rdb的redis服务端

redis-server   s15-redis.conf (注明这是在rdb持久化模式下)

2.切换rdb到aof

redis-cli  登录redis,然后通过命令,激活aof持久化
127.0.0.1:6379>  CONFIG setappendonly yes                #用命令激活aof持久化(临时生效,注意写入到配置文件)
OK
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379>  CONFIG SET save ""             #关闭rdb持久化

2.5 将aof操作,写入到配置文件,永久生效,下次重启后生效

    port 6379daemonize yes 
    logfile /data/6379/redis.log
    dir /data/6379
    #dbfilename   s15.rdb
    #save 900 1#save 300 10#save 60  10000appendonly yes
    appendfsync everysec

3.测试aof数据持久化 ,杀掉redis,重新启动

kill 
redis-server s15-redis.conf 

4.写入数据,检查aof文件

redis的主从同步

1.检查redis数据库信息,主从状态的命令

redis-cli  -p 6379info  检查数据库信息
redis-cli  -p 6379  info  replication  检查数据库主从信息

1.准备三个redis配置文件,通过端口的区分,启动三个redis数据库实例,然后配置主从复制

redis-6379.conf 
    port 6379daemonize yes
    pidfile /data/6379/redis.pid
    loglevel notice
    logfile "/data/6379/redis.log"dbfilename dump.rdb
    dir /data/6379
redis-6380.conf 
#通过命令快速生成配置文件
sed "s/6379/6380/g" redis-6379.conf > redis-6380.conf 
slaveof  127.0.0.1  6379#指明主库的身份ip 和端口

redis-6381.conf 
#通过命令快速生成配置文件
sed "s/6379/6381/g" redis-6379.conf > redis-6381.conf 
slaveof  127.0.0.1  6379

2.启动三个数据库实例,检测redis主从同步方案

3.redis主从赋值,故障手动切换,

    1.杀死6379的主库实例
    kill 主库
    
    2.手动切换主从身份
        1.登录 redis-6380,通过命令,去掉自己的从库身份,等待连接
            slaoveof no one  
        2.登录redis-6381,通过命令,生成新的主任
            slaveof 127.0.0.1 6380  
    
    3.测试新的主从数据同步

redis哨兵

1.什么是哨兵呢?

保护redis主从集群,正常运转,当主库挂掉之后,自动的在从库中挑选新的主库,进行同步

2.redis哨兵的安装配置

1. 准备三个redis数据库实例(三个配置文件,通过端口区分)

        [root@localhost redis-4.0.10]# redis-server redis-6379.conf 
        [root@localhost redis-4.0.10]# redis-server redis-6380.conf 
        [root@localhost redis-4.0.10]# redis-server redis-6381.conf 

2.准备三个哨兵,准备三个哨兵的配置文件(仅仅是端口的不同26379,26380,26381)

-rw-r--r--  1 root root    227 Jan  2 18:44 redis-sentinel-26379.conf
        port 26379dir /var/redis/data/logfile "26379.log"
        sentinel monitor s15master 127.0.0.1 6379 2
        sentinel down-after-milliseconds s15master 30000
        sentinel parallel-syncs s15master 1
        sentinel failover-timeout s15master 180000daemonize yes


    -rw-r--r--  1 root root    227 Jan  2 18:45 redis-sentinel-26380.conf
        快速生成配置文件
        sed "s/26379/26380/g" redis-sentinel-26379.conf >  redis-sentinel-26380.conf 
    -rw-r--r--  1 root root    227 Jan  2 18:46 redis-sentinel-26381.conf
        sed "s/26379/26381/g" redis-sentinel-26379.conf >  redis-sentinel-26381.conf 

3.添加后台运行参数,使得三个哨兵进程,后台运行

[root@localhost redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26379.conf 
[root@localhost redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26380.conf 
[root@localhost redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26381.conf 

4.启动三个哨兵

        1003  redis-sentinel redis-sentinel-26379.conf 
        1007  redis-sentinel redis-sentinel-26380.conf 
        1008  redis-sentinel redis-sentinel-26381.conf 

5.检查哨兵的通信状态

redis-cli -p 26379info sentinel 
    查看结果如下之后,表示哨兵正常
        [root@localhost redis-4.0.10]# redis-cli -p 26379info sentinel 
        # Sentinel
        sentinel_masters:1sentinel_tilt:0sentinel_running_scripts:0sentinel_scripts_queue_length:0sentinel_simulate_failure_flags:0master0:name=s15master,status=ok,address=127.0.0.1:6381,slaves=2,sentinels=3

6.杀死一个redis主库,6379节点,等待30s以内,检查6380和6381的节点状态

kill 6379主节点
    redis-cli -p 6380info replication 
    redis-cli -p 6381info replication 
    如果切换的主从身份之后,(原理就是更改redis的配置文件,切换主从身份)

7.恢复6379节点的数据库,查看是否将6379添加为新的slave身份

redis-cluster安装配置

1.准备6个redis数据库实例,准备6个配置文件redis-{7000....7005}配置文件

    -rw-r--r-- 1 root root 151 Jan  2 19:26 redis-7000.conf
    -rw-r--r-- 1 root root 151 Jan  2 19:27 redis-7001.conf
    -rw-r--r-- 1 root root 151 Jan  2 19:27 redis-7002.conf
    -rw-r--r-- 1 root root 151 Jan  2 19:27 redis-7003.conf
    -rw-r--r-- 1 root root 151 Jan  2 19:27 redis-7004.conf
    -rw-r--r-- 1 root root 151 Jan  2 19:27 redis-7005.conf

2.启动6个redis数据库实例

    [root@localhost s15rediscluster]# redis-server redis-7000.conf 
    [root@localhost s15rediscluster]# redis-server redis-7001.conf 
    [root@localhost s15rediscluster]# redis-server redis-7002.conf 
    [root@localhost s15rediscluster]# redis-server redis-7003.conf 
    [root@localhost s15rediscluster]# redis-server redis-7004.conf 
    [root@localhost s15rediscluster]# redis-server redis-7005.conf

3.配置ruby语言环境,脚本一键启动redis-cluster

1.下载ruby语言的源码包,编译安装
        wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz
    2.解压缩
        ./configure --prefix=/opt/ruby/释放makefile
        make &&make install     编译且安装
    3.下载安装ruby操作redis的模块包
        wget http://rubygems.org/downloads/redis-3.3.0.gem
        
    4.配置ruby的环境变量
    echo $PATH
    
    vim /etc/profile
    写入最底行
    PATH=$PATH:/opt/ruby/bin/读取文件
    source /etc/profile 
    
    5.通过ruby的包管理工具去安装redis包,安装后会生成一个redis-trib.rb这个命令
    一键创建redis-cluster 其实就是分配主从关系 以及 槽位分配 slot槽位分配
    /opt/redis-4.0.10/src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
    
    6.检查节点主从状态
    redis-cli -p 7000info replication 
    
    7.向redis集群写入数据,查看数据流向
    redis-cli -p 7000#这里会将key自动的重定向,放到某一个节点的slot槽位中
    setname  s15 
    setaddr shahe  
    

免责声明:文章转载自《redis发布订阅》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python安装matplotlib:python -m pip install matplotlib报错iOS开发UI篇—多控制器和导航控制器简单介绍下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

log4net.redis+logstash+kibana+elasticsearch+redis 实现日志系统

前端时间写了个随笔 log4net.NoSql +ElasticSearch 实现日志记录 ,因项目原因需要把日志根java平台的同事集成采用logstash+kibana+elasticsearch+redis结构实现日志统计分析,所以需要一个将log4net日志输出到redis的组件。没有找到现成的,就自己动手了。参考了 log4net.NoSql的代...

Python Celery分布式任务队列的安装与介绍(基于Redis)

Celery是一个基于Python编写的分布式任务队列(Distributed Task Queue), 通过对Celery进行简单操作就可以实现任务(耗时任务, 定时任务)的异步处理 一. Celery的安装 Celery4.0版本开始,不支持windows平台 1.1 通过pip方式安装celery pip install -U "Celery[red...

【PHP】你使用过redis做异步队列么,是怎么用的?有什么缺点?

Redis设计主要是用来做缓存的,但是由于它自身的某种特性使得它可以用来做消息队列。 它有几个阻塞式的API可以使用,正是这些阻塞式的API让其有能力做消息队列; 另外,做消息队列的其他特性例如FIFO(先入先出)也很容易实现,只需要一个list对象从头取数据,从尾部塞数据即可; Redis能做消息队列还得益于其list对象blpop brpop接口以及P...

Docker之单多/机容器管理

Compose是用于定义和运行多容器Docker应用程序的工具。通过Compose,您可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。 Docker-Compose 安装: sudo curl -L "https://github.com/docker/compose/releases/download/1....

.net ServiceStack.Redis 性能调优

     最近在debug生产环境的问题时,发现了ServiceStack 4.0.60版本RedisClient存在一个非常严重的性能问题。在高并发下,PooledRedisClientManager.GetClient和Redis.DisposeClient会导致High CPU,并且持续非常长的时间才能自动修复。下面是Demo程序压测还原问题后,工具...

[轉]redis;mongodb;memcache三者的性能比較

先说我自己用的情况: 最先用的memcache ,用于键值对关系的服务器端缓存,用于存储一些常用的不是很大,但需要快速反应的数据 然后,在另一个地方,要用到redis,然后就去研究了下redis. 一看,显示自己安装了php扩展,因为有服务器上的redis服务端,自己本地就没有安装,其实用法和memcache基本一样,可能就是几个参数有所不 同。当然 它们...