public static class RedisHelper.ListOps extends Object
提示: 列表中的元素,可以重复。
提示: list是有序的。
提示: redis中的list中的索引,可分为两类,这两类都可以用来定位list中元素: 类别一: 从left到right, 是从0开始依次增大: 0, 1, 2, 3... 类别二: 从right到left, 是从-1开始依次减小: -1, -2, -3, -4...
提示: redis中String的数据结构可参考resources/data-structure/List(列表)的数据结构(示例一).png redis中String的数据结构可参考resources/data-structure/List(列表)的数据结构(示例二).png
| 构造器和说明 |
|---|
ListOps() |
| 限定符和类型 | 方法和说明 |
|---|---|
static String |
lIndex(String key,
long index)
通过索引index, 获取(key对应的)list中的元素
注: 若key不存在 或 index超出(key对应的)list的索引范围,那么返回null
|
static String |
lLeftPop(String key)
【非阻塞队列】 从左侧移出(key对应的)list中的第一个元素, 并将该元素返回
注: 此方法是非阻塞的, 即: 若(key对应的)list中的所有元素都被pop移出了,此时,再进行pop的话,会立即返回null
注: 此方法是非阻塞的, 即: 若redis中不存在对应的key,那么会立即返回null
注: 若将(key对应的)list中的所有元素都pop完了,那么该key会被删除
|
static String |
lLeftPop(String key,
long timeout,
TimeUnit unit)
【阻塞队列】 从左侧移出(key对应的)list中的第一个元素, 并将该元素返回
注: 此方法是阻塞的, 即: 若(key对应的)list中的所有元素都被pop移出了,此时,再进行pop的话,
会阻塞timeout这么久,然后返回null
注: 此方法是阻塞的, 即: 若redis中不存在对应的key,那么会阻塞timeout这么久,然后返回null
注: 若将(key对应的)list中的所有元素都pop完了,那么该key会被删除
提示: 若阻塞过程中, 目标key-list出现了,且里面有item了,那么会立马停止阻塞, 进行元素移出并返回
|
static long |
lLeftPush(String key,
String item)
从左端推入元素进列表
注: 若redis中不存在对应的key, 那么会自动创建
|
static long |
lLeftPush(String key,
String pivot,
String item)
若 key 对应的 list 中存在 pivot 项, 那么将 item 放入第一个 pivot 项前(即:放在第一个pivot项左边);
若 key 对应的 list 中不存在 pivot 项, 那么不做任何操作, 直接返回 -1。
|
static long |
lLeftPushAll(String key,
Collection<String> items)
从左端批量推入元素进列表
注: 若redis中不存在对应的key, 那么会自动创建
注: 这一批item中,那个item先从Collection取出来,就先push哪个
|
static long |
lLeftPushAll(String key,
String... items)
从左端批量推入元素进列表
注: 若redis中不存在对应的key, 那么会自动创建
注: 这一批item中,先push左侧的, 后push右侧的
|
static long |
lLeftPushIfPresent(String key,
String item)
如果redis中存在key, 则从左端批量推入元素进列表;
否则,不进行任何操作
|
static List<String> |
lRange(String key,
long start,
long end)
获取(key对应的)list中索引在[start, end]之间的item集
注: 含start、含end。
|
static long |
lRemove(String key,
long expectCount,
String item)
删除(key对应的)list中,前expectCount个值等于item的项
注: 若expectCount == 0, 则表示删除list中所有的值等于item的项.
|
static String |
lRightPop(String key)
与
lLeftPop(String)类比即可, 不过是从list右侧移出元素 |
static String |
lRightPop(String key,
long timeout,
TimeUnit unit)
与
lLeftPop(String, long, TimeUnit)类比即可, 不过是从list右侧移出元素 |
static String |
lRightPopAndLeftPush(String sourceKey,
String destinationKey)
【非阻塞队列】 从sourceKey对应的sourceList右侧移出一个item, 并将这个item推
入(destinationKey对应的)destinationList的左侧
注: 若sourceKey对应的list中没有item了,则立马认为(从sourceKey对应的list中pop出来的)item为null,
null并不会往destinationKey对应的list中push。
|
static String |
lRightPopAndLeftPush(String sourceKey,
String destinationKey,
long timeout,
TimeUnit unit)
【阻塞队列】 从sourceKey对应的sourceList右侧移出一个item, 并将这个item推
入(destinationKey对应的)destinationList的左侧
注: 若sourceKey对应的list中没有item了,则阻塞等待, 直到能从sourceList中移出一个非null的item(或等待时长超时);
case1: 等到了一个非null的item, 那么继续下面的push操作,并返回这个item。
|
static long |
lRightPush(String key,
String item)
与
lLeftPush(String, String)类比即可, 不过是从list右侧推入元素 |
static long |
lRightPush(String key,
String pivot,
String item)
与
lLeftPush(String, String, String)类比即可, 不过是从list右侧推入元素 |
static long |
lRightPushAll(String key,
Collection<String> items)
与
RedisHelper.ListOps#lLeftPushAll(String, Collection类比即可, 不过是从list右侧推入元素 |
static long |
lRightPushAll(String key,
String... items)
与
lLeftPushAll(String, String...)类比即可, 不过是从list右侧推入元素 |
static long |
lRightPushIfPresent(String key,
String item)
与
lLeftPushIfPresent(String, String)类比即可, 不过是从list右侧推入元素 |
static void |
lSet(String key,
long index,
String item)
设置(key对应的)list中对应索引位置index处的元素为item
注: 若key不存在,则会抛出org.springframework.data.redis.RedisSystemException
注: 若索引越界,也会抛出org.springframework.data.redis.RedisSystemException
|
static long |
lSize(String key)
获取(key对应的)list的size
注: 当key不存在时,获取到的size为0.
|
static void |
lTrim(String key,
long start,
long end)
裁剪(即: 对list中的元素取交集。)
|
static List<String> |
lWholeList(String key)
获取(key对应的)list
|
public static long lLeftPush(String key, String item)
注: 若redis中不存在对应的key, 那么会自动创建
key - 定位list的keyitem - 要推入list的元素public static long lLeftPushAll(String key, String... items)
注: 若redis中不存在对应的key, 那么会自动创建 注: 这一批item中,先push左侧的, 后push右侧的
key - 定位list的keyitems - 要批量推入list的元素集public static long lLeftPushAll(String key, Collection<String> items)
注: 若redis中不存在对应的key, 那么会自动创建 注: 这一批item中,那个item先从Collection取出来,就先push哪个
key - 定位list的keyitems - 要批量推入list的元素集public static long lLeftPushIfPresent(String key, String item)
key - 定位list的keyitem - 要推入list的项public static long lLeftPush(String key, String pivot, String item)
注: 若 redis 中不存在对应的 key, 那么会自动创建
key - 定位list的keyitem - 要推入list的元素public static long lRightPush(String key, String item)
lLeftPush(String, String)类比即可, 不过是从list右侧推入元素public static long lRightPushAll(String key, String... items)
lLeftPushAll(String, String...)类比即可, 不过是从list右侧推入元素public static long lRightPushAll(String key, Collection<String> items)
RedisHelper.ListOps#lLeftPushAll(String, Collection) 类比即可, 不过是从list右侧推入元素public static long lRightPushIfPresent(String key, String item)
lLeftPushIfPresent(String, String)类比即可, 不过是从list右侧推入元素public static long lRightPush(String key, String pivot, String item)
lLeftPush(String, String, String)类比即可, 不过是从list右侧推入元素public static String lLeftPop(String key)
注: 此方法是非阻塞的, 即: 若(key对应的)list中的所有元素都被pop移出了,此时,再进行pop的话,会立即返回null 注: 此方法是非阻塞的, 即: 若redis中不存在对应的key,那么会立即返回null 注: 若将(key对应的)list中的所有元素都pop完了,那么该key会被删除
key - 定位list的keypublic static String lLeftPop(String key, long timeout, TimeUnit unit)
注: 此方法是阻塞的, 即: 若(key对应的)list中的所有元素都被pop移出了,此时,再进行pop的话, 会阻塞timeout这么久,然后返回null 注: 此方法是阻塞的, 即: 若redis中不存在对应的key,那么会阻塞timeout这么久,然后返回null 注: 若将(key对应的)list中的所有元素都pop完了,那么该key会被删除
提示: 若阻塞过程中, 目标key-list出现了,且里面有item了,那么会立马停止阻塞, 进行元素移出并返回
key - 定位list的keytimeout - 超时时间unit - timeout的单位public static String lRightPop(String key)
lLeftPop(String)类比即可, 不过是从list右侧移出元素public static String lRightPop(String key, long timeout, TimeUnit unit)
lLeftPop(String, long, TimeUnit)类比即可, 不过是从list右侧移出元素public static String lRightPopAndLeftPush(String sourceKey, String destinationKey)
注: 若sourceKey对应的list中没有item了,则立马认为(从sourceKey对应的list中pop出来的)item为null, null并不会往destinationKey对应的list中push。 追注: 此时,此方法的返回值是null。
注: 若将(sourceKey对应的)list中的所有元素都pop完了,那么该sourceKey会被删除。
sourceKey - 定位sourceList的keydestinationKey - 定位destinationList的keypublic static String lRightPopAndLeftPush(String sourceKey, String destinationKey, long timeout, TimeUnit unit)
注: 若sourceKey对应的list中没有item了,则阻塞等待, 直到能从sourceList中移出一个非null的item(或等待时长超时); case1: 等到了一个非null的item, 那么继续下面的push操作,并返回这个item。 case2: 超时了,还没等到非null的item, 那么pop出的结果就未null,此时并不会往destinationList进行push。 此时,此方法的返回值是null。
注: 若将(sourceKey对应的)list中的所有元素都pop完了,那么该sourceKey会被删除。
sourceKey - 定位sourceList的keydestinationKey - 定位destinationList的keytimeout - 超时时间unit - timeout的单位public static void lSet(String key, long index, String item)
注: 若key不存在,则会抛出org.springframework.data.redis.RedisSystemException 注: 若索引越界,也会抛出org.springframework.data.redis.RedisSystemException
key - 定位list的keyindex - 定位list中的元素的索引item - 要替换成的值public static String lIndex(String key, long index)
注: 若key不存在 或 index超出(key对应的)list的索引范围,那么返回null
key - 定位list的keyindex - 定位list中的item的索引public static List<String> lRange(String key, long start, long end)
注: 含start、含end。 注: 当key不存在时,获取到的是空的集合。 注: 当获取的范围比list的范围还要大时,获取到的是这两个范围的交集。
提示: 可通过RedisUtil.ListOps.lRange(key, 0, -1)来获取到该key对应的整个list
key - 定位list的keystart - 起始元素的indexend - 结尾元素的indexpublic static List<String> lWholeList(String key)
key - 定位list的keylRange(String, long, long)public static long lSize(String key)
注: 当key不存在时,获取到的size为0.
key - 定位list的keypublic static long lRemove(String key, long expectCount, String item)
注: 若expectCount == 0, 则表示删除list中所有的值等于item的项. 注: 若expectCount > 0, 则表示删除从左往右进行 注: 若expectCount < 0, 则表示删除从右往左进行
注: 若list中,值等于item的项的个数少于expectCount时,那么会删除list中所有的值等于item的项。 注: 当key不存在时, 返回0。 注: 若lRemove后, 将(key对应的)list中没有任何元素了,那么该key会被删除。
key - 定位list的keyexpectCount - 要删除的item的个数item - 要删除的itempublic static void lTrim(String key, long start, long end)
举例说明: list中的元素索引范围是[0, 8], 而这个方法传入的[start, end]为 [3, 10], 那么裁剪就是对[0, 8]和[3, 10]进行取交集, 得到[3, 8], 那么裁剪后 的list中,只剩下(原来裁剪前)索引在[3, 8]之间的元素了。
注: 若裁剪后的(key对应的)list就是空的,那么该key会被删除。
key - 定位list的keystart - 要删除的item集的起始项的索引end - 要删除的item集的结尾项的索引Copyright © 2023 Irvingsoft. All rights reserved.