package com.xiaozhi.blog.redis;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.BulkMapper;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.query.SortQuery;
import org.springframework.data.redis.core.query.SortQueryBuilder;
import org.springframework.stereotype.Component;
import com.xiaozhi.blog.utils.KeyUtils;
import com.xiaozhi.blog.vo.Range;
import solr.index.UserIndexData;
@Component
public class UserIndexDao {
private static Log logger = LogFactory.getLog(UserIndexDao.class);
@Autowired
private StringRedisTemplate template;
/**
* 分页获取所有用户
* @param uid
* @return
*/
public List<UserIndexData> getGlobalUsers(Range range) {
SortQuery<String> query = SortQueryBuilder.sort(KeyUtils.users()).noSort()
.get("#")
.get("uid:*->school")
.get("uid:*->company")
.get("uid:*->nickname")
.limit(range.being, range.end-range.being+1).build();
BulkMapper<UserIndexData, String> hm = new BulkMapper<UserIndexData, String>() {
public UserIndexData mapBulk(List<String> bulk) {
UserIndexData user = new UserIndexData();
user.setId(bulk.get(0));
user.setSchool(bulk.get(1));
user.setCompany(bulk.get(2));
user.setNickname(bulk.get(3));
return user;
}
};
return template.sort(query, hm);
}
/**
* 返回总粉丝数
* @param uid
* @return
*/
public int getGlobalUsersNum(){
return template.opsForList().size(KeyUtils.users()).intValue();
}
}