我正在使用springboot编写restapi。我正在尝试维护redis服务器上的用户会话。redis在默认端口上启动并运行 6379
. 我已经用莴苣jar连接到redis服务器。但我的会话似乎没有在redis服务器上设置。我尝试使用uuid获取session对象集,它返回如下内容
127.0.0.1:6379> get 02978830-2f35-47b7-a367-1f48e40d0ea0
(nil)
通过redis cli,我可以设置和获取键值。
127.0.0.1:6379> set 123 123dummy
OK
127.0.0.1:6379> get 123
"123dummy"
127.0.0.1:6379>
这是一个代码片段,我试图查看用户是否已登录,这取决于他们的活动会话,如果会话在那里,那么我返回用户。否则我会记录em,然后在redis服务器上设置会话,然后返回用户。
UserAttributes findUserByEmailIdOrPhoneNumber(HttpServletRequest request,
@RequestParam(value = "userLoginWay", required = false) String userLoginWay,
@RequestParam(value = "userPassword", required = false) String userPassword,
@RequestParam(value = "session", required = false) String session) {
if(request.getSession().getAttribute(session) != null) {
//we have session return user
return user;
} else {
login(userLoginWay, userPassword)
//set the session in redis here
String sessionUuid = UUID.randomUUID().toString();
request.getSession().setAttribute(sessionUuid, user);
return user;
}
}
这个用户就是我试图设置为会话值和uuid作为键的对象。这就是我试图连接到redis服务器的方式
@Configuration
@EnableRedisHttpSession
public class SessionConfig extends AbstractHttpSessionApplicationInitializer {
@Bean
public LettuceConnectionFactory connectionFactory() {
return new LettuceConnectionFactory();
}
}
这就是我所拥有的 application.properties
```
Configuring Redis server to manage sessions
spring.session.store-type=redis
spring.redis.host=localhost
spring.redis.port=6379
你知道这是怎么回事吗?
2条答案
按热度按时间lh80um4z1#
必须使用redis服务器的默认构造函数初始化与redis服务器的连接。
可以使用从属性文件中获取值
@value
或者更好的方法是用@ConfigurationProperties(prefix="spring.redis")
添加字段string host、int port和各自的getter和setter。omqzjyyz2#
好的,我自己做的,我在session config类中做了一些更改,并通过扩展
AbstractHttpSessionApplicationInitializer
```@EnableRedisHttpSession
public class SessionConfig {
}
public class SessionConfigInitializer extends AbstractHttpSessionApplicationInitializer {
}
127.0.0.1:6379> keys '*'
127.0.0.1:6379>