zoukankan      html  css  js  c++  java
  • Redis学习笔记(3)-Hash

    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);
    		}
    	}
    }
    

      

  • 相关阅读:
    三层架构和MVC模型的常识
    iOS开发之Auto Layout入门
    js-innerHTML
    $(document).ready() 与window.onload的差别
    java jsp+servlet+mysql实现登录网页设计
    ASCII码表
    表单的提交onsubmit事件
    谋哥:社交小游戏App将是下一个金矿!
    各种表
    vue elementui table 双击单元格实现编辑,聚焦,失去焦点,显示隐藏input和span
  • 原文地址:https://www.cnblogs.com/zuolun2017/p/5601542.html
Copyright © 2011-2022 走看看