【工程截圖】
【String類型操作】
package com.higgin.string; import java.util.List; import redis.clients.jedis.Jedis; /** * jedis針對字符串的各種操作 */ public class StringDemo { public static void main(String[] args) { Jedis jedis = new Jedis("127.0.0.1",6379); //清空redis中當前所有數據 jedis.flushDB(); //保存一個字符串 jedis.set("name", "HigginCui"); //在字符串后面追加一個字符串,如果key不存在,則創建一個新的key jedis.append("name", "12345"); //獲取一個字符串 String name =jedis.get("name"); System.out.println(name); //自增1,redis會轉換成整型,再進行操作,默認為0。返回自增操作后的值 long count=jedis.incr("count"); //增加指定的值,返回操作后的值 count=jedis.incrBy("count", 20); //自減1 count=jedis.decr("count"); //減少指定的值 count =jedis.decrBy("count", 100); //浮點類型自增指定的數值 jedis.set("price", "18.80"); double price=jedis.incrByFloat("price", 5); System.out.println(price); //獲取key的舊值,並給其設置新值,返回值是被修改之前的值 String oldName=jedis.getSet("name", "Higgin"); System.out.println(oldName); //獲取指定長度的字符串 jedis.getrange("name", 0, -1); //替換字符串部分內容 jedis.setrange("name", 0, "ab"); //Higgin--->abggin //只有key不存在的時候才進行保存(key若已經存在不錯任何改變,返回0,若不存在,則創建一個key並賦值,返回1) long result=jedis.setnx("name", "abc"); System.out.println(result); //打印的是0 result=jedis.setnx("email","1234567@qq.com"); System.out.println(result); //打印的是1 //獲取字符串的長度 long len=jedis.strlen("email"); System.out.println(len); //設置多個key的值 jedis.mset("name","Higgin","age","20","sex","man"); //獲取多個key的值 List<String> list= jedis.mget("name","age","sex"); //同時設置多個key,且key不存在(若有一個key已存在,則整個操作都無效,必須所有的key都不存在才有效) jedis.msetnx("name","abc123","language","java","phone","1234567890"); //name之前已存在,所以該句代碼操作完全無效 jedis.msetnx("language","java","phone","1234567890"); //兩個key之前都不存在,所以都有效 //保存帶有效期的key 單位:毫秒 jedis.psetex("expireKey1", 4000, "66666"); //保存帶有效期的key 單位:秒 jedis.setex("expireKey2", 5, "777777"); //斷開連接 jedis.quit(); } }
【Hash類型的操作】
package com.higgin.hash; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import redis.clients.jedis.Jedis; /** * Hash類型的操作 */ public class HashDemo { public static void main(String[] args) { Jedis jedis = new Jedis("127.0.0.1",6379); //清空redis中當前所有數據 jedis.flushDB(); //添加hash元素,hset每次只能添加一個成員變量 long r=jedis.hset("user:1001", "name", "higgin"); r=jedis.hset("user:1001", "age","18"); System.out.println(r); //如果key不存在則添加,負責操失敗。(key存在返回0,反之返回1) r=jedis.hsetnx("user:1001", "name", "6666"); System.out.println(r); r=jedis.hsetnx("user:1001", "email", "123@qq.com"); System.out.println(r); //獲取某一個key的值 String name=jedis.hget("user:1001", "name"); System.out.println(name); //獲取所有字段的map類型數據 Map<String,String> map=jedis.hgetAll("user:1001"); for(Entry<String, String> entry:map.entrySet()){ System.out.println(entry.getKey()+"---"+entry.getValue()); } //獲取所有字段的值 List<String> values=jedis.hvals("user:1001"); for(String v:values){ System.out.println("value:"+v); } //刪除某個字段,返回刪除成功的個數 long dr=jedis.hdel("user:1001", "name","email","haha"); System.out.println(dr); //判斷某個key的field字段是否存在 boolean b=jedis.hexists("user:1001", "name"); //對某個field累加指定的數值,返回累加后的值(如果希望減,可以給個 負數的參數) r=jedis.hincrBy("user:1001", "age", 5); System.out.println(r); //對某個浮點類型的field累加指定的數值 jedis.hset("user:1001", "height", "170.00"); double h=jedis.hincrByFloat("user:1001", "height", 2); System.out.println(h); //獲取hash的field字段數量 long num=jedis.hlen("user:1001"); System.out.println(num); //設置多個字段的值,如果成功返回"OK"字符串 Map<String,String> userMap=new HashMap<String,String>(); userMap.put("name", "Jack"); userMap.put("age", "19"); String isOK=jedis.hmset("user:1002",userMap); System.out.println(isOK); //獲取多個字段的值 List<String> list=jedis.hmget("user:1001", "age","name"); jedis.quit(); } }
【list類型操作】
package com.higgin.list; import java.util.List; import redis.clients.jedis.Jedis; /** * list 列表的操作 * */ public class ListDemo { public static void main(String[] args) { Jedis jedis = new Jedis("127.0.0.1",6379); //清空redis中當前所有數據 jedis.flushDB(); //從左邊(頭部)添加元素,返回列表的長度 long len=jedis.lpush("chars", "a","b","c","d"); //此時 chars為:d c b a System.out.println(len); //從右邊(尾部)添加元素,返回列表的長度 len=jedis.rpush("chars", "1","2","3","4","5"); //此時 chars為: d c b a 1 2 3 4 5 System.out.println(len); //獲取列表的長度 len=jedis.llen("chars"); System.out.println(len); //獲取列表元素,0:索引開始位置 List<String> list=jedis.lrange("chars", 0, -1); for(String s:list){ System.out.print(s+" "); //輸出 d c b a 1 2 3 4 5 } //刪除指定的相同的元素,返回刪除成功的元素個數 jedis.rpush("fruit", "apple","apple","banana","apple"); long r=jedis.lrem("fruit", 2, "apple"); //從左往右刪除,刪除最先出現的2個"apple"元素 System.out.println("\n"+r); list=jedis.lrange("fruit", 0, -1); for(String s:list){ System.out.print(s+" "); //banana apple } //彈出列表中的左邊第一個元素 String s=jedis.lpop("chars"); System.out.println(s); //彈出列表右邊的最后一個元素 s=jedis.rpop("chars"); //往列表左邊插入元素,列表必須存在,如果不存在,不做任何操作 jedis.lpushx("char888", "P"); //往列表右邊插入元素,列表必須存在,如果不存在,不做任何操作 jedis.rpushx("chars999", "X"); //修改列表中指定索引的元素 jedis.lset("chars", 2, "Z"); //返回指定索引的元素 String str=jedis.lindex("chars", 1); //截取並保存列表中指定范圍內的元素 jedis.ltrim("chars", 2, 5); //保留索引為2,3,4,5的四個元素 //彈出chars1的最右邊一個元素到chars2列表的最左邊 jedis.rpush("chars1", "a","b","c"); //chars1: a b c jedis.rpush("chars2", "1","2","3","4"); //chars2: 1 2 3 4 jedis.rpoplpush("chars1", "chars2"); //chars1:a b chars2: c 1 2 3 4 jedis.quit(); } }
【Set類型操作】
package com.higgin.set; import java.util.List; import java.util.Set; import redis.clients.jedis.Jedis; /** * 集合 */ public class SetDemo { public static void main(String[] args) { Jedis jedis = new Jedis("127.0.0.1",6379); //清空redis中當前所有數據 jedis.flushDB(); //添加元素,返回添加成功的元素個數 long fruitNum=jedis.sadd("fruits","apple","banana","lemen"); System.out.println(fruitNum); //輸出3 fruitNum=jedis.sadd("fruits", "apple","pear","blueberry"); System.out.println(fruitNum); //輸出2 //查詢集合中的元素個數 fruitNum=jedis.scard("fruits"); System.out.println(fruitNum); //取多個集合的差集 jedis.sadd("school1", "zhangsan","lisi","wangwu"); jedis.sadd("school2", "zhangsan","maliu"); Set<String> s1=jedis.sdiff("school1","school2"); //取屬於school1,但不屬於school2的內容 System.out.println(s1.size()); //s1中包含"lisi","wangwu" //取出school1和school2集合的差集,並存儲在school3中 jedis.sdiffstore("school3","school1", "school2"); System.out.println(jedis.scard("school3")); //取多個集合的交集 jedis.sinter("school1","school2"); //取school1和school2的交集,存儲在school4中 jedis.sinterstore("school4", "school1","school2"); //取多個集合的並集 jedis.sunion("school1","school2"); //取school1和school2的並集,並存儲在school5中 jedis.sunionstore("school5", "school1","school2"); //判斷某個元素是否在某個集合中 boolean b=jedis.sismember("school1", "zhangsan"); //獲取集合中的所有元素 Set<String> school1=jedis.smembers("school1"); for(String s:school1){ System.out.println(s); } //從一個集合中移動指定的元素到另外一個集合中(把school1中的"lisi"移動到"school2"中) jedis.smove("school1", "school2", "lisi"); for(String s:jedis.smembers("school2")){ System.out.println("school2:"+s); } //從集合中隨機獲取2個元素 List<String> list=jedis.srandmember("school2",2); //從集合中隨機移除一個或多個元素,返回被移除的元素 // Set<String> popObj=jedis.spop("fruits", 1); // System.out.println(popObj); //從集合中刪除一個或多個指定的元素,返回刪除的個數 long remNum=jedis.srem("fruits", "apple","blueberry","123"); System.out.println(remNum); jedis.quit(); } }
【帶分數的set】
package com.higgin.sortedset; import java.util.Set; import redis.clients.jedis.Jedis; /** * 帶分數的集合 * @author YH * */ public class SortedSet { public static void main(String[] args) { Jedis jedis = new Jedis("127.0.0.1",6379); //清空redis中當前所有數據 jedis.flushDB(); //添加元素 jedis.zadd("score", 100, "Higgin"); jedis.zadd("score", 90, "zhangsan"); jedis.zadd("score", 80.5, "lisi"); jedis.zadd("score", 70, "wangwu"); jedis.zadd("score", 60.5, "maliu"); jedis.zadd("score", 50, "songqi"); //獲取所有元素 Set<String> set=jedis.zrange("score", 0, -1); for(String s :set){ System.out.println(s); } //獲取指定分數范圍內的元素的數量 long count=jedis.zcount("score", 60, 90); //包含60和90 System.out.println(count); //為指定的元素增加分值,返回新的分數 Double newCount=jedis.zincrby("score", 8, "lisi"); System.out.println(newCount); //返回某個元素的分數的排名(從小到大排名,第1名排名為0,第2名排名為1) long rank=jedis.zrank("score", "zhangsan"); System.out.println("rank="+rank); //返回某個元素的分數的排名(從大到小) rank=jedis.zrevrank("score", "zhangsan"); System.out.println("rank="+rank); //獲取對應的元素的分數 Double score=jedis.zscore("score", "Higgin"); System.out.println("score="+score); //獲取指定排名范圍內的元素 (按從小到大排序) set=jedis.zrange("score", 0, 2); for(String s :set){ System.out.println("--"+s); } //獲取指定排名范圍內的元素 (按從大到小排序) set=jedis.zrevrange("score", 0, 2); for(String s :set){ System.out.println("~~"+s); } //刪除元素,返回刪除成功的元素的數量 count=jedis.zrem("score", "zhangsan","lisi"); System.out.println(count); jedis.quit(); } }