通用方法 incr decr incrby decrby
redis string方法 get set mset mget setex expire
保存对象的两种方式
//保存序列化之后的对象 jedis.set("user:liudehua:obj".getBytes(), getBytesByProduct(person) ); //jedis.set("user:liudehua:obj".getBytes(), "fasdf"); 不能用这种形式 byte[] productBytes = jedis.get("user:liudehua:obj".getBytes()); Person pByte = getProductByBytes(productBytes); System.out.println(pByte.getName()+" " +pByte.getAge()); //保存Json化之后的对象 jedis.set("user:liudehua:json", new Gson().toJson(person)); String personJson = jedis.get("user:liudehua:json"); Person pjson = new Gson().fromJson(personJson, Person.class); System.out.println(pjson.getName()+" "+ pjson.getAge());
应用场景:保存对象的时候
redis map 中的所有方法都以h开头 hgetALL hkeys hvals hincrBy hdel
应用场景:购物车
redis list 中只有 lrange这个方法没有 rrange这个方法不要想多了
insert 也只有 linsert这个方法
jedis.linsert("柜台1", BinaryClient.LIST_POSITION.AFTER, "鸠摩智", "慕容复"); jedis.linsert("柜台1", BinaryClient.LIST_POSITION.BEFORE,"鸠摩智","令狐冲"); List<String> list1 = jedis.lrange("柜台1", 0, -1); for (String name : list1) { System.out.print(name + " "); } System.out.println();
trim也是只有个 ltrim 它是用来修剪得
String res = jedis.ltrim("柜台1", 0, 2); (0,2)是保留下来的数据,其他的都被修剪了。 if ("OK".equals(res)) { for (String name : jedis.lrange("柜台1", 0, -1)) { System.out.print(name + " "); } }
lpush rpush 倒是有的
相对应的 lpop rpop 也是有的
应用场景:网页爬虫的时候
redis set 都是以s开头 map是以h开头不是m开头,m开头的是string的mget mset
sadd方法:
jedis.sadd("biwu:dengji", daxias); //daxias是一个数组,可以直接往set里面添加数组
和sadd配对的是smembers方法
Set<String> daxiaSet = jedis.smembers("biwu:dengji"); for (String name : daxiaSet) { System.out.print(name + " "); //set集合的特点:无序、无重复元素 } System.out.println();
sismember 判断是否有存在元素
scard 计算redis的set中有多少个元素
//计算两个Set之间的交集
Set<String> users = jedis.sinter("biwu:dengji", "guoji:dengji");
for (String name : users) {
System.out.print(name + " ");
}
System.out.println();
//计算两个Set之间的并集
users = jedis.sunion("biwu:dengji", "guoji:dengji");
for (String name : users) {
System.out.print(name + " ");
}
System.out.println();
System.out.println("井中月出来了");
//计算两个集合的差集
users = jedis.sdiff("biwu:dengji", "guoji:dengji");
for (String name : users) {
System.out.print(name + " ");
}
System.out.println();
System.out.println();
//将两个集合计算出来的差集保存起来,升级为超级Vip
jedis.sdiffstore("vipdaxia","biwu:dengji", "guoji:dengji");
for (String name : jedis.smembers("vipdaxia")) {
System.out.print(name + " ");
}
应用场景:计算转化率的时候
redis orderset 方法都是以z开头的
jedis.zadd("比武成绩", 10, "乔峰"); jedis.zadd("比武成绩", 5, "王重阳"); jedis.zadd("比武成绩", 7, "虚竹"); jedis.zadd("比武成绩", 2, "王语嫣"); jedis.zadd("比武成绩", 5, "段誉"); jedis.zadd("比武成绩", 4, "峨眉师太"); jedis.zadd("比武成绩", 20, "张三丰"); //获取sortSet中所有的元素 Set<String> names = jedis.zrange("比武成绩", 0, -1); for (String name : names) { System.out.println(name + " 排名: " //打印用户升序排行 + jedis.zrank("比武成绩", name) + " 赢的场次: " //打印用户的比武成绩 + jedis.zscore("比武成绩", name)); } System.out.println("=============================="); names = jedis.zrevrange("比武成绩", 0, -1); for (String name : names) { System.out.println(name + " " + jedis.zrevrank("比武成绩", name) + " " + jedis.zscore("比武成绩", name)); } System.out.println("=============================="); //修改用户的分数 jedis.zincrby("比武成绩",100,"王语嫣"); names = jedis.zrevrange("比武成绩", 0, -1); for (String name : names) { System.out.println(name + " " + jedis.zrevrank("比武成绩", name) + " " + jedis.zscore("比武成绩", name)); } }