Redis学习笔记(4)-List
生活随笔
收集整理的這篇文章主要介紹了
Redis学习笔记(4)-List
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
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 中指定區(qū)間內的元素,區(qū)間以偏移量 start 和 stop 指定。* */public static void lrange(){redis.flushDB();//清除數(shù)據(jù)/**初始化數(shù)據(jù)*/redis.lpush("languages", "english","chain");redis.lpush("languages", "english"); /**取數(shù)據(jù)*/List<String> list=redis.lrange("languages", 0, -1);for(String s:list){System.out.println("s:"+s);}}/*** 將一個或多個值 value 插入到列表 key 的表頭* 如果有多個 value 值,那么各個 value 值按從左到右的順序依次插入到表頭:* 如果 key 不存在,一個空列表會被創(chuàng)建并執(zhí)行 LPUSH 操作。* 當 key 存在但不是列表類型時,返回一個錯誤。* */public static void lpush(){redis.flushDB();//清除數(shù)據(jù)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();//清除數(shù)據(jù)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 不存在,一個空列表會被創(chuàng)建并執(zhí)行 RPUSH 操作。* 當 key 存在但不是列表類型時,返回一個錯誤。* */public static void rpush(){redis.flushDB();//清除數(shù)據(jù)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();//清除數(shù)據(jù)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();//清除數(shù)據(jù)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();//清除數(shù)據(jù)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();//清除數(shù)據(jù)//redis.lpush("languages", "a","b","c","d","e");//初始化數(shù)據(jù)redis.lpush("base", "a","b","c","d");//初始化數(shù)據(jù)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();//清除數(shù)據(jù)redis.lpush("base", "a","b","c","d");//初始化數(shù)據(jù)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+" ");}}/*** 從頭部彈出一個元素,將彈出的數(shù)據(jù)放入新的數(shù)組中 與方法 (rpoplpush)相同使用* 當列表 source 為空時, BRPOPLPUSH 命令將阻塞連接,直到等待超時,或有另一個客戶端對 source 執(zhí)行 LPUSH 或 RPUSH 命令為止。* 超時參數(shù) timeout 接受一個以秒為單位的數(shù)字作為值。超時參數(shù)設為 0 表示阻塞時間可以無限期延長(block indefinitely) 。* */public static void brpoplpush(){redis.flushDB();//清除數(shù)據(jù)redis.lpush("base", "a","b","c","d");//初始化數(shù)據(jù)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+" ");}}/*** 從頭部彈出一個元素,將彈出的數(shù)據(jù)放入新的數(shù)組中* */public static void rpoplpush(){redis.flushDB();//清除數(shù)據(jù)redis.lpush("base", "a","b","c","d");//初始化數(shù)據(jù)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* 根據(jù)參數(shù) count 的值,移除列表中與參數(shù) value 相等的元素。* count > 0 : 從表頭開始向表尾搜索,移除與 value 相等的元素,數(shù)量為 count 。* count < 0 : 從表尾開始向表頭搜索,移除與 value 相等的元素,數(shù)量為 count 的絕對值。* count = 0 : 移除表中所有與 value 相等的值。* */public static void lrem(){redis.flushDB();//清除數(shù)據(jù)redis.lpush("base", "a","b","c","d","e","f","g","h");//初始化數(shù)據(jù)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 參數(shù)超出范圍,或對一個空列表( key 不存在)進行 LSET 時,返回一個錯誤。* */public static void lset(){redis.flushDB();//清除數(shù)據(jù)redis.lpush("base", "a","b","c","d","e","f","g","h");//初始化數(shù)據(jù)redis.lset("base", 6, "2b");//將b元素設置為2bList<String> list=redis.lrange("base", 0, -1);for(String s:list){System.out.println(s);}}/*** 讓列表只保留指定區(qū)間內的元素,不在指定區(qū)間之內的元素都將被刪除。* 舉個例子,執(zhí)行命令 LTRIM list 4 6 ,表示只保留列表 list 的4 到 6 元素,其余元素全部刪除。* */public static void ltrim(){redis.flushDB();//清除數(shù)據(jù)String [] s=new String[]{"a","b","c","d","e","f","g","h"};redis.lpush("base", s);//初始化數(shù)據(jù)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();//清除數(shù)據(jù)redis.lpush("base", "a","b","c","d","e","f","g","h");//初始化數(shù)據(jù)Long length=redis.llen("base");System.out.println("長度:"+length);}/*** 返回列表 key 中,下標為 index 的元素。* 下標(index)參數(shù) start 和 stop 都以 0 為底,也就是說,以 0 表示列表的第一個元素,以 1 表示列表的第二個元素,以此類推。* 你也可以使用負數(shù)下標,以 -1 表示列表的最后一個元素, -2 表示列表的倒數(shù)第二個元素,以此類推。* 如果 key 不是列表類型,返回一個錯誤。* */public static void lindex(){redis.flushDB();//清除數(shù)據(jù)redis.lpush("base", "a","b","c","d","e","f","g","h");//初始化數(shù)據(jù)String s=redis.lindex("base", 2);System.out.println(s);}/*** LINSERT key BEFORE|AFTER pivot value* 將值 value 插入到列表 key 當中,位于值 pivot 之前或之后。* 當 pivot 不存在于列表 key 時,不執(zhí)行任何操作。pivot 指的數(shù)組中的元素* 當 key 不存在時, key 被視為空列表,不執(zhí)行任何操作。* 如果 key 不是列表類型,返回一個錯誤。* */public static void linsert(){redis.flushDB();//清除數(shù)據(jù)redis.lpush("base", "a","b","c","d","e","f","g","h");//初始化數(shù)據(jù)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();}
}
轉載于:https://www.cnblogs.com/zuolun2017/p/5607910.html
總結
以上是生活随笔為你收集整理的Redis学习笔记(4)-List的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android开发之如何保证Servic
- 下一篇: 【技术干货】浏览器工作原理和常见WEB攻