Redis & Hash

原文链接:http://blog.csdn.net/a1031397017/article/details/66978218


  1. package com.jjf.redis;  
  2.   
  3. import org.junit.Assert;  
  4. import org.junit.Test;  
  5. import redis.clients.jedis.Jedis;  
  6. import redis.clients.jedis.Pipeline;  
  7. import redis.clients.jedis.ScanResult;  
  8.   
  9. import java.util.HashMap;  
  10. import java.util.List;  
  11. import java.util.Map;  
  12. import java.util.Set;  
  13.   
  14. /** 
  15.  * Created by jjf_lenovo on 2017/3/27. 
  16.  */  
  17. public class RedisHashTest {  
  18.     Jedis jedis = null;  
  19.     static final String DATASOURCE_URL = "182.254.213.106";  
  20.     static final int DATASOURCE_SORT = 6379;  
  21.     static final String DATASOURCE_PASS = "123456";  
  22.     static final int DATASOURCE_SELECT = 1;  
  23.     public RedisHashTest(){  
  24.         //基本配置  
  25.         jedis = new Jedis(DATASOURCE_URL,DATASOURCE_SORT);  
  26.         jedis.auth(DATASOURCE_PASS);  
  27.         jedis.select(DATASOURCE_SELECT);  
  28.     }  
  29.   
  30.     @Test  
  31.     public void testHSetAndHGetAndHDel(){  
  32.         //hset 将哈希表 key 中的域 field 的值设为 value 。  
  33.         //hget 返回哈希表 key 中给定域 field 的值。  
  34.         //hdel 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。  
  35.         Assert.assertTrue(jedis.hset("hash","key","value")==1);  
  36.         Assert.assertTrue(jedis.hget("hash","key").equals("value"));  
  37.         Assert.assertTrue(jedis.hdel("hash","key")==1);  
  38.         Assert.assertTrue(jedis.hget("hash","key")==null);  
  39.     }  
  40.   
  41.     @Test  
  42.     public void testHExists(){  
  43.         //hexists 查看哈希表 key 中,给定域 field 是否存在。  
  44.         jedis.hset("hash","key","value");  
  45.         Assert.assertTrue(jedis.hexists("hash","key"));  
  46.         jedis.hdel("hash","key");  
  47.         Assert.assertTrue(!jedis.hexists("hash","key"));  
  48.     }  
  49.   
  50.     @Test  
  51.     public void testHGetAll(){  
  52.         //返回哈希表 key 中,所有的域和值。  
  53.         Pipeline pipeline = jedis.pipelined();//流水线一次性提交  
  54.         for(int i=0;i<10;i++){  
  55.             pipeline.hset("hash","key"+i,String.valueOf(i));  
  56.         }  
  57.         pipeline.sync();  
  58.         Map<String, String> map =  jedis.hgetAll("hash");  
  59.         System.out.println(map.toString());  
  60.         Assert.assertTrue(map.size()==10);  //还有一个住的  
  61.         Assert.assertTrue(jedis.del("hash")==1);  
  62.     }  
  63.   
  64.     @Test  
  65.     public void testHIncrbyAndHincrFloat(){  
  66.         //hincrBy 为哈希表 key 中的域 field 的值加上增量 increment。如果域 field 不存在,域的值先被初始化为 0 。  
  67.         //hincrByFloat 同上,支持浮点数  
  68.         jedis.hincrBy("hash","key",5);  
  69.         Assert.assertTrue(jedis.hincrBy("hash","key",5)==10);  
  70.         Assert.assertTrue(jedis.hincrByFloat("hash","key",2.5)==12.5);  
  71.         Assert.assertTrue(jedis.del("hash")==1);  
  72.     }  
  73.   
  74.     @Test  
  75.     public void testHKeys(){  
  76.         //hkeys 返回哈希表 key 中的所有域。  
  77.         //hlen 返回哈希表 key 中域的数量。  
  78.         Pipeline pipeline = jedis.pipelined();//流水线一次性提交  
  79.         for(int i=0;i<10;i++){  
  80.             pipeline.hset("hash","key"+i,String.valueOf(i));  
  81.         }  
  82.         pipeline.sync();  
  83.         Set<String> keys = jedis.hkeys("hash");  
  84.         for(String s:keys){  
  85.             System.out.println(s);//乱序的  
  86.         }  
  87.         Assert.assertTrue(jedis.hlen("hash")==10);  
  88.         Assert.assertTrue(keys.size()==10);  
  89.         Assert.assertTrue(jedis.del("hash")==1);  
  90.     }  
  91.   
  92.     @Test  
  93.     public void testHMSetAndHMGet(){  
  94.         Map<String,String> map = new HashMap<>();  
  95.         for(int i=0;i<10;i++){  
  96.             map.put("key"+i,String.valueOf(i));  
  97.         }  
  98.         jedis.hmset("hash",map);  
  99.         Assert.assertTrue(jedis.hlen("hash")==10);  
  100.         List<String> list = jedis.hmget("hash","key1","key2","key0");  
  101.         System.out.println(list.toString());  
  102.         Assert.assertTrue(list.size()==3);  
  103.         Assert.assertTrue(jedis.del("hash")==1);  
  104.     }  
  105.   
  106.     @Test  
  107.     public void testHSetNX(){  
  108.         //hsetnx 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。  
  109.         Assert.assertTrue(jedis.hsetnx("hash","key","value")==1);  
  110.         Assert.assertTrue(jedis.hsetnx("hash","key","value")==0);  
  111.         Assert.assertTrue(jedis.del("hash")==1);  
  112.     }  
  113.   
  114.     @Test  
  115.     public void testHVals(){  
  116.         //hvals 返回哈希表 key 中所有域的值。  
  117.         Map<String,String> map = new HashMap<>();  
  118.         for(int i=0;i<10;i++){  
  119.             map.put("key"+i,String.valueOf(i));  
  120.         }  
  121.         jedis.hmset("hash",map);  
  122.         List<String> list = jedis.hvals("hash");  
  123.         System.out.println(list.toString());  
  124.         Assert.assertTrue(list.size()==10);  
  125.         Assert.assertTrue(jedis.del("hash")==1);  
  126.     }  
  127.   
  128.     @Test  
  129.     public void testHScan(){  
  130.         //HSCAN 命令用于迭代哈希键中的键值对。  
  131.         Map<String,String> data = new HashMap<>();  
  132.         for(int i=0;i<1000;i++){  
  133.             data.put("key"+i,String.valueOf(i));  
  134.         }  
  135.         jedis.hmset("hash",data);  
  136.         ScanResult<Map.Entry<String, String>> result;// =  jedis.hscan("hash",DATASOURCE_SELECT);  
  137.         int count = 0;  
  138.         int cursor = 0;  
  139.         do {  
  140.             result = jedis.hscan("hash",cursor);  
  141.             cursor = Integer.valueOf(result.getStringCursor());  
  142.             for (Map.Entry<String, String> map : result.getResult()) {  
  143.                 System.out.println(map.getKey() + ":" + map.getValue());  
  144.                 count++;  
  145.             }  
  146.         }  
  147.         while(cursor!=0);  
  148.         Assert.assertTrue(count==1000);  
  149.         Assert.assertTrue(jedis.del("hash")==1);  
  150.     }  
  151.   
  152.     @Test  
  153.     public void testHStrLen(){  
  154.         //返回哈希表 key 中, 与给定域 field 相关联的值的字符串长度(string length)。  
  155.         System.out.println("jedis没有HSTRLEN命令!");  
  156.     }  
  157. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值