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


}
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java如何使用Redis? 回答: 在Java使用Redis需要借助Redis的Java客户端。Redis官方提供了一些Java客户端,比如Jedis和Lettuce等,这些客户端都是基于Redis协议实现的,可以通过Java语言来访问和操作Redis数据库。其JedisRedis官方推荐的面向Java的操作Redis的客户端,可以通过JedisPool来获得连接进行get、set、del等操作。另外,SpringDataRedis也提供了对JedisApi的高度封装,可以使用RedisTemplate来操作Redis数据库。除了Jedis,还有其他的Java客户端可以用于访问Redis,比如Lettuce、Redisson等,它们也提供了比较完善的Redis操作API,可以根据自己的需要选择使用。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [Java应用:关于Redis入门的详细解析](https://blog.csdn.net/ww2651071028/article/details/129436598)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Java使用Redis](https://blog.csdn.net/jintianzheng/article/details/115624412)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值