Redis集群与交互以及事务和订阅发布

redis集群

为什么搭建集群?

1.为了突破内存存储限制

2.可以实现实时备份(同步各节点的数据)

3.当有高并发操作的时候,我们可以让多个主节点执行,减轻服务器压力

4.可以提升存储、查询、修改等操作的效率。

5.可以实现读写分离

6.当一个主节点宕机时,从节点可以变为主节点,但是如果多数节点发生宕机现象,集群就不可用了

7.数据透明

缺点:

不能保证一致性

如何搭建集群?

1.是首先修改个服务器的redis.conf的配置文件

    port 7000

    bind 端口号

    cluster-enabled yes

    cluster-config-file nodes.conf

    cluster-node-timeout 5000

    appendonly yes

    daemonize yes 进程守护 默认是no

    文件中的 cluster-enabled 选项用于开实例的集群模式, 而 cluster-conf-file 选项则设定了保存节点配置文件的路径, 默认值为 nodes.conf.节点配置文件无须人为修改, 它由 Redis 集群在启动时创建, 并在有需要时自动进行更新。

2.修改完毕,启动各节点的redis服务

3.可以再任意服务端创建集群(redis-tirb-rb)

    1.安装依赖:sudo apt-get install ruby

      查看ruby版本,显示说明安装成功:ruby -v

    2.sudo gem install redis

    3.创建集群:

      ./redis-trib.rb create --replicas 1 ip:端口 ip:端口 ip:端口 ....

    4.打印出节点的分配信息(那些为主节点,那些为从节点)

4.开启客户端验证:

可以链接任意主节点的redis的客户端:

redis-cli -c -h 主节点ip -p 主节点端口

交互

首先和其他数据库的交互都是一样的:

导入redis包

然后创建链接:

redis_coon = redis.StrictRedis(host='192.168.43.40',port=6379,db=2)

redis_coon = redis.Redis(host='localhost',port=6379)

其中几个参数的意义:

host='localhost',ip

port=6379  端口

db=0,指定数据库

password=None, 密码

之后就可以像之前一样操作了

例:redis_coon.set('class1804',28)

交互事务

依然使用之前链接的数据库

首先返回一个管道对象

 pipe = redis_coon.pipeline()

然后开启事务

pipe.multi()

存值

pipe.set('age',10)

 pipe.lpush('list',(1,2,3,4,5,6,7,8))

 pipe.hset('students','name','xxx')

time.sleep(5)

最后进行提交

pipe.execute()

订阅

返回一个发布/订阅对象。这个对象,你可以订阅发布通道和侦听消息。

pubsub = redis_coon.pubsub()

订阅频道

pubsub.subscribe('1804')

返回的消息类型如下[b'subscribe', b'1804', 1],表示订阅成功

print(pubsub.parse_response())

发布

发布频道消息

 redis_coon.publish('1804','有吗?')

你可能感兴趣的:(Redis集群与交互以及事务和订阅发布)