zoukankan      html  css  js  c++  java
  • 使用Jedis操作Redis-使用Java语言在客户端操作---hash类型

            我们可以将Redis中的Hashes类型看成具有String Key和String Value的map容器。
                所以该类型非常适合于存储值对象的信息。如Username、Password和Age等。
                如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。
                每一个Hash可以存储4294967295个键值对。

     1 @Test
     2     public void testHash() throws Exception {
     3         //给键值为myhash的键设置字段为field1,值为stephen。
     4         Long hset = jedis.hset("myhash", "field1", "stephen");
     5         System.out.println(hset);//1
     6         
     7         //获取键值为myhash,字段为field1的值。
     8         String hget = jedis.hget("myhash", "field1");
     9         System.out.println(hget);//stephen
    10         
    11         //myhash键中不存在field2字段,因此返回null
    12         String hget2 = jedis.hget("myhash", "field2");
    13         System.out.println(hget2);//null
    14         
    15         //给myhash关联的Hashes值添加一个新的字段field2,其值为liu。
    16         //Long hset2 = jedis.hset("myhash", "field2", "liu");
    17         //System.out.println(hset2);//1
    18         
    19         //获取myhash键的字段数量
    20         Long hlen = jedis.hlen("myhash");
    21         System.out.println(hlen);//2
    22         
    23         //判断myhash键中是否存在字段名为field1的字段,由于存在,返回值为true
    24         Boolean hexists = jedis.hexists("myhash", "field1");
    25         System.out.println(hexists);//true
    26         
    27         //删除myhash键中字段名为field1的字段,删除成功返回1。
    28         Long hdel = jedis.hdel("myhash", "field1");
    29         System.out.println(hdel);//1
    30     
    31         //再次删除myhash键中字段名为field1的字段,由于上一条命令已经将其删除,因为没有删除,返回0。
    32         Long hde2 = jedis.hdel("myhash", "field1");
    33         System.out.println(hde2);//0
    34         
    35         //判断myhash键中是否存在field1字段,由于上一条命令已经将其删除,因此返回false
    36         Boolean hexists3 = jedis.hexists("myhash", "field1");
    37         System.out.println(hexists3);
    38         
    39         //只有当参数中的Key或Field不存在的情况下,为指定的Key设定Field/Value对,否则该命令不会进行任何操作.执行成功返回1。否则返回0
    40         Long hsetnx5 = jedis.hsetnx("myhash", "field1", "stephen");
    41         System.out.println(hsetnx5);//1
    42         
    43         
    44         //=====================>>
    45         //准备测试数据,该myhash的field字段设定值5。
    46         jedis.hset("myhash2", "field", "5");
    47         
    48         //给myhash的field字段的值加1,返回加后的结果。
    49         Long hincrBy = jedis.hincrBy("myhash2", "field", 1);
    50         System.out.println(hincrBy);//6
    51         
    52         //给myhash的field字段的值加-1,返回加后的结果。
    53         Long hincrBy2 = jedis.hincrBy("myhash2", "field", -1);
    54         System.out.println(hincrBy2);//5        
    55         
    56         //给myhash的field字段的值加-10,返回加后的结果。
    57         Long hincrBy3 = jedis.hincrBy("myhash2", "field", -10);
    58         System.out.println(hincrBy3);//-5    
    59         
    60         
    61         //===============>>>
    62         //为该键myhash,一次性设置多个字段,分别是field1 = "hello", field2 = "world"。
    63         Map<String,String> hash = new LinkedHashMap<String, String>();
    64         hash.put("field1", "hello");
    65         hash.put("field2", "world");
    66         String hmset = jedis.hmset("myhash3", hash);
    67         System.out.println(hmset);
    68         
    69         
    70         //获取myhash键的多个字段,其中field3并不存在,因为在返回结果中与该字段对应的值为null
    71         List<String> hmget5 = jedis.hmget("myhash3", "field1","field2","field3");
    72         System.out.println(hmget5);//[hello, world, null]
    73         
    74         
    75         //返回myhash键的所有字段及其值,从结果中可以看出,他们是逐对列出的。
    76         Map<String, String> hgetAll = jedis.hgetAll("myhash3");
    77         System.out.println(hgetAll);//{field1=hello, field2=world}
    78         
    79         //仅获取myhash键中所有字段的名字。
    80         Set<String> hkeys = jedis.hkeys("myhash3");
    81         System.out.println(hkeys.toString());//[field2, field1]
    82         
    83         //仅获取myhash键中所有字段的值。
    84         List<String> hvals = jedis.hvals("myhash3");
    85         System.out.println(hvals);//[world, hello]
    86         
    87     }
    88     
    不能只满足于写完代码运行结果正确就完事,时常考虑如何让代码更加简练更加容易维护、容易扩展和复用,只有这样才可以真正得到提高 --《来自大话设计模式》
  • 相关阅读:
    【CSS】盒子模型的计算
    【CSS】定义元素的位置
    【Jenkins】安装插件
    安装【Jenkins】
    Python【unittest】模块
    Python【pyyaml】模块
    CentOS下安装gcc和gdb
    汇编学习笔记(15)综合研究
    汇编学习笔记(14)BIOS对键盘输入的处理
    汇编学习笔记(13)直接定址表
  • 原文地址:https://www.cnblogs.com/lixianyuan-org/p/9491297.html
Copyright © 2011-2022 走看看