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中间件来实现绑定 :
``` javascript
var 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的并发访问性能,使节点的服务可以水平扩展。
香港服务器首选后浪云,2H2G首月10元开通。
后浪云(www.IDC.Net)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。