Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Sessão no redis

1) Quando falamos em armazenar a sessão do usuário no redis, estamos falando só do sessionID ou também das informações que foram feitas por determinado usuário ? Exemplo: O livro que está no carrinho foi junto no valor da chave e depois interpretado pela aplicação / servidor do segundo servidor ? Ficou meio confuso isso..

2) Como é interpretado o map do redis ? Ficou como sendo key o sessionID, mas e o value ?

3 respostas

Olá Ricardo, tudo bem?

Com o spring session, a informação que seria armzenada seria somente do session ID mesmo, sem as informações que foram feitas por um determinado usuário.

Nesse caso, só teremos da key com o sessionID do usuário, porém para realizar a integração da nossa aplicação com Elasticache da Amazon precisaríamos montar o RedisTemplate para serialização.

Vou colocar essa observação no exercício, obrigado.

Abs

Hm, entendi, agora o último ponto que não consegui visualizar seria: como que só com o sessionID no redis a aplicação conseguiu retornar o livro no carrinho mesmo sendo respondido por outro nó da aplicação? Exemplo: abri o índex, foi criado um sessionID no redis, cliquei em comprar, nesse momento um segundo nó atendeu a requisição, porém ele só obteve o sessionID do redis, que no meu entendimento, não seja suficiente para a aplicação saber que existe algo no carrinho, que mágica é feita para isso funcionar?

solução!

Olá Ricardo,

Seria somente o Session ID necessário. A forma que o Spring Session trabalha irá interagir com a classe HttpSession:

@WebServlet("/session")
public class SessionServlet extends HttpServlet {

        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                        throws ServletException, IOException {
                String attributeName = req.getParameter("attributeName");
                String attributeValue = req.getParameter("attributeValue");
                req.getSession().setAttribute(attributeName, attributeValue);
                resp.sendRedirect(req.getContextPath() + "/");
        }
}

Ao invés de utilizar o HttpSession do Tomcat, o Spring Session persiste os dados no Redis, criando um cookie no browser chamado SESSION que contém o id da sessão.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software