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的并发访问性能,使节点的服务可以水平扩展。


数据运维技术 » Redis集群实现多机绑定(redis集群 bind)