java 操作Redis Set 命令 例項(Jedis) (五)
直接上哎
package com.jjf.redis; import org.junit.Assert; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.Pipeline; import redis.clients.jedis.ScanResult; import java.util.List; import java.util.Set; /** * Created by jjf_lenovo on 2017/3/31. */ public class RedisSetTest { Jedis jedis = null; static final String DATASOURCE_URL = "182.254.213.106"; static final int DATASOURCE_SORT = 6379; static final String DATASOURCE_PASS = "123456"; static final int DATASOURCE_SELECT = 1; public RedisSetTest(){ //基本配置 jedis = new Jedis(DATASOURCE_URL,DATASOURCE_SORT); jedis.auth(DATASOURCE_PASS); jedis.select(DATASOURCE_SELECT); } @Test public void testSAdd(){ //sadd 將一個或多個 member 元素加入到集合 key 當中,已經存在於集合的 member 元素將被忽略。 Assert.assertTrue(jedis.sadd("set","a")==1); Assert.assertTrue(jedis.sadd("set","a","b","c")==2); Assert.assertTrue(jedis.del("set")==1); } @Test public void testSCard(){ //scard 返回集合 key 的基數(集合中元素的數量)。 Assert.assertTrue(jedis.sadd("set","a","b","c")==3); Assert.assertTrue(jedis.scard("set".getBytes())==3); Assert.assertTrue(jedis.del("set")==1); } @Test public void testSDiff(){ //sdiff 返回一個集合的全部成員,該集合是所有給定集合之間的差集。 Assert.assertTrue(jedis.sadd("set","a","b","c")==3); Assert.assertTrue(jedis.sadd("SET","A","B","C","a","b","c")==6); Set<String> a = jedis.sdiff("set","SET");//是找出set中,SET沒有的元素,多級的話,一個個比 Set<String> b = jedis.sdiff("SET","set");//是找出SET中,set沒有的元素,多級的話,一個個比 System.out.println(a.toString()+":::"+b.toString()); Assert.assertTrue(jedis.del("set","SET")==2); } @Test public void testSDiffStore(){ //sdiffstore 這個命令的作用和 SDIFF 類似,但它將結果儲存到 destination 集合,而不是簡單地返回結果集。 Assert.assertTrue(jedis.sadd("set","a","b","c")==3); Assert.assertTrue(jedis.sadd("SET","A","B","C","a","b","c")==6); Assert.assertTrue(jedis.sdiffstore("store","SET","set")==3); Assert.assertTrue(jedis.sdiffstore("store","set","SET")==0); Assert.assertTrue(jedis.del("set","SET")==2); } @Test public void testSInter(){ //sinter 返回一個集合的全部成員,該集合是所有給定集合的交集。 Assert.assertTrue(jedis.sadd("set","a","b","c")==3); Assert.assertTrue(jedis.sadd("SET","A","B","C","a","b","c")==6); Set<String> set = jedis.sinter("set","SET"); System.out.println(set.toString()); Assert.assertTrue(set.size()==3); Assert.assertTrue(jedis.del("set","SET")==2); } @Test public void testSInterStore(){ //sinterstore 這個命令類似於 SINTER 命令,但它將結果儲存到 destination 集合,而不是簡單地返回結果集。 Assert.assertTrue(jedis.sadd("set","a","b","c")==3); Assert.assertTrue(jedis.sadd("SET","A","B","C","a","b","c")==6); Assert.assertTrue(jedis.sinterstore("store","set","SET")==3); Assert.assertTrue(jedis.del("set","SET","store")==3); } @Test public void testSIsMember(){ //sismember 判斷 member 元素是否集合 key 的成員。 Assert.assertTrue(jedis.sadd("set","a","b","c")==3); Assert.assertTrue(jedis.sismember("set","b")); Assert.assertTrue(jedis.del("set")==1); } @Test public void testSMembers(){ //smembers 返回集合 key 中的所有成員。 不存在的 key 被視為空集合。 Assert.assertTrue(jedis.sadd("set","a","b","c")==3); Set<String> set = jedis.smembers("set"); System.out.println(set.toString()); Assert.assertTrue(set.size()==3); Assert.assertTrue(jedis.del("set")==1); } @Test public void testSMove(){ //將 member 元素從 source 集合移動到 destination 集合。 (原子操作) Assert.assertTrue(jedis.sadd("set","a","b","c")==3); Assert.assertTrue(jedis.sadd("SET","A","B","C","a","b","c")==6); Assert.assertTrue(jedis.smove("set","SET","a")==1); Set<String> a = jedis.smembers("set"); Set<String> b = jedis.smembers("SET"); System.out.println(a.toString()); System.out.println(b.toString()); Assert.assertTrue(a.size()==2); Assert.assertTrue(b.size()==6);//因為原本就存在a ,所以還是6個 Assert.assertTrue(jedis.del("set","SET")==2); } @Test public void testSPop(){ //spop 移除並返回集合中的一個隨機元素。 Assert.assertTrue(jedis.sadd("set","a","b","c")==3); System.out.println(jedis.spop("set")); Set<String> a = jedis.smembers("set"); Assert.assertTrue(a.size()==2); Assert.assertTrue(jedis.del("set")==1); } @Test public void testSRandMember(){ /** * 如果命令執行時,只提供了 key 引數,那麼返回集合中的一個隨機元素。 從 Redis 2.6 版本開始, SRANDMEMBER 命令接受可選的 count 引數: 如果 count 為正數,且小於集合基數,那麼命令返回一個包含 count 個元素的陣列,陣列中的元素各不相同。如果 count 大於等於集合基數,那麼返回整個集合。 如果 count 為負數,那麼命令返回一個數組,陣列中的元素可能會重複出現多次,而陣列的長度為 count 的絕對值。 */ Assert.assertTrue(jedis.sadd("set","a","b","c")==3); System.out.println(jedis.srandmember("set"));//不同於spop,srandmember不移除 Set<String> a = jedis.smembers("set"); Assert.assertTrue(a.size()==3); //測試多個隨機數 List<String> lista = jedis.srandmember("set",2);//返回兩個不重複的隨機數 System.out.println("lista:"+lista.toString()); List<String> listb = jedis.srandmember("set",5);//5>3 返回全部資料 System.out.println("listb:"+listb.toString()); List<String> listc = jedis.srandmember("set",-2); //返回|-2|個可以重複的資料 System.out.println("listc:"+listc.toString()); List<String> listd = jedis.srandmember("set",-6); //返回|-6|個可以重複的資料 System.out.println("listd:"+listd.toString()); Assert.assertTrue(jedis.del("set")==1); } @Test public void testSRem(){ //srem 移除集合 key 中的一個或多個 member 元素,不存在的 member 元素會被忽略。 Assert.assertTrue(jedis.sadd("set","a","b","c")==3); Assert.assertTrue(jedis.srem("set","a","d")==1); Assert.assertTrue(jedis.del("set")==1); } @Test public void testSunion(){ //sunion 返回一個集合的全部成員,該集合是所有給定集合的並集。 Assert.assertTrue(jedis.sadd("set","a","b","c")==3); Assert.assertTrue(jedis.sadd("SET","A","B","C","a","b","c")==6); Set<String> set = jedis.sunion("set","SET"); System.out.println(set.toString()); Assert.assertTrue(set.size()==6); Assert.assertTrue(jedis.del("set","SET")==2); } @Test public void testSunionStore(){ //sunion 返回一個集合的全部成員,該集合是所有給定集合的並集。 Assert.assertTrue(jedis.sadd("set","a","b","c")==3); Assert.assertTrue(jedis.sadd("SET","A","B","C","a","b","c")==6); Assert.assertTrue(jedis.sunionstore("store","set","SET")==6); Assert.assertTrue(jedis.del("set","SET","store")==3); } @Test public void testSScan(){ Pipeline pipeline = jedis.pipelined(); for(int i=0;i<1000;i++){ pipeline.sadd("set",String.valueOf(i)); } pipeline.sync(); ScanResult<String> result ;//= jedis.sscan("set",0); // System.out.println(result.getResult().size()+"::"+result.getStringCursor()); // System.out.println(result.getResult().toString()); int count = 0; int cursor = 0; do{ // System.out.println(result.getCursor()); result = jedis.sscan("set",cursor); cursor = Integer.valueOf(result.getStringCursor()); for (String ss : result.getResult()) { count++; System.out.print("<"+count+":" + ss + ">"); } System.out.println(); } while(cursor!=0); System.out.println(count); Assert.assertTrue(count==1000); Assert.assertTrue(jedis.del("set","SET","store")==1); } }
相關推薦
java 操作Redis Set 命令 例項(Jedis) (五)
直接上哎 package com.jjf.redis; import org.junit.Assert; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis
Redis學習(5)-Jedis(Java操作redis數據庫技術)
new 抽取 數量 pack cli int .get demo1 可選 Java連接redis 一,導入jar包 Redis有什麽命令,Jedis就有什麽方法 設置防火墻 在Linux上面運行如下代碼: 單實例:Jedis實例: package com.jedi
23 redis&jedis(java操作redis)
一、redis 認識nosql: 不支援sql語句來操作資料庫,而是需要用特定的語法來操作資料庫 1、關係型和非關係型資料庫比較 2.redis儲存資料的型別
redis--(六)java操作redis
技術分享 http ges 分享 .cn -1 -- edi image Java操作redis集群 redis--(六)java操作redis
Java操作Redis(代碼演示)
exce xxx mem log 來看 != 技術分享 org ons redis-demo演示 一、創建一個maven工程 1、在pom.xml中引入相關redis的相關依賴 1 <project xmlns="http://maven.apache.org/P
Redis學習(二)、JAVA操作Redis
enc main package 服務 clas redis學習 static out edi Redis學習(二)、JAVA操作Redis 一、測試連接Redis是否連通 1、導包 <dependency> <groupId>redis.c
jedis工具類:java操作redis資料庫
學完redis,需要在java客戶端中使用Jedis,作為連線redis的工具: JedisUtils工具類: public class JedisUtils{ //定義一個連線池物件: private final static JedisPool POOL; static {
Jedis操作Redis--Set型別
/** * Set(集合) * SADD,SCARD,SDIFF,SDIFFSTORE,SINTER,SINTERSTORE,SISMEMBER,SMEMBERS,SMOVE,SPOP,SRANDMEMBER,SREM,SUNION,SUNIONSTORE,SSCAN &nb
redis的資料型別Set,其原生命令和php操作Redis Set函式介紹
sRandMember(key,[count])函式 * 說明:從集合key中隨機取出一個或count個成員,但是不移除key中的成員 * 引數:key(集合的名稱),count(可選項,隨機取出成員的個數) * 返回值:沒有count引數,返回key中的一個成員(string);存在count,則返回隨機取
java操作redis叢集(基本操作)
package com.company; import redis.clients.jedis.HostAndPort; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisClu
java 操作redis (Spring 連線池)
Spring XML 配置檔案 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xml
Jedis客戶端操作redis快取命令詳解
jedis操作命令: 1.對value操作的命令 exists(key):確認一個key是否存在 del(key):刪除一個key type(key):返回值的型別 keys(pattern):返回滿足給定pattern的
java操作redis資料庫三:set集合
package com.redis; import java.util.Set; import redis.clients.jedis.Jedis; public class set_redis {Jedis jedis;set_redis(){jedis=new Demo
redis 之 使用java操作redis
main print 數據庫 cli 防火墻 images enc png red 1. 在java操作redis需要使用jedis插件,並且linux要開啟相關的防火墻。 重啟防火墻服務 : 2. 新建maven項目: 3.添加項目依賴: <dependenc
java集合系列——Set之HashSet和TreeSet介紹(十)
最大 ... gpo 鏈表 key 同步 中大 nds set接口 一.Set的簡介Set是一個不包含重復元素的 collection。更確切地講,set 不包含滿足 e1.equals(e2) 的元素。對 e1 和 e2,並且最多包含一個為 null 的元素。 Set的類
【redis,1】java操作redis: 將string、list、map、自己定義的對象保存到redis中
n) spa 存儲 div ber sys mil 操作 write 一、操作string 、list 、map 對象 1、引入jar: jedis-2.1.0.jar 2、代碼 /
Java操作Redis的簡單實例
Java操作Redis Redis的使用 Redis的簡單使用 Java與Redis結合 Java操作Redis是必備學習的內容,那我直接上一個超級簡單的案例給大家參考下!一、創建RedisTest類,代碼如下!import redis.clients.jedis.Jedis; public
第一次使用java操作Redis以及錯誤小結
目錄 java操作Redis的流程: 1.匯入jedis依賴包: 2.匯入junit依賴包: 3.寫測試方法: 關於testJedis( )執行時控制檯報錯分析: 1.redis.clients.jedis.exceptions.JedisConnec
swoft操作redis、多例項配置
修改連線池配置 app/config/properties/cache.php 配置檔案 return [ 'redis' => [ 'name' => 'redis', 'uri' =>
window java操作redis.doc
首先要用JAVA操作redis,需要先將redis服務端(no sql資料伺服器)開啟 第一步:解壓Redis-x64-3.2.100.zip (在百度網盤 學習文件子目錄壓縮\專項進階,如ngnix,webservice,linux,redis等\redis\wind