import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.util.*;
@Component
public class RDPUtil {
@Autowired
private RedisTemplate redisTemplate;
/**
* 根据key删除
* @param key
*/
public void delRedis(String key) {
redisTemplate.delete(key);
}
/**
* 取多个值
* @param keys
* @return list
*/
private List<Object> multiGet(Collection<String> keys) {
return redisTemplate.opsForValue().multiGet(keys);
}
/**
*
* @param list 已经获取到的所有key 通过List 传进来
* @param pageSize
* @param pageNum
* @return
*/
public List getPageHelperList(List list,int pageSize , int pageNum) {
/**
* list 中存放redis 的 key
*/
if(pageNum<1){
pageNum = 1;
}
if(pageSize <1 ){
pageSize =10;
}
//检查list是否有数据
if(list == null && list.isEmpty()){
return null;
}
//begin 页码 back 数量
try {
int begin = pageSize * (pageNum - 1);
int back = ((pageSize * pageNum) - 1);
List<String> keys = new ArrayList<>();
keys.addAll(list);//所有的Key
List<String> k = new ArrayList<>();//要返回的数据的Key
try {
for (int i = begin; i <= back; i++) {
k.add(keys.get(i));
}
} catch (Exception e) {
}
keys.clear();
list = multiGet(k);//批量取出key中的数据
k.clear();
}catch (Exception e){
}
return list;
}
//返回筛选数据 K欸有
public Set<String> getNeedKeys(Set<String> sets,int pageSize , int pageNum) {
/**
* list 中存放redis 的 key
*/
if(pageNum<1){
pageNum = 1;
}
if(pageSize <1 ){
pageSize =10;
}
//检查list是否有数据
if(sets == null && sets.isEmpty()){
return null;
}
//begin 页码 back 数量
Set<String> k = new HashSet<>(); //要返回的数据的key
try {
int begin = pageSize * (pageNum - 1);
int back = ((pageSize * pageNum) - 1);
List<String> keys = new ArrayList<>();
keys.addAll(sets);//所有的Key
try {
for (int i = begin; i <= back; i++) {
k.add(keys.get(i));
}
} catch (Exception e) {
}
}catch (Exception e){
}
return k;
}
/**
*
* @param key exmple: "wx:order:*"
* @param pageSize //每页显示数量
* @param pageNum//页码
* @return
*/
public List getPageHelperList(String key,int pageSize , int pageNum) {
List list = new LinkedList(); //要返回的数据
if(pageNum<1){
pageNum = 1;
}
if(pageSize <1 ){
pageSize =10;
}
if(key == null && key.isEmpty()){
return null;
}
/**
* 正序分页
*
*/
//获取所有Key
try {
Set<String> set = redisTemplate.keys(key);//获取所有符合条件的key
int begin = pageSize * (pageNum - 1);
int back = ((pageSize * pageNum ) - 1);
List<String> keys = new ArrayList<>(); //要返回的Key集合
List<String> k = new ArrayList<>();
for(String g : set){
keys.add(g.toString()) ;
}
try{
for(int i = begin;i<=back;i++){
k.add(keys.get(i)); //取出符合条件的Key的value
}
}catch (Exception e){
}
keys.clear();
list = multiGet(k);
k.clear();
}catch (NullPointerException n){
//n.printStackTrace();
return null;
}
return list;
}
}
05-12
573
03-06
412