redis的运用之session的共享

75 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第7天,点击查看活动详情

前言

上一篇文章讲到,redis的java客户端。但那只是最简单的使用。不结合实际的场景的讲解都是耍流氓。所以下面我将会结合实际情况及标题所写的那种情况进行分析。

session的共享

先来说说使用场景,当我们在只有一台服务器时。我们可以将用户的信息直接存到session中,其作用是用户在下次登录的时刻就不用重新校验了,提高了用户的体验好感。但是这样做也会存在一个问题就是,你只有一台服务器时好用,但是你有多个tomcat时,这些session是不会共享的。那有人说我们可以将这些信息存入数据库中,那样的话速度就彻底烂掉了。好在不用担心,redis是基于内存的,虽然存入的东西可能并不是很多,但是读取和写入时非常快的。下面我们来说说大概做法。

实现

当我们选择要将使用的东西存入redis时,首先就要考虑这几件事1:选择合适的数据结构。就比如我们将用户的信息这个对应的实体类存入redis中,就应该选择hash而不是string(虽然string也可以)。因为hash里面的一些字段是可以改变的,而string一变化就只能整个变化。2:选择合适的key,像这次的实现,我们就选择加入一个合适的前缀(方便知道大概是哪一块功能的)然后拼接上其对应的客户id即可。3:最后一个则是存储粒度,这个你只需要知道是在存储的时候是存全部属性(通用性)还是存入部分属性(从占用空间的角度)。