REDIS提供的map,list,set,sortedset使用测试
生活随笔
收集整理的這篇文章主要介紹了
REDIS提供的map,list,set,sortedset使用测试
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
public class RedisTest {public JedisPool jedisPool = null;public void init(){//創建配置信息JedisPoolConfig pool = new JedisPoolConfig();//設置最大的總鏈接數pool.setMaxTotal(300);//設置最大空閑鏈接數pool.setMaxIdle(100);//設置最大等待時間pool.setMaxWaitMillis(10000);//在獲取實例的時候進行validate操作,從而使獲得的實例都是可用的pool.setTestOnBorrow(true);//使用配置信息,ip和端口來初始化一個鏈接池jedisPool = new JedisPool(pool,"192.168.0.85", 6379); }/*** * 測試在redis中使用map進行操作* * * */public void testMap(){//獲得一個實例Jedis jedis = jedisPool.getResource();//整個map的key(通過這個key來獲取map對象)String redisMapKey="test_map";try {//選用數據庫13jedis.select(13);//刪除test_map所對應的值(也就是map對象)jedis.del(redisMapKey);/*** 往map中插入key-value開始* *///這個語句的意思可理解為:向test_map對應的map中插入一個key為key_1,value為1的key-value對jedis.hset(redisMapKey, "key_1", "1");jedis.hset(redisMapKey, "key_2", "2");jedis.hset(redisMapKey, "key_3", "3");jedis.hset(redisMapKey, "key_4", "4");jedis.hset(redisMapKey, "key_5", "5");jedis.hset(redisMapKey, "key_6", "6");/*** 往map中插入key-value結束* *//*測試map的get操作*/System.out.println("test map's get:-----------");/*給出map所對應的key(redisMapKey變量),以及想從map中獲得的value的key(key_1)*/String hget = jedis.hget(redisMapKey, "key_1");System.out.println(hget);/*獲得map中的所有key值*/System.out.println("test get all keys:--------------- ");/*給出map所對應的key(redisMapKey變量)*//*返回的key是封裝在set中的,因為key是唯一的*/Set<String> hkeys = jedis.hkeys(redisMapKey);for(String str:hkeys){//輸出獲得的map的所有keySystem.out.println(str);}/*獲得map中的所有value值*/System.out.println("test get all values:------------------");/*給出map所對應的key(redisMapKey變量)*//*反悔的值封裝在list中,因為value的值是可重復的*/List<String> hvals = jedis.hvals(redisMapKey);for(String str:hvals){//輸出獲得的map的所有valueSystem.out.println(str);}/*查詢在指定的map中是否包含某個key值對對應的key-value對*/System.out.println("test if a key exist in the map:------------------");/*給出map所對應的key(redisMapKey變量)和要在該map中查詢的key的值*//*如果存在返回true,如果不存在返回false*/Boolean hexists = jedis.hexists(redisMapKey, "key_1");Boolean hexists2 = jedis.hexists(redisMapKey, "key_100");System.out.println("key_1's exit result is: "+hexists+", key_100's exit result is: "+hexists2);/*獲得map中的所有key-value對*/System.out.println("test get all :----------------------");/*給出map所對應的key(redisMapKey變量)*/Map<String, String> hgetAll = jedis.hgetAll(redisMapKey); Set<Entry<String, String>> entrySet = hgetAll.entrySet();for(Entry<String, String> en:entrySet){/*輸出map中的所有key-value對*/System.out.println(en.getKey()+":"+en.getValue());}/*獲得map的長度*/System.out.println("get the length of hmap:-------------------");/*給出map所對應的key(redisMapKey變量)*/Long hlen = jedis.hlen(redisMapKey);System.out.println(hlen); /*對map中的某個key的value進行累加操作*/System.out.println("test increment:--------------");System.out.println("before increment:");List<String> hvals2 = jedis.hvals(redisMapKey);for(String str:hvals2){/*輸出在累加之前的值*/System.out.println(str);}/*給redisMapKey變量對應的map中的key值為key_6的value的值累加2 返回值是累加后的結果*/Long hincrBy = jedis.hincrBy(redisMapKey, "key_6", 2);System.out.println("incremnt value is:"+hincrBy);System.out.println("after increment:");List<String> hvals3 = jedis.hvals(redisMapKey);for(String str:hvals3){/*輸出在累加之后的值*/System.out.println(str);}/*刪除map中的某個key對對應的key-value對*/System.out.println("test del:-----------------------");/*給出redisMapKey變量來指出要刪除哪個map,然后key_1指出要刪除該map中的哪個key-value對*/jedis.hdel(redisMapKey, "key_1");Set<String> afterDelKeys=jedis.hkeys(redisMapKey);for(String str:afterDelKeys){//輸出刪除操作后map中的所有key值System.out.println(str);}} catch (Exception e) {e.printStackTrace();}finally{jedis.close();}}/*** * 測試redis中的list* */public void testLst(){/*獲得一個jedis鏈接實例*/Jedis jedis = jedisPool.getResource();try {/*選擇數據庫13*/jedis.select(13);/*向test_lst所對應的list中插入123和223兩個值 (可以一直往后寫,因為采用的是。。。的傳參方式)* 與lpush對應的還有rpush* lpush從左端插入元素,配合lpop就形成了棧,配合rpop就是隊列* rpush從右側插入元素,配合rpop就形成了棧,配合lpup就是隊列* * */jedis.lpush("test_lst", "123","223");/*獲得test_lst中所有的值(從0開始,到-1結束就是所有的值;也可任意設置開始和結束下標)*/List<String> lrange = jedis.lrange("test_lst", 0, -1);System.out.println("before pop:");/*輸出test_lst的長度*/System.out.println("list's length is: " + jedis.llen("test_lst"));for(String str:lrange){System.out.println(str);}/*向test_lst中下標為0的位置插入一個setted_value*/jedis.lset("test_lst", 0, "setted_value");/*從test_lst的右端彈出一個值(也有從左端彈出的為lpop),這個值會從lst中移除*//*如果我們一直在下標為0的位置插入元素,然后使用rpop,那么我們模擬的就是隊列,先進先出* 如果使用lpop,那么模擬的就是棧,后勁先出* */String rpop = jedis.rpop("test_lst");System.out.println("rpoped value is : "+rpop);lrange = jedis.lrange("test_lst", 0, -1);System.out.println("after pop:");for(String str:lrange){//輸出pop操作后的test_lst中的值System.out.println(str);}System.out.println("after trim");/*對test_lst進行裁剪,指定了裁剪的開始位置和結束位置。裁剪之后test_lst只包含[開始位置,結束位置]區間的值*/jedis.ltrim("test_lst", 0, 3);lrange = jedis.lrange("test_lst", 0, -1);for(String str:lrange){//輸出裁剪結果System.out.println(str);}/*從test_lst中移除值為setted_value的第二個值 如果把2換成0,那么所有的setted_value都會被移除*/jedis.lrem("test_lst", 2, "setted_value");System.out.println("after removed:"); lrange = jedis.lrange("test_lst", 0, -1);for(String str:lrange){//輸出移除后的test_lst的所有值System.out.println(str);}} catch (Exception e) {e.printStackTrace();}finally{jedis.close();} }/*** * 測試redis中的set* */public void testSet(){Jedis jedis = jedisPool.getResource();//獲得jedis鏈接實例/*兩個set 一個叫test_set 一個叫 test_set_two*/String redisSetKey="test_set";String redisSetKeyTwo="test_set_two";try {/*選擇數據庫13,并刪除兩個set*/jedis.select(13);jedis.del(redisSetKey);jedis.del(redisSetKeyTwo);System.out.println("test set's add:------------------------");/*向redisSetKey中添加元素,這里添加了1~6供六個元素*/jedis.sadd(redisSetKey, "1","2","3","4","5","6");/*向redisSetKeyTwo中添加 2 4 6 8 10 這五個元素*/jedis.sadd(redisSetKeyTwo, "2","4","6","8","10");System.out.println("test get all memebers of a set:-----------");/*獲得set中的所有值,返回一個set*/Set<String> smembers = jedis.smembers(redisSetKey);for(String str:smembers){//遍歷輸出set中的值System.out.println(str);}System.out.println("test if a member exits in the set:-------------");/*分別判斷1 和 7 是否屬于redisSetKey所指向的set中*/Boolean sismember = jedis.sismember(redisSetKey, "1");Boolean sismember2 = jedis.sismember(redisSetKey, "7");System.out.println("1 in set is:" +sismember+",7 in set is: "+sismember2);System.out.println("test del set's memeber:-------------------------");/*刪除redisSetKey所指向的set中1這個值(set和list不同,所有的值都是唯一的,所以不存在指定要刪除的個數一說)*/jedis.srem(redisSetKey, "1");System.out.println("after del:");Set<String> smembers1 = jedis.smembers(redisSetKey);for(String str:smembers1){//檢驗是否成功刪除System.out.println(str);}System.out.println("test set's pop:--------------------");/*隨機從redisSetKey所指向的set中取出一個值(在set中刪除并返回)*/String spop = jedis.spop(redisSetKey);System.out.println("poped value is :"+spop);System.out.println("after pop :");Set<String> smembers2 = jedis.smembers(redisSetKey);for(String str:smembers2){//檢驗彈出后的setSystem.out.println(str);} System.out.println("test set's random:---------------------");/*隨機從redisSetKey所指向的set中返回一個值(不在set中刪除僅返回)*/String srandmember = jedis.srandmember(redisSetKey);System.out.println("random value is :"+srandmember);System.out.println("after random:");Set<String> smembers3 = jedis.smembers(redisSetKey);for(String str:smembers3){//檢驗random之后set中是否少了值(檢驗結果是沒有少)System.out.println(str);}System.out.println("test set's diff:-------------------");/*求一個新的set,這set中包含在redisSetKey中出現但不再redisSetKeyTwo中出現的所有元素(即 redisSetKey-redisSetKeyTwo)*/Set<String> sdiff = jedis.sdiff(redisSetKey,redisSetKeyTwo);for(String str:sdiff){System.out.println(str);}System.out.println("test set's inter:-------------------------");/*求一個新的set,這set中包含在redisSetKey中出現且在redisSetKeyTwo中出現的所有元素*/Set<String> sinter = jedis.sinter(redisSetKey,redisSetKeyTwo);for(String str:sinter){System.out.println(str);}System.out.println("test set's unino:-----------------------");/*求一個新的set,這set中包含在redisSetKey中出現或在redisSetKeyTwo中出現的所有元素*/Set<String> sunion = jedis.sunion(redisSetKey,redisSetKeyTwo);for(String str:sunion){System.out.println(str);}} catch (Exception e) {e.printStackTrace();}finally{jedis.close();}}/*** * 測試有序的set* */public void testSortSet(){/*獲得redis鏈接實例*/Jedis jedis = jedisPool.getResource();/*有序的set的key,用來在redis中唯一標識一個有序的set 這里起名為 test_sort*/String redisSortedKey="test_sort";try {/*選用數據庫13,并刪除以前的test_sort所指向的value*/jedis.select(13);jedis.del(redisSortedKey);/*向有序set中插入zero,three,two,one,four這幾個單詞,* 它們前面的0,3,2,1,4代表他們的分數(score),在有序set中就是根據這個分數進行排序的* */jedis.zadd(redisSortedKey, 0, "zero");jedis.zadd(redisSortedKey, 3, "three");jedis.zadd(redisSortedKey, 2, "two");jedis.zadd(redisSortedKey, 1, "one");jedis.zadd(redisSortedKey, 4, "four");System.out.println("get the total number:----------------");/*獲得數據的總數*/Long zcard = jedis.zcard(redisSortedKey);System.out.println(zcard);System.out.println("count the value between min-value and max-value:-----------------");/*統計分數在0到2之間的數據的個數,也就是score在[0,2]閉區間上的數據的個數*/Long zcount = jedis.zcount(redisSortedKey, 0, 2);System.out.println(zcount);System.out.println("test range:----------------------------");/*獲得從開始下標到結束下標的排好序的set中的值(結束為-1,標識全部),同樣也是閉區間*/Set<String> zrange = jedis.zrange(redisSortedKey, 0,-1);for(String str:zrange){System.out.println(str);}System.out.println("test rverse range:----------------------------");/*反序 獲得從開始下標到結束下標的排好序的set中的值(結束為-1,標識全部),同樣也是閉區間*/Set<String> zrevrange = jedis.zrevrange(redisSortedKey, 0, -1);for(String str:zrevrange){System.out.println(str);}System.out.println("test range by score:---------------------");/*獲得兩個分數之間的排好序的set中的值 同樣也是閉區間*/Set<String> zrangeByScore = jedis.zrangeByScore(redisSortedKey, 2, 3);for(String str:zrangeByScore){System.out.println(str);}System.out.println("test range with scores:---------------------");/*獲得從開始下標到結束下標的排好序的set中的值(結束為-1,標識全部),同樣也是閉區間 不同的是返回值中包含了值所對應的分數*/Set<Tuple> zrangeWithScores = jedis.zrangeWithScores(redisSortedKey, 0, -1);for(Tuple tuple:zrangeWithScores){//tuple中封裝了element和score對應與元素和分數System.out.println(tuple.getElement()+"------"+tuple.getScore());}System.out.println("test rank:---------------");/*獲得某個元素在有序set中的排名(也就是排序位置)*/Long zrank = jedis.zrank(redisSortedKey, "three");System.out.println("the rank of three is :"+zrank);System.out.println("test rem:-----------------------------");/*刪除某個元素*/jedis.zrem(redisSortedKey, "three");Set<String> zrange1 = jedis.zrange(redisSortedKey, 0,-1);for(String str:zrange1){System.out.println(str);}System.out.println("test reverse rank:------------------------");/*獲得某個元素的倒序排名*/Long zrevrank = jedis.zrevrank(redisSortedKey, "four");System.out.println(zrevrank);System.out.println("test get score:----------------------------------------");/*獲得某個元素所對應的分數*/Double zscore = jedis.zscore(redisSortedKey, "two");System.out.println("two's zscore is: "+zscore);} catch (Exception e) {}finally{jedis.close();}}public static void main(String[] args) {RedisTest test = new RedisTest();test.init();test.testSortSet();}
}
總結
以上是生活随笔為你收集整理的REDIS提供的map,list,set,sortedset使用测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3 内置方法
- 下一篇: CSS图片设置