package cn.com; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import ch.qos.logback.core.net.SyslogOutputStream; import redis.clients.jedis.Jedis; public class Redis_Hash { public static Jedis redis = new Jedis("localhost", 6379);// 连接redis public static void main(String [] args){ hdel(); } /** * HDEL key field [field ...] * 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。 * */ public static void hdel(){ redis.flushDB();//清除数据 redis.hset("user", "id", "1"); redis.hset("user", "name", "liliang"); redis.hset("user", "age", "18"); System.out.println("==========删除key前数据==========="); List<String> users=redis.hvals("user"); for(String u:users){ System.out.println(u); } System.out.println("==========删除key后数据==========="); redis.hdel("user","age");//删除key;可以是多个key List<String> users2=redis.hvals("user"); for(String u:users2){ System.out.println(u); } } /** * 返回哈希表 key 中所有域的值。 * 返回值:key 不存在返回空 * */ public static void hvals(){ redis.flushDB();//清除数据 redis.hset("user", "id", "1"); redis.hset("user", "name", "liliang"); redis.hset("user", "age", "18"); List<String> users=redis.hvals("user"); for(String u:users){ System.out.println(u); } } /**将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。 *若域 field 已经存在,该操作无效。 *如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令 **/ public static void hsetnx(){ redis.flushDB();//清除数据 redis.hsetnx("user","age", "18"); String age1=redis.hget("user", "age"); System.out.println("age1:"+age1); //key=user;field=age ;存在在这是则无效 redis.hsetnx("user","age", "19"); String age2=redis.hget("user", "age"); System.out.println("age2:"+age2); } /** *为哈希表 key 中的域 field 的值加上增量 increment 。 *增量也可以为负数,相当于对给定域进行减法操作。 *如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。 *如果域 field 不存在,那么在执行命令前,域的值被初始化为 0 。 *对一个储存字符串值的域 field 执行 HINCRBY 命令将造成一个错误。 *本操作的值被限制在 64 位(bit)有符号数字表示之内。 * */ public static void hincrby(){ redis.flushDB();//清除数据 //field 不存在初始化field 为0 redis.hincrBy("user", "age", 18); String age1=redis.hget("user", "age"); System.out.println("age1:"+age1); //对age field 进行crby 1操作 redis.hincrBy("user", "age", 1); String age2=redis.hget("user", "age"); System.out.println("age1:"+age2); } /** * 方法与hincrBy 用户法一样; * 此方法是操作Float 类型数据 * * */ public static void hincrByFloat(){ redis.flushDB();//清除数据 //field 不存在初始化field 为0 redis.hincrByFloat("user", "age", 18); String age1=redis.hget("user", "age"); System.out.println("age1:"+age1); //对age field 进行crby 1操作 redis.hincrByFloat("user", "age", 1.5); String age2=redis.hget("user", "age"); System.out.println("age1:"+age2); } /** * hset 将哈希表 key 中的域 field 的值设为 value 。 * hget 返回哈希表 key 中给定域 field 的值。 * hgetAll 返回哈希表 key 中,所有的域和值。 * * */ public static void hset_hget_hgetAll(){ redis.flushDB();//清除数据 redis.hset("user", "id", "1"); redis.hset("user", "name", "liliang"); redis.hset("user", "age", "18"); System.out.println("==========hget============"); System.out.println(redis.hget("user", "id")); System.out.println(redis.hget("user", "name")); System.out.println(redis.hget("user", "age")); System.out.println("=========hgetAll==========="); Map<String,String> map=redis.hgetAll("user"); System.out.println("id:"+map.get("id")); System.out.println("name:"+map.get("name")); System.out.println("age:"+map.get("age")); } /** * HMSET key field value [field value ...] * 同时将多个 field-value (域-值)对设置到哈希表 key 中。 * 此命令会覆盖哈希表中已存在的域。 * 如果 key 不存在,一个空哈希表被创建并执行 HMSET 操作。 * */ public static void hmset_hmget(){ redis.flushDB();//清除数据 Map<String,String> map=new HashMap<String,String>(); map.put("id","1"); map.put("name","liliang"); map.put("age","18"); redis.hmset("user", map); System.out.println("======HMGET=========="); List<String> list=redis.hmget("user","id","name","age"); for(String s:list){ System.out.println("s:"+s); } } /** * HLEN key * 返回哈希表 key 中域的数量。 * */ public static void hlen(){ redis.flushDB();//清除数据 Map<String,String> map=new HashMap<String,String>(); map.put("id","1"); map.put("name","liliang"); map.put("age","18"); redis.hmset("user", map); Long length=redis.hlen("user"); System.out.println("length:"+length); } /** * HKEYS key *返回哈希表 key 中的所有域。 * */ public static void hkeys(){ redis.flushDB();//清除数据 Map<String,String> map=new HashMap<String,String>(); map.put("id","1"); map.put("name","liliang"); map.put("age","18"); redis.hmset("user", map); Set<String> set=redis.hkeys("user"); for(String s:set){ System.out.println("s:"+s); } } }