redis 分页工具类


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;
    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值