列表類型(list)用於存儲一個有序的字符串列表,常用的操作是向隊列兩端添加元素或者獲得列表的某一片段。列表內部使用的是雙向鏈表(double linked list)實現的,所以向列表兩端添加元素的時間復雜度是O(1),獲取越接近列表兩端的元素的速度越快。但是缺點是使用列表通過索引訪問元素的效率太低(需要從端點開始遍歷元素)。
Redis列表的操作命令和對應的api如下:
lpush/rpush [list] [value]
JedisAPI:public Long lpush/rpush(final String key, final String... string)
功能:從頭/尾部向list添加值,返回list長度
lrange [list] start end
JedisAPI:public List<String> lrange(final String key, final long start, final long end)
功能:返回list對應索引區間的值
linsert [list] [before/after] 'value1' 'value2'
JedisAPI:public Long linsert(final String key, final LIST_POSITION where, final String pivot, final String value)
功能:在list的value1的前面/后面插入value2
lset [list] index ‘value’
JedisAPI:public String lset(final String key, final long index, final String value)
功能:在特定索引插入value,注意:如果index為負值,則從list尾部開始算起
lrem [list] num 'value'
JedisAPI:public Long lrem(final String key, final long count, final String value)
功能:從list中刪除num個和value相同的值,若num>0,則從鏈頭算起,若<0則從鏈尾算起,若=0則刪除全部
ltrim [list] start end
JedisAPI:public String ltrim(final String key, final long start, final long end)
功能:僅保留list中索引從start到end的值
lpop [list]
JedisAPI:public String lpop(final String key)
功能:從頭部刪除元素,同時返回該元素
rpop [list]
JedisAPI:public String rpop(final String key)
功能:從尾部刪除元素並返回
rpoplpush [list1] [list2]
JedisAPI:無
功能:從list1的尾部移除元素並添加到list2的頭部,最后返回被移除的元素值,整個操作是原子的.如果list1是空或者不存在返回 nil
lindex [list]
JedisAPI:public String lindex(final String key, final long index)
功能:index 返回list中index索引位置的元素
llen [list]
JedisAPI:public Long llen(final String key)
功能:返回list的長度