windwos端修改
redis.windows.conf 文件 配置访问ip 和 端口 和 auth
端口 port 6379
密码 requirepass 123456
cmd cd 到解压目录 执行 redis-server.exe redis.windows.conf 如果不指定配置文件,设置项重新启动后失效
启动成功
若报错
[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
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<String> 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<String> keys = rs.keys("*"); Iterator<String> 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不存在返回值 -2System.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 生命周期时进行操作,生命周期外操作