標籤:
package cn.com;import java.util.List;import redis.clients.jedis.Jedis;import redis.clients.jedis.BinaryClient.LIST_POSITION;public class Redis_List {public static Jedis redis = new Jedis("localhost", 6379);// 串連redis/** * 返回列表 key 中指定區間內的元素,區間以位移量 start 和 stop 指定。 * */public static void lrange(){redis.flushDB();//清除資料/**初始化資料*/redis.lpush("languages", "english","chain");redis.lpush("languages", "english"); /**取資料*/List<String> list=redis.lrange("languages", 0, -1);for(String s:list){System.out.println("s:"+s);}}/** * 將一個或多個值 value 插入到列表 key 的表頭 * 如果有多個 value 值,那麼各個 value 值按從左至右的順序依次插入到表頭: * 如果 key 不存在,一個空列表會被建立並執行 LPUSH 操作。 * 當 key 存在但不是清單類型時,返回一個錯誤。 * */public static void lpush(){redis.flushDB();//清除資料redis.lpush("languages", "english","chain");redis.lpush("languages", "english");//加入重複元素redis.lpush("languages", "1","2","3");List<String> list=redis.lrange("languages", 0, -1);for(String s:list){System.out.println("s:"+s);} }/** * LPUSHX key value * 將值 value 插入到列表 key 的表頭,若且唯若 key 存在並且是一個列表。 * 和 LPUSH 命令相反,當 key 不存在時, LPUSHX 命令什麼也不做。 * */public static void lpushx(){redis.flushDB();//清除資料redis.lpushx("languages", "english");List<String> list=redis.lrange("languages", 0, -1);for(String s:list){System.out.println("s:"+s);}}/** * RPUSH key value [value ...] * 將一個或多個值 value 插入到列表 key 的表尾(最右邊)。 * 如果 key 不存在,一個空列表會被建立並執行 RPUSH 操作。 * 當 key 存在但不是清單類型時,返回一個錯誤。 * */public static void rpush(){redis.flushDB();//清除資料redis.rpush("languages", "english","chain");redis.rpush("languages", "english");//加入重複元素redis.rpush("languages", "1","2","3");//加入重複元素List<String> list=redis.lrange("languages", 0, -1);for(String s:list){System.out.println("s:"+s);}}/** * LPUSHX key value * 將值 value 插入到列表 key 的尾,若且唯若 key 存在並且是一個列表。 * 和 LPUSH 命令相反,當 key 不存在時, LPUSHX 命令什麼也不做。 * */public static void rpushx(){redis.flushDB();//清除資料redis.rpush("languages", "1","2","3");//加入重複元素redis.rpushx("languages", "english");List<String> list=redis.lrange("languages", 0, -1);for(String s:list){System.out.println("s:"+s);}}/** * 移除並返回列表 key 的頭元素。 * 當 key 不存在時,返回 nil 。 * */public static void lpop(){redis.flushDB();//清除資料redis.lpush("languages", "1","2","3","4","5");String str=redis.lpop("languages");List<String> list=redis.lrange("languages", 0, -1);System.out.println("被移除的元素:"+str);System.out.println("剩下的元素列表:");for(String s:list){System.out.print(""+s+" ");}}/** * 移除並返回列表 key 的尾元素。 * 當 key 不存在時,返回 nil 。 * */public static void rpop(){redis.flushDB();//清除資料redis.lpush("languages", "1","2","3","4","5");String str=redis.rpop("languages");List<String> list=redis.lrange("languages", 0, -1);System.out.println("被移除的元素:"+str);System.out.println("剩下的元素列表:");for(String s:list){System.out.print(""+s+" ");}}/** * 如果給定 key 內至少有一個非空列表,那麼彈出遇到的第一個非空列表的頭元素, * 並和被彈出元素所屬的列表的名字一起,組成結果返回給調用者 * */public static void blpop(){redis.flushDB();//清除資料//redis.lpush("languages", "a","b","c","d","e");//初始化資料redis.lpush("base", "a","b","c","d");//初始化資料List<String> list=redis.blpop(1000,"base");for(String s:list){System.out.println(s+" ");}List<String> list2=redis.lrange("base", 0, -1);for(String s:list2){System.out.println("剩餘"+s+" ");}}/** * 如果給定 key 內至少有一個非空列表,那麼彈出遇到的第一個非空列表的尾元素, * 並和被彈出元素所屬的列表的名字一起,組成結果返回給調用者 * */public static void brpop(){redis.flushDB();//清除資料 redis.lpush("base", "a","b","c","d");//初始化資料List<String> list=redis.brpop(1000,"base");for(String s:list){System.out.println(s+" ");}List<String> list2=redis.lrange("base", 0, -1);for(String s:list2){System.out.println("剩餘"+s+" ");}}/** * 從頭部彈出一個元素,將彈出的資料放入新的數組中 與方法 (rpoplpush)相同使用 * 當列表 source 為空白時, BRPOPLPUSH 命令將阻塞串連,直到等待逾時,或有另一個用戶端對 source 執行 LPUSH 或 RPUSH 命令為止。 * 逾時參數 timeout 接受一個以秒為單位的數字作為值。逾時參數設為 0 表示阻塞時間可以無限期延長(block indefinitely) 。 * */public static void brpoplpush(){redis.flushDB();//清除資料redis.lpush("base", "a","b","c","d");//初始化資料String s=redis.brpoplpush("base", "dest",0); System.out.println("s:"+s);List<String> list=redis.lrange("base", 0, -1);for(String str:list){System.out.println("base list"+str+" ");}List<String> list1=redis.lrange("dest", 0, -1);for(String str:list1){System.out.println("dest list:"+str+" ");}}/** * 從頭部彈出一個元素,將彈出的資料放入新的數組中 * */public static void rpoplpush(){redis.flushDB();//清除資料redis.lpush("base", "a","b","c","d");//初始化資料String s=redis.rpoplpush("base", "dest");System.out.println("彈出的元素:"+s);List<String> list=redis.lrange("base", 0, -1);for(String str:list){System.out.println("base list"+str+" ");}List<String> list1=redis.lrange("dest", 0, -1);for(String str:list1){System.out.println("dest list:"+str+" ");}}/** * LREM key count value * 根據參數 count 的值,移除列表中與參數 value 相等的元素。 * count > 0 : 從表頭開始向表尾搜尋,移除與 value 相等的元素,數量為 count 。 * count < 0 : 從表尾開始向表頭搜尋,移除與 value 相等的元素,數量為 count 的絕對值。 * count = 0 : 移除表中所有與 value 相等的值。 * */public static void lrem(){redis.flushDB();//清除資料redis.lpush("base", "a","b","c","d","e","f","g","h");//初始化資料Long index=redis.lrem("base", 0, "a");//移除與 集合裡面有a的元素System.out.println(index);List<String> list=redis.lrange("base", 0, -1);System.out.println("========剩餘元素==========");for(String str:list){System.out.println( str+" ");}}/** * LSET key index value *將列表 key 下標為 index 的元素的值設定為 value 。 *當 index 參數超出範圍,或對一個空列表( key 不存在)進行 LSET 時,返回一個錯誤。 * */public static void lset(){redis.flushDB();//清除資料redis.lpush("base", "a","b","c","d","e","f","g","h");//初始化資料redis.lset("base", 6, "2b");//將b元素設定為2bList<String> list=redis.lrange("base", 0, -1);for(String s:list){System.out.println(s);}}/** * 讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。 * 舉個例子,執行命令 LTRIM list 4 6 ,表示只保留列表 list 的4 到 6 元素,其餘元素全部刪除。 * */public static void ltrim(){redis.flushDB();//清除資料String [] s=new String[]{"a","b","c","d","e","f","g","h"};redis.lpush("base", s);//初始化資料redis.ltrim("base", 4, 6);//值保留b,c,d 對應的索引是4,5,6 多有被保留下來List<String> list=redis.lrange("base", 0, -1);for(String str:list){System.out.println(str);}}/** * 返回列表 key 的長度。 * 如果 key 不存在,則 key 被解釋為一個空列表,返回 0 . * 如果 key 不是清單類型,返回一個錯誤 * */public static void llen(){redis.flushDB();//清除資料redis.lpush("base", "a","b","c","d","e","f","g","h");//初始化資料Long length=redis.llen("base");System.out.println("長度:"+length);}/** * 返回列表 key 中,下標為 index 的元素。 * 下標(index)參數 start 和 stop 都以 0 為底,也就是說,以 0 表示列表的第一個元素,以 1 表示列表的第二個元素,以此類推。 * 你也可以使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。 * 如果 key 不是清單類型,返回一個錯誤。 * */public static void lindex(){redis.flushDB();//清除資料redis.lpush("base", "a","b","c","d","e","f","g","h");//初始化資料String s=redis.lindex("base", 2);System.out.println(s);}/** * LINSERT key BEFORE|AFTER pivot value * 將值 value 插入到列表 key 當中,位於值 pivot 之前或之後。 * 當 pivot 不存在於列表 key 時,不執行任何操作。pivot 指的數組中的元素 * 當 key 不存在時, key 被視為空白列表,不執行任何操作。 * 如果 key 不是清單類型,返回一個錯誤。 * */public static void linsert(){redis.flushDB();//清除資料redis.lpush("base", "a","b","c","d","e","f","g","h");//初始化資料redis.linsert("base", LIST_POSITION.BEFORE, "b", "2b");//在b 之前插入2b//redis.linsert("base", LIST_POSITION.AFTER, "b", "2b");//在b 之後插入2bList<String> list=redis.lrange("base", 0, -1);for(String str:list){System.out.println(str);}}public static void main(String [] args){linsert();}}
Redis學習筆記(4)-List