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 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 生命周期时进行操作,生命周期外操作