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','有吗?')