Heim > Datenbank > Redis > Wie zählt SpringSession die Anzahl der Online-Benutzer über Redis?

Wie zählt SpringSession die Anzahl der Online-Benutzer über Redis?

WBOY
Freigeben: 2023-05-29 10:52:05
nach vorne
1192 Leute haben es durchsucht

Da die ursprüngliche Logik des Systems die einmalige Anmeldung mit Spring Session und die von Redis erstellte Sitzungsfreigabe ist, wird in der Sitzung ein Schlüsselwert festgelegt, der angibt, dass sich der Benutzer angemeldet hat, und der HttpServletRequestWrapper wird aktiviert Umgeschrieben, um den RemoteUser-Datenwert festzulegen.

class RemoteUserRequestWrapper extends HttpServletRequestWrapper {
		String userCode;
		RemoteUserRequestWrapper(HttpServletRequest request) {
			super(request);
			this.userCode = (String) request.getSession()
					.getAttribute(org.apache.commons.lang3.StringUtils.isBlank(sessionKeyName)?DEFAULT_SESSION_KEY_NAME:sessionKeyName);
		}
		@Override
		public String getRemoteUser() {
			return userCode;
		}
	}
Nach dem Login kopieren

Spring Die von der Sitzung in Redis zwischengespeicherten Daten Die Sitzungseinstellung läuft ab und das RemoveAttribute kann die Schlüsseldaten in Redis nicht löschen. Sie können also nur Folgendes zur Abmeldesystemlogik für Datenstatistiken hinzufügen:

Set<String> keys = RedisUtils.redisTemplate.keys("spring:session:sessions:*");
for(String key : keys){
	if(key.indexOf("expires")==-1){
		String s = (String)RedisUtils.redisTemplate.opsForHash().get(key, "sessionAttr:ssoLoginUser");
		if(request.getRemoteUser().equals(s)) {
			logger.info("loginusername:{}",s)
			RedisUtils.redisTemplate.opsForHash().delete(key, "sessionAttr:ssoLoginUser");
		}
	}
}
Nach dem Login kopieren

pom.xml: Wie zählt SpringSession die Anzahl der Online-Benutzer über Redis?

  List<Map<String,Object>> list = new ArrayList<Map<String, Object>>();
  List<Map<String,Object>> data = new ArrayList<Map<String, Object>>();
  Set<String> keys = redisTemplate.keys("spring:session:sessions:*");
  for(String key : keys){
      if(key.indexOf("expires")==-1){
          String s = (String)redisTemplate.opsForHash().get(key, "sessionAttr:ssoLoginUser");
          if(StringUtils.isNotBlank(s)) {
              System.out.println(s);
              Map<String,Object> map = new HashMap<String,Object>(16);
              map.put("usercode", s);
              list.add(map);
          }
      }
  }
  return list;
Nach dem Login kopieren

RedisUtils.java:

<dependency>
	<groupId>org.springframework.session</groupId>
	<artifactId>spring-session-data-redis</artifactId>
	<version>1.2.2.RELEASE</version>
	<type>pom</type>
</dependency>

<dependency>
	<groupId>biz.paluch.redis</groupId>
	<artifactId>lettuce</artifactId>
	<version>3.5.0.Final</version>
</dependency>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie zählt SpringSession die Anzahl der Online-Benutzer über Redis?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage