一、由来
之前的redis pool的文章,讲解了如何封装一个redis pool以及操作redis中的字符串,博客地址如下:
https://blog.youkuaiyun.com/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;
}
}