zoukankan      html  css  js  c++  java
  • RedisTemplate访问Redis数据结构(三)——Hash

    HashOperations提供一系列方法操作hash。首先初始化spring工厂获得redisTemplate和opsForHash

        private RedisTemplate<String,Object> redisTemplate;
        private HashOperations<String,String,Object> opsForHash;
    
        @SuppressWarnings("unchecked")
        @Before
        public void before(){
            @SuppressWarnings("resource")
            ApplicationContext context = new ClassPathXmlApplicationContext("/applicationContext.xml");
            redisTemplate = (RedisTemplate<String,Object>)context.getBean("redisTemplate");
            opsForHash = redisTemplate.opsForHash();
        }
    void put(H key, HK hashKey, HV value);
    Map< HK, HV > entries(H key);
        @Test
        public void testPut(){
            opsForHash.put("he1", "key1", "a");
            opsForHash.put("he1", "key2", "b");
            opsForHash.put("he1", "key3", "c");
            Map<String, Object> entries = opsForHash.entries("he1");
            System.out.println(entries);//{key3=c, key1=a, key2=b}(无序)
        }
    void putAll(H key, Map< ? extends HK, ? extends HV > m);
        @Test
        public void testPutAll(){
            Map<String,Object> param = new HashMap<String,Object>();
            param.put("key1", "a");
            param.put("key2", "b");
            param.put("key3", "c");
            opsForHash.putAll("he2", param);
            System.out.println(opsForHash.entries("he2"));//{key2=b, key1=a, key3=c}
        }
    Long delete(H key, Object… hashKeys);
        @Test
        public void testDelete(){
            Map<String,Object> param = new HashMap<String,Object>();
            param.put("key1", "a");
            param.put("key2", "b");
            param.put("key3", "c");
            opsForHash.putAll("he3", param);
            System.out.println(opsForHash.entries("he3"));//{key3=c, key2=b, key1=a}
            opsForHash.delete("he3", "key1");
            System.out.println(opsForHash.entries("he3"));//{key2=b, key3=c}
        }
    Boolean hasKey(H key, Object hashKey);
        @Test
        public void testHashKey(){
            Map<String,Object> param = new HashMap<String,Object>();
            param.put("key1", "a");
            param.put("key2", "b");
            param.put("key3", "c");
            opsForHash.putAll("he4", param);
            System.out.println(opsForHash.hasKey("he", "key2"));//false
            System.out.println(opsForHash.hasKey("he4", "key4"));//false
            System.out.println(opsForHash.hasKey("he4", "key2"));//true
        }
    HV get(H key, Object hashKey);
        @Test
        public void testGet(){
            Map<String,Object> param = new HashMap<String,Object>();
            param.put("key1", "a");
            param.put("key2", "b");
            param.put("key3", "c");
            opsForHash.putAll("he5", param);
            System.out.println(opsForHash.get("he5", "key1"));//a
            System.out.println(opsForHash.get("he5", "key"));//null
        }
    List< HV > multiGet(H key, Collection< HK > hashKeys);
        @Test
        public void testMultiGet(){
            Map<String,Object> param = new HashMap<String,Object>();
            param.put("key1", "a");
            param.put("key2", "b");
            param.put("key3", "c");
            opsForHash.putAll("he6", param);
            List<String> keys = new ArrayList<String>();
            keys.add("key1");
            keys.add("key");
            keys.add("key2");
            System.out.println(opsForHash.multiGet("he6", keys));//[a, null, b]
        }
    Long increment(H key, HK hashKey, long delta);
    Double increment(H key, HK hashKey, double delta);
        @Test
        public void testIncrement(){
            Map<String,Object> param = new HashMap<String,Object>();
            param.put("key1", "a");
            param.put("key2", "b");
            param.put("key3", "c");
            param.put("key4", 4);
            opsForHash.putAll("he7", param);
            System.out.println(opsForHash.increment("he7", "key4", 1));//5
            System.out.println(opsForHash.increment("he7", "key4", 1.1));//6.1
            try {
                opsForHash.increment("he7", "key1", 1);//ERR hash value is not an integer
            } catch (Exception e) {
                e.printStackTrace();
            }
            try {
                opsForHash.increment("he7", "key1", 1.1);//ERR hash value is not a float
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    Set< HK > keys(H key);
        @Test
        public void testKeys(){
            redisTemplate.delete("he8");
            Map<String,Object> param = new HashMap<String,Object>();
            param.put("key4", "d");
            param.put("key1", "a");
            param.put("key3", "c");
            param.put("key5", "e");
            param.put("key2", "b");
            opsForHash.putAll("he8", param);
            Set<String> keys = opsForHash.keys("he8");
            System.out.println(keys);//[key4, key3, key5, key2, key1]
        }
    Long size(H key);
        @Test
        public void testSize(){
            Map<String,Object> param = new HashMap<String,Object>();
            param.put("key4", "d");
            param.put("key1", "a");
            param.put("key3", "c");
            param.put("key5", "e");
            param.put("key2", "b");
            opsForHash.putAll("he9", param);
            System.out.println(opsForHash.size("he9"));//5
        }
    Boolean putIfAbsent(H key, HK hashKey, HV value);
        @Test
        public void testPutIfAbsent(){
            //仅当hashKey不存在时才设置散列hashKey的值。
            System.out.println(opsForHash.putIfAbsent("he10", "key1", "a"));//true
            System.out.println(opsForHash.putIfAbsent("he10", "key1", "a"));//false
        }
    List< HV > values(H key);
        @Test
        public void testValues(){
            Map<String,Object> param = new HashMap<String,Object>();
            param.put("key4", "d");
            param.put("key1", "a");
            param.put("key3", "c");
            param.put("key5", "e");
            param.put("key2", "b");
            opsForHash.putAll("he11", param);
            List<Object> values = opsForHash.values("he11");
            System.out.println(values);//[d, c, e, b, a]
        }
    Cursor< Map.Entry< HK, HV >> scan(H key, ScanOptions options);
        @Test
        public void testScan(){
            Map<String,Object> param = new HashMap<String,Object>();
            param.put("key4", "d");
            param.put("key1", "a");
            param.put("key3", "c");
            param.put("key5", "e");
            param.put("key2", "b");
            opsForHash.putAll("he13", param);
            Cursor<Map.Entry<String, Object>> curosr = opsForHash.scan("he13", ScanOptions.NONE);
            while(curosr.hasNext()){
                Map.Entry<String, Object> entry = curosr.next();
                System.out.println(entry.getKey()+":"+entry.getValue());
            }
            /**
                key4:d
                key3:c
                key5:e
                key2:b
                key1:a
             */
        }

     转载自:https://blog.csdn.net/weixin_37490221/article/details/78135036

  • 相关阅读:
    java的内部编码
    visual studio 快捷键
    C# ref和out总结
    C#函数3递归
    链表操作 两个链表间的相交性问题
    链表操作 有环链表问题
    链表操作 模拟问题
    链表操作 未排序链表的处理问题
    jjQuery 源码分析1: 整体结构
    jQuery 源码分析3: jQuery.fn/ jQuery.prototype
  • 原文地址:https://www.cnblogs.com/alter888/p/9083394.html
Copyright © 2011-2022 走看看