@Service
public class RedisServiceImpl implements RedisService {
@Autowired(required = false)
private RedisTemplate<String, String> redisTemplate;
//保存数据
@Override
public void set(String key, String value) {
redisTemplate.boundValueOps(key).set(value);
}
//获取数据
@Override
public String get(String key) {
return redisTemplate.boundValueOps(key).get();
}
//删除数据
@Override
public boolean delete(String key) {
return redisTemplate.delete(key);
}
//设置有效时间
@Override
public boolean expire(String key, long second) {
return redisTemplate.expire(key,second, TimeUnit.SECONDS);
}
}
@Service
public class UserServiceImpl implements UserService {
@Autowired(required = false)
private UserMapper userMapper;
@Autowired
private RedisService redisService;
ObjectMapper mapper = new ObjectMapper();
//用户登录
@Override
public User login(User user) {
User user2 = null;//用来保存查询的jieguo
String userJson = null;//保存从redis中查询的结果
try {
//查询redis数据库
userJson = redisService.get("login_"+user.getName());
System.out.println("userJson:" + userJson);
if (userJson != null) {
//将json格式的字符串转换成user对象
user2 =mapper.readValue(userJson,User.class);
} else {
user2 = userMapper.login(user);
//将对象转换成json格式
userJson = mapper.writeValueAsString(user2);
//将查询结果保存到redis中
redisService.set("login_"+user.getName(), userJson);
}
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return user2;
}
//查询所有用户
@Override
public List<User> getAll() {
List<User> list = null;//保存查询的结果
String listJson = null;//保存redis的查询结果
try {
//从redis中查询数据
listJson = redisService.get("getAll");
System.out.println("listJson:" + listJson);
if (listJson != null) {
//从redis中查询到了数据
//将json格式的字符串转换成list集合
JavaType type = mapper.getTypeFactory().constructParametricType(List.class, User.class);
list = mapper.readValue(listJson, type);
} else {
//从redis中没有查询到,应该从mysql中查询
list = userMapper.getAll();
//将集合转换成json格式
listJson = mapper.writeValueAsString(list);
//将查询结果保存到redis中
redisService.set("getAll", listJson);
}
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return list;
}
}