Redis集群实现多机绑定(redis集群 bind)
共享Session
随着互联网的发展,E-commerce和个性化电子系统不断受到消费者的青睐,随之而来的是架构的复杂性。包括大量的用户查询,一但多台服务器同时接收用户请求,就会出现会话保持的问题,相同用户如同访问多台服务器,要怎么做?会链接全部业务服务器,将Session信息写在磁盘上,或者使用Redis服务器作为共享Session存储机制,等都是一种实现方法。
Redis集群可以很好的解决多台服务器的Session保持问题,它可以为多台服务器提供共享Session服务,并且支持多集群的实现。在使用Redis集群前,需要先搭建集群的环境,这里可以使用docker来管理和维护Redis集群,这样可以极大的提高服务器的性能和稳定性:
“` python
from docker import DockerClient
from docker.types import EndpointSpec
client = DockerClient(‘unix://var/run/docker.sock’)
network = client.networks.create(‘my-redis’, driver=’overlay’)
volumes = { ‘/mnt/host_volume1’: {‘bind’: ‘/volume1’} }
redis1 = client.services.create(‘my-redis1’,
image=’redis:latest’,
networks=[network],
volumes=volumes,
endpoint_spec=EndpointSpec(mode=’vip’))
redis2 = client.services.create(‘my-redis2’,
image=’redis:latest’,
networks=[network],
volumes=volumes,
endpoint_spec=EndpointSpec(mode=’vip’))
搭建Redis集群完成后,下一步就是连接集群节点及实现Session绑定。这里可以借助Nodejs的express框架,由express的Session中间件来实现绑定 :
``` javascriptvar express = require('express');
var redisStore = require('connect-redis')(express);
app.use(express.cookieParser());app.use(express.session({
store: new RedisStore({ host: 'redis-cluster',
prefix: 'buzztter:sess', ttl: 3600,
}), secret: 'buzztter_secret_key'
}));
需要注意的是需要为RedisStore设置前缀和超时时间,这样可以将Session信息绑定在集群的缓存节点上,这就实现了多台服务器之间的Session共享。
使用Redis集群可以很好的实现多台服务器之间时Session共享,可以有效解决业务所带来的有关会话保持问题。 同时,这样的技术也可以提高Redis的并发访问性能,使节点的服务可以水平扩展。