redis缓存(jedis), 链接,存,取,String,map,对象

windwos端修改

redis.windows.conf 文件 配置访问ip 和 端口 和 auth 
端口  port 6379
密码  requirepass 123456

redis缓存(jedis), 链接,存,取,String,map,对象_第1张图片

 redis缓存(jedis), 链接,存,取,String,map,对象_第2张图片

 cmd cd 到解压目录 执行 redis-server.exe redis.windows.conf   如果不指定配置文件,设置项重新启动后失效

启动成功

redis缓存(jedis), 链接,存,取,String,map,对象_第3张图片

 

 

 若报错

[2368] 21 Apr 02:57:05.611 # Creating Server TCP listening socket 127.0.0.1:6379: bind: No error

解决方法:在命令行中运行

redis-cli.exe

127.0.0.1:6379>shutdown

not connected>exit

然后重新运行redis-server.exe redis.windows.conf,启动成功!

 

设置好后 可以使用redismanager 可视化工具连接  安装包,可视化工具&jar

redis缓存(jedis), 链接,存,取,String,map,对象_第4张图片

 

redis缓存(jedis), 链接,存,取,String,map,对象_第5张图片

 

 

java

 



import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisShardInfo;  
  
public class JedisDemo{  
    
	private final static String AUTH = "12345678";//redis 密码 
	//transient 不会被序列化
	
    public void addHashMap(String key, HashMap map){
        Jedis  redis = new Jedis ("127.0.0.1",6379);//连接redis  
        redis.auth(AUTH);
        redis.hmset(key, map);
        System.out.println("hashmap set success!");
    }
    
    public HashSet queryHashMapByKey(String key){  
        Jedis  redis = new Jedis ("127.0.0.1",6379);//连接redis  
        redis.auth(AUTH);
        //return (HashSet) redis.hvals(key);  
        return (HashSet) redis.hkeys(key);
    }  
    
    public List queryHashMapByVal(String key){
    	JedisShardInfo info = new JedisShardInfo("127.0.0.1",6379);
        Jedis redis = new Jedis (info);//连接redis  
        redis.auth(AUTH);
        Set keys = (HashSet) redis.hkeys(key);
        Iterator it = keys.iterator();	
        Long l = redis.hlen(key);
        Integer i = Integer.valueOf(l.toString());
        String[] strw = new String[i];
        int index = 0;
        while(it.hasNext()){    
            String obj1 = it.next();    
            strw[index] = obj1;
            index++;
            System.out.println("key="+obj1 +",  value ="+ redis.hmget(key,obj1));
        }
        
        return redis.hmget(key,strw);
    }  
    
    public String queryString(String key){  
        Jedis  redis = new Jedis ("127.0.0.1",6379);//连接redis  
        redis.auth(AUTH);
        return redis.get(key);  
    }
    
    //加入redis缓存
    public void addString(String key,String value){  
        Jedis  redis = new Jedis ("127.0.0.1",6379);//连接redis  
        redis.auth(AUTH);//验证密码
        redis.set(key, value);  
    }  
      
     public static void main(String[] args){   
    	//try {
		
    	Jedis rs = new Jedis ("127.0.0.1",6379);//连接redis  
        rs.auth(AUTH);//验证密码
        
        
        JedisDemo t1 = new JedisDemo();  
        //String  
        t1.addString("key1","第一个值String类型的");  
          
        String value = t1.queryString("key1");  
        System.out.println("get key1 >>>" + value);
          
        //HashMap  
        HashMap map = new HashMap(); 
        for (int i = 0; i < 10000; i++) {
        	//hashmap里的key如果存在就不继续保存到缓存中
        	if(!rs.hexists("hashmap","MapId"+i)){
        		map.put("MapId"+i, "MapValue"+i);  
        	}
		}
        if(!rs.exists("hashmap")){
        	t1.addHashMap("hashmap", map);  
        }
        
        HashSet list = t1.queryHashMapByKey("hashmap");  
        
        List list2 = t1.queryHashMapByVal("hashmap");  
        
        
        
        
        //系统中所有key:  
        Set keys = rs.keys("*"); 
        Iterator it = keys.iterator();  
        while(it.hasNext()){    
            Object obj1 = it.next();    
            System.out.println(obj1);    
        }
        
        
        rs.append("001", "一个");//和set方法一样都是调用了 sendCommand(...)
        
        rs.del("keyDel");//DEL 移除给定的一个或多个key。如果key不存在,则忽略该命令。  
        rs.set("keyExpire","一个有20s生命时间的key");
        rs.expire("keyExpire",10);//expire 设置Key的过期时间(以秒[s]为单位)  
        
        //TTL 返回给定key的剩余生存时间(time to live)(以秒为单位) 
        //不设置生命周期 返回值为-1 ,key不存在返回值 -2
        System.out.println("剩余生存时间"+rs.ttl("keyExpire")+"秒");
        rs.persist("keyExpire");//PERSIST key 移除给定key的生存时间。  
        System.out.println(rs.ttl("keyExpire"));//移除生命周期后返回值为 -1
        
        
             
        //EXISTS 检查给定key是否存在。    
        String ifKey = "keyExpire";
        boolean flag = rs.exists(ifKey);
        //参数3
        //NX 只有在不存的情况下才设置 key
        //XX 只有在已经存在的情况下才设置key
        //参数4
        //过期时间单位:EX=秒;PX =毫秒
        if(flag){
        	System.out.println("key:"+ifKey+" ,存在");
        	//key存在设置
        	rs.set(ifKey, ifKey+",这个key存在 设置他的值为此,生命周期20秒", "XX","EX",20);
        }else{
        	System.out.println("key:"+ifKey+" ,不存在");
        	//key不存在设置
        	rs.set(ifKey, ifKey+",这个key 不存在 设置他的值为此,生命周期15秒","NX","EX",15);
        }
    		
		//} catch (Exception e) {
			//e.printStackTrace();
		//}
     }   
 	 
}  

 

 

 

 

 

//调试等待不同时间可以观察key 生命周期时进行操作,生命周期外操作 

 

你可能感兴趣的:(java,数据库,key-value,redis,缓存,jedis)