v1.8.0更新

This commit is contained in:
shengzhang
2021-01-02 04:00:49 +08:00
parent 5ec35cce28
commit 2c6e656834
45 changed files with 1120 additions and 910 deletions

View File

@@ -3,6 +3,7 @@ package cn.dev33.satoken.dao;
import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
@@ -21,18 +22,28 @@ public class SaTokenDaoRedis implements SaTokenDao {
* string专用
*/
@Autowired
StringRedisTemplate stringRedisTemplate;
public StringRedisTemplate stringRedisTemplate;
/**
* SaSession专用
*/
RedisTemplate<String, SaSession> redisTemplate;
public RedisTemplate<String, SaSession> sessionRedisTemplate;
@Autowired
@SuppressWarnings({ "rawtypes", "unchecked" })
public void setRedisTemplate(RedisTemplate redisTemplate) {
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
this.redisTemplate = redisTemplate;
public void setSessionRedisTemplate(RedisConnectionFactory connectionFactory) {
// 指定相应的序列化方案
StringRedisSerializer keySerializer = new StringRedisSerializer();
JdkSerializationRedisSerializer valueSerializer = new JdkSerializationRedisSerializer();
// 构建RedisTemplate
RedisTemplate<String, SaSession> template = new RedisTemplate<String, SaSession>();
template.setConnectionFactory(connectionFactory);
template.setKeySerializer(keySerializer);
template.setHashKeySerializer(keySerializer);
template.setValueSerializer(valueSerializer);
template.setHashValueSerializer(valueSerializer);
template.afterPropertiesSet();
if(this.sessionRedisTemplate == null) {
this.sessionRedisTemplate = template;
}
}
@@ -58,7 +69,7 @@ public class SaTokenDaoRedis implements SaTokenDao {
}
/**
* 根据key获取value,如果没有,则返回空
* 修改指定key-value键值对 (过期时间取原来的值)
*/
@Override
public void updateValue(String key, String value) {
@@ -70,7 +81,7 @@ public class SaTokenDaoRedis implements SaTokenDao {
}
/**
* 根据key获取value如果没有则返回空
* 删除一个指定的key
*/
@Override
public void deleteKey(String key) {
@@ -84,6 +95,15 @@ public class SaTokenDaoRedis implements SaTokenDao {
public long getTimeout(String key) {
return stringRedisTemplate.getExpire(key);
}
/**
* 修改指定key的剩余存活时间 (单位: 秒)
*/
@Override
public void updateTimeout(String key, long timeout) {
stringRedisTemplate.expire(key, timeout, TimeUnit.SECONDS);
}
/**
@@ -91,7 +111,7 @@ public class SaTokenDaoRedis implements SaTokenDao {
*/
@Override
public SaSession getSession(String sessionId) {
return redisTemplate.opsForValue().get(sessionId);
return sessionRedisTemplate.opsForValue().get(sessionId);
}
/**
@@ -101,9 +121,9 @@ public class SaTokenDaoRedis implements SaTokenDao {
public void saveSession(SaSession session, long timeout) {
// 判断是否为永不过期
if(timeout == SaTokenDao.NEVER_EXPIRE) {
redisTemplate.opsForValue().set(session.getId(), session);
sessionRedisTemplate.opsForValue().set(session.getId(), session);
} else {
redisTemplate.opsForValue().set(session.getId(), session, timeout, TimeUnit.SECONDS);
sessionRedisTemplate.opsForValue().set(session.getId(), session, timeout, TimeUnit.SECONDS);
}
}
@@ -124,7 +144,7 @@ public class SaTokenDaoRedis implements SaTokenDao {
*/
@Override
public void deleteSession(String sessionId) {
redisTemplate.delete(sessionId);
sessionRedisTemplate.delete(sessionId);
}
/**
@@ -132,7 +152,15 @@ public class SaTokenDaoRedis implements SaTokenDao {
*/
@Override
public long getSessionTimeout(String sessionId) {
return redisTemplate.getExpire(sessionId);
return sessionRedisTemplate.getExpire(sessionId);
}
/**
* 修改指定SaSession的剩余存活时间 (单位: 秒)
*/
@Override
public void updateSessionTimeout(String sessionId, long timeout) {
sessionRedisTemplate.expire(sessionId, timeout, TimeUnit.SECONDS);
}
}