redis命令使用-jedis调用(Redis 哈希 hash)

  |   0 评论   |   0 浏览
package com.songaw.redistest;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.ScanParams;
import redis.clients.jedis.ScanResult;

import java.util.*;


/**
 * @author songanwei
 * @description
 * Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
 * Redis 中每个 hash 可以存储 2的32次方 - 1 键值对(40多亿)。
 * @date 2022/3/17
 */

public class JedisHashTest {
    public static void main(String[] args) {
      test1();
    }

    /**
     * 连接测试
     */
    private static void test1() {
        Jedis jedis = new Jedis("localhost");
        System.out.println("连接服务成功");
        //查看服务是否运行
        System.out.println("服务正在运行: "+jedis.ping());
        String testKey="test_hash_key";


        //hset 将哈希表 key 中的字段 field 的值设为 value 。
        jedis.hset(testKey,"zhangsan","100");

        //hmset 同时将多个 field-value (域-值)对设置到哈希表 key 中。
        Map<String,String> map=new HashMap<>();
        map.put("lisi","99");
        map.put("liwu","99");
        map.put("wangwu","90");
        map.put("maliu","80");
        jedis.hmset(testKey,map);

        //hget 获取存储在哈希表中指定字段的值。
        String value=jedis.hget(testKey,"lisi");
        System.out.println("hget lisi "+value);

        //hgetAll 获取在哈希表中指定 key 的所有字段和值
        Map<String, String>  resultMap=jedis.hgetAll(testKey);
        for(String key:resultMap.keySet()){
            System.out.println(key+":"+resultMap.get(key));
        }
        //hdel删除一个或多个哈希表字段
        long result=jedis.hdel(testKey,"lisi");
        System.out.println("hdel lisi result: "+result);

        //hexists查看哈希表 key 中,指定的字段是否存在。
        boolean v=jedis.hexists(testKey,"lisi");
        System.out.println("hexists lisi v: "+v);

        //hincrBy 为哈希表 key 中的指定字段的整数值加上增量 increment 。
        Long resultValue=jedis.hincrBy(testKey,"wangwu",1);
        System.out.println("hincrBy wangwu resultValue: "+resultValue+" hget v"+jedis.hget(testKey,"wangwu"));

        //hincrByFloat 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
        Double resultDoubleValue=jedis.hincrByFloat(testKey,"wangwu",1.1F);
        System.out.println("hincrBy wangwu resultValue: "+resultDoubleValue+" hget v"+jedis.hget(testKey,"wangwu"));

        //hkeys获取所有哈希表中的字段
        Set<String> hkeySet= jedis.hkeys(testKey);
        System.out.println(hkeySet);

        //hlen 获取哈希表中字段的数量
        Long hlen=jedis.hlen(testKey);
        System.out.println("hlen "+hlen);

        //hmget 获取所有给定字段的值
        List<String> hmgetList=jedis.hmget(testKey,"zhangsan","lisi","wangwu");
        System.out.println("hmget "+hmgetList);

        //hsetnx 有在字段 field 不存在时,设置哈希表字段的值
        resultValue=jedis.hsetnx(testKey,"lisi","80");
        String hgetV=jedis.hget(testKey,"lisi");
        System.out.println("hsetnx  resultValue:"+resultValue+"hgetV:"+hgetV);

        //hvals 获取哈希表中所有值。
        List<String> hvalsList=jedis.hvals(testKey);
        System.out.println("hvals "+hvalsList);

        //迭代哈希表中的键值对。
        ScanParams scanParams=new ScanParams();
        scanParams.count(5);
        scanParams.match("li*");
        List<Map.Entry<String, String>> keyList=new ArrayList<>();
        String cursor="0";
        ScanResult<Map.Entry<String, String>> stringScanResult=jedis.hscan(testKey,cursor,scanParams);
        keyList.addAll(stringScanResult.getResult());
        while (!cursor.equals(stringScanResult.getStringCursor())){
            String tempCursor=stringScanResult.getStringCursor();
            stringScanResult=jedis.hscan(testKey,tempCursor,scanParams);
            keyList.addAll(stringScanResult.getResult());
        }

        System.out.println("hscan "+keyList);




    }


}


标题:redis命令使用-jedis调用(Redis 哈希 hash)
作者:不断努力的青春
地址:http://songaw.com/articles/2022/03/17/1647517127240.html