jedis操作redis中的list(封装)

一、由来

之前的redis pool的文章,讲解了如何封装一个redis pool以及操作redis中的字符串,博客地址如下:

https://blog.csdn.net/qq_36898043/article/details/82155202

关于 list相关操作命令可以参考runoob,连接地址如下:

http://www.runoob.com/redis/redis-commands.html

本文主要是封装一些 操作 redis中 list 的相关方法。。。。。。

二、代码

package me.ele.redis;

import redis.clients.jedis.BinaryClient;
import redis.clients.jedis.Jedis;

import java.util.List;

/**
 * 操作redis中的List
 *
 * @author LZJ
 * @create 2018-08-29 12:37
 **/
public class ListRedisOperator {

    /**
     * 根据 list的 key
     * 返回 list的 长度
     *
     * @param redisPool
     * @param key
     * @return
     */
    public static long length(MyRedisPool redisPool, String key) {
        Jedis jedis = redisPool.borrowJedis();
        Long listLength = jedis.llen(key);
        redisPool.returnJedis(jedis);
        return listLength;
    }

    /**
     * 在 list 指定位置 插入值
     * 覆盖原有的值
     *
     * @param redisPool
     * @param key list的key
     * @param index 指定位置
     * @param value
     * @return
     */
    public static String set(MyRedisPool redisPool, String key, int index, String value) {
        Jedis jedis = redisPool.borrowJedis();
        String result = jedis.lset(key, index, value);
        redisPool.returnJedis(jedis);
        return result;
    }

    /**
     * 在 list的 某个元素前或者后插入元素
     * 如果key不存在,即为空列表,不进行任何操作
     * 如果value不存在,不进行任何操作
     *
     * @param redisPool
     * @param key list的key
     * @param position 前插还是后插
     * @param pivot list中相对位置的value
     * @param value 插入的内容
     * @return 更新后 list的长度  如果没有进行任何操作,返回-1
     */
    public static long insert(MyRedisPool redisPool, String key, BinaryClient.LIST_POSITION position, String pivot, String value) {
        Jedis jedis = redisPool.borrowJedis();
        long returnStatus = jedis.linsert(key, position, pivot, value);
        redisPool.returnJedis(jedis);
        return returnStatus;
    }

    /**
     * List头部追加记录
     * 将一个或多个值 value 插入到列表 key 的表头
     * 如果list不存在,则创建list 并进行push 操作
     *
     * @param redisPool
     * @param key
     * @param value
     * @return
     */
    public static long lPush(MyRedisPool redisPool,String key,String... value){
        Jedis jedis = redisPool.borrowJedis();
        long resultStatus = jedis.lpush(key,value);
        redisPool.returnJedis(jedis);
        return  resultStatus;
    }

    /**
     * List尾部追加记录
     * 将一个或多个值 value 插入到列表 key 的表尾(最右边)
     * 如果list不存在,一个空列表会被创建并执行 RPUSH 操作
     *
     * @param redisPool
     * @param key
     * @param value
     * @return
     */
    public static long rPush(MyRedisPool redisPool,String key,String... value){
        Jedis jedis = redisPool.borrowJedis();
        long resultStatus = jedis.rpush(key,value);
        redisPool.returnJedis(jedis);
        return resultStatus;
    }

    /**
     * 获取list中 指定位置的值
     * index从0开始
     * 如果 index 参数的值不在列表的区间范围内(out of range),返回 nil
     *
     * @param redisPool
     * @param key
     * @param index
     * @return
     */
    public static String get(MyRedisPool redisPool,String key,int index){
        Jedis jedis = redisPool.borrowJedis();
        String result = jedis.lindex(key,index);
        redisPool.returnJedis(jedis);
        return result;
    }

    /**
     * 获取指定范围的记录
     * lrange 下标从0开始 -1表示最后一个元素
     *
     * @param redisPool
     * @param key
     * @param start
     * @param end
     * @return
     */
    public static List<String> lRange(MyRedisPool redisPool, String key, long start, long end){
        Jedis jedis = redisPool.borrowJedis();
        List<String> result = jedis.lrange(key,start,end);
        redisPool.returnJedis(jedis);
        return result;
    }

    /**
     * 移除并返回列表 key 的 第一个值
     * 当 key 不存在时,返回 nil
     *
     * @param redisPool
     * @param key
     * @return
     */
    public static String lPop(MyRedisPool redisPool,String key){
        Jedis jedis = redisPool.borrowJedis();
        String result = jedis.lpop(key);
        redisPool.returnJedis(jedis);
        return result;
    }

    /**
     * 移除并返回列表 key 的 最后一个值
     * 当 key 不存在时,返回 nil
     *
     * @param redisPool
     * @param key
     * @return
     */
    public static String rPop(MyRedisPool redisPool,String key){
        Jedis jedis = redisPool.borrowJedis();
        String result = jedis.rpop(key);
        redisPool.returnJedis(jedis);
        return result;
    }

    /**
     * 清空List数据
     * ltrim 让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
     * start和end为0时,即清空list
     *
     * @param redisPool
     * @param key
     * @return
     */
    public static String clear(MyRedisPool redisPool,String key){
        Jedis jedis = redisPool.borrowJedis();
        String result = jedis.ltrim(key,0,0);
        jedis.lpop(key);
        redisPool.returnJedis(jedis);
        return result;
    }


}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值