基本思路:
加入:
1用redis队列来存储最近联系人
2每次插入前,先删除要加入的联系人,无论队列里有没有,都删除一次
3将联系人从左端插入
4裁剪出0到99;
搜索:
1用range获取0到99的队列元素
2用java进行过滤
3返回结果
//补全最近联系人组件
@Autowired
RedisTemplate<String,String> template;
public void add_update(String user,String contact){
String list="recent:"+user;
template.multi();
template.opsForList().remove(list,3,contact);
template.opsForList().leftPush(list,contact);
template.opsForList().trim(list, 0,99);
template.exec();
}
public void remove(String user,String contact){
String list="recent:"+user;
template.opsForList().remove(list,3,contact);
}
public void fetch_autocomplete(String user,String prefix){
String list="recent:"+user;
List<String> list1 = new ArrayList<>();
List<String> lists=template.opsForList().range(list,0,-1);
for(String s:lists){
if(s.startsWith(prefix)){
list1.add(s);
}
}
// return list1;
}