Java中使用Jedis操作Redis數據庫

在https://blog.csdn.net/qq_38455201/article/details/79203640這篇文章當中講述瞭如何配置和連接Redis數據庫,獲取Redis的操作對象Jedis,接下來,詳細記錄一下Jedis如何操作Redis當中的數據,主要包括操作String、List、Set、Sorted Set、HashMap等數據結構。

一:操作String

Jedis jedis = jedisPool.getResource();
//操作String
//添加一條數據
jedis.set("name","king james");
//根據key找到對應的value的值
jedis.get("name");
//再次設置:對一個key多次賦值的話,key對應的值是最後一次賦值的值,之前的被覆蓋。
jedis.set("name","kobe bryant");
//字符串拼接
jedis.append("name","  is my love");
//刪除某個鍵
jedis.del("name");
//同時設置多個鍵值對:獲取值的方式同上
jedis.mset("name","king james","age","33","country","American");
//假如值裏面有數字(字符串形式),可以進行+1的操作
jedis.incr("age");//age的值變成34
//進行-1的操作
jedis.decr("age");
//某個值增加多少:這裏是+20
jedis.incrBy("age",20);
//某個值減少多少:這裏是-20
jedis.decrBy("age",20);
//判斷是否存在某個key
jedis.exists("name");
//設置值的時間:存在5s
jedis.setex("name",5,"king james");
//查詢值的存活時間:當 key不存在時,返回 -2,當key存在但沒有設置剩餘生存時間時,返回-1,否則,以秒爲單位,返回key的剩餘生存時間。
Long ttl = jedis.ttl("name");
//去掉key的時間設置:不再有失效時間
jedis.persist("name");

二:操作List

//操作List集合
//保存數據:lpush-->left push
jedis.lpush("users","king james");
jedis.lpush("users","kobe bryant");
jedis.lpush("users","stephen curry");
jedis.lpush("users","Kevin Durant");
//查詢:第一個值是key,第二個值表示從0開始,第三個值表示結束(-1表示取全部)
//userListA當中的值排列情況:["Kevin Durant","stephen curry","kobe bryant","king james"]
List<String> userListA = jedis.lrange("users", 0, -1);
//保存數據:rpush-->right push
jedis.rpush("users","Wilt Chamberlain");
jedis.rpush("users","John Smith");
jedis.rpush("users","Karl Malone");
//查詢:第一個值是key,第二個值表示從0開始,第三個值表示結束(-1表示取全部)
//userListB當中值排列情況:["Kevin Durant","stephen curry","kobe bryant","king james","Wilt Chamberlain","John Smith","Karl Malone"]
List<String> userListB = jedis.lrange("users", 0, -1);
//移除並返回列表key的頭元素:lpop-->left pop
String nameA = jedis.lpop("users");//Kevin Durant
//移除並返回列表key的尾元素:rpop-->right pop
String nameB = jedis.rpop("users");//Karl Malone
//刪除key
jedis.del("users");
//給特定位置賦值
jedis.lset("users", 1, "Yao Ming");
//查詢特定位置的值:idnex從0開始
jedis.lindex("users",1);
//對list進行裁剪:只保留下標1-3的值,其他的全部刪除,下標從0開始
jedis.ltrim("users", 1, 3);
//返回list的長度
jedis.llen("users");
//根據參數count的值,移除列表中與參數value相等的元素。
//count > 0 : 從表頭開始向表尾搜索,移除與 value 相等的元素,數量爲 count 。
//count < 0 : 從表尾開始向表頭搜索,移除與 value 相等的元素,數量爲 count 的絕對值。
//count = 0 : 移除表中所有與 value 相等的值。
jedis.lrem("users",2,"king james");
/**
 * ("key","LIST_POSITION","pivot","value")
 * LINSERT key BEFORE|AFTER pivot value
 * 將值 value 插入到列表 key 當中,位於值 pivot 之前或之後。
 * 當 pivot 不存在於列表 key 時,不執行任何操作。
 * 當 key 不存在時, key 被視爲空列表,不執行任何操作。
 * 如果 key 不是列表類型,返回一個錯誤。
 */
jedis.linsert("users", BinaryClient.LIST_POSITION.AFTER,"Yao Ming","AAAA");
//從users的右邊彈出一個元素,把該元素左插入到players列表當中
jedis.rpoplpush("users","players");

三:操作Set集合:和List不同,元素是無序的,因此也不能夠重複

//操作Set集合:和列表不同,集合中的元素是無序的,因此元素也不能重複。
jedis.sadd("users","king james");
jedis.sadd("users","kobe bryant");
jedis.sadd("users","stephen curry");
jedis.sadd("users","Kevin Durant");
//查詢users裏面的所有數據
Set<String> users = jedis.smembers("users");
//移除users當中的某個元素
jedis.srem("users", "Kevin Durant");
//獲取users當中的元素個數
Long size = jedis.scard("users");
//隨機移除users當中的一個元素
jedis.spop("users");
//返回users裏面的一個隨機元素
jedis.srandmember("users");
/**
 * 從users當中返回一個長度爲3的隨機數組。
 * 當數字大於0時,list裏面元素都不相同,小於0時,元素可能相同,長度爲count的絕對值
 */
List<String> list = jedis.srandmember("users",3);
//判斷users裏面是否含有某個元素
Boolean isMember = jedis.sismember("users", "king james");
//批量插入數據
jedis.sadd("players", "Yao Ming", "Wilt Chamberlain","Karl Malone");
//交集
Set<String> sinter = jedis.sinter("users","players");
//差集
Set<String> sdiff = jedis.sdiff("users","players");
//並集
Set<String> sunion = jedis.sunion("users", "players");
//把users當中的king james 移動到players當中
jedis.smove("users","players","king james");

四:操作Sorted Set:有序的Set集合

//操作有序Set
//新增:根據“第二個參數(score)”進行排序。
jedis.zadd("users",10,"king james");
//元素相同時,更新爲當前的排序數
jedis.zadd("users",20,"king james");
//查詢users裏面的所有元素
Set<String> usersA = jedis.zrange("users", 0, -1);
//查詢當前set集合的元素個數
jedis.zcard("users");
//返回users集合裏面,score 值在min和max之間(包括)元素個數
jedis.zcount("users",10,20);
//移除users中的一個或多個成員,不存在的成員將被忽略。
jedis.zrem("users","king james");
//移除users當中第0到第1之間的元素(包含),也可以是負數:以 -1 表示最後一個成員, -2 表示倒數第二個成員
jedis.zremrangeByRank("users",0,3);
//移除users當中score值在min和max之間(包括)元素
jedis.zremrangeByScore("users",10,20);
//返回某個元素的score值
jedis.zscore("users", "king james");
//返回有序集users中,所有score值介於min和max之間(包括)的元素
jedis.zrangeByScore("users",10,20);
//返回元素king james在users當中的序號,排第一位0
long rank = jedis.zrank("users","king james");

五:操作HashMap

//操作HashMap
Map<String,String> map = Maps.newHashMap();
map.put("Cleveland Cavaliers","King James");
map.put("Los Angeles","Kobe Bryant");
map.put("Memphis Grizzlies","Mike Conley");
map.put("Miami Heat","Goran Dragic");
map.put("Golden State Warriors","Stephen Curry");
//設置值
jedis.hmset("NBA",map);
//根據map當中的key,去查詢key對應的value
List<String> MVP = jedis.hmget("NBA", "Los Angeles", "Cleveland Cavaliers");
//刪除某個key對應的value
jedis.hdel("NBA","Miami Heat");
//返回NBA當中map的鍵值對的數量
jedis.hlen("NBA");
//是否存在NBA這個key
jedis.exists("NBA");
//返回NBA當中map的所有的key
Set<String> teams = jedis.hkeys("NBA");
//返回NBA當中所有的key對應value的值
List<String> players = jedis.hvals("NBA");
//返回NBA當中對應的map的值
Map<String, String> map1 = jedis.hgetAll("NBA");

六:其他的一些通用操作

//通用操作
//刪除
jedis.del("NBA");
//存在檢測
jedis.exists("NBA");
//設置key的過期時間,單位爲秒
jedis.expire("NBA",600);
//設置key在那個時間點過期
jedis.expireAt("NBA",System.currentTimeMillis()+30*1000);
//獲取redis當中的所有的key值
Set<String> keys = jedis.keys("*");
//當前數據庫的key移動到給定的數據庫db當中。
jedis.move("NBA", 1);
//移除給定key的生存時間
jedis.persist("NBA");
//以毫秒爲單位返回 key 的剩餘生存時間
jedis.pttl("NBA");
//以秒爲單位返回 key 的剩餘生存時間
jedis.ttl("NBA");
//從當前數據庫中隨機返回(不刪除)一個 key
jedis.randomKey();
//將 key 改名爲 newkey
jedis.rename("NBA", "CBA");
//當且僅當 newkey 不存在時,將 key 改名爲 newkey
jedis.renamenx("NBA", "CBA");
//返回 key 所儲存的值的類型
jedis.type("NBA");
以上內容基本總結完了Jedis對Redis數據庫的常用的操作,還有一些比較冷門的操作沒有總結,希望在用到的時候再次進行總結積累,方便下次的使用。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章