基本操作
//默认参数host,port,timeout,可以只写host
Jedis jedis = new Jedis(RedisIP, RedisPORT);//创建连接
jedis.auth(password);//设置连接密码,返回状态码
jedis.select(0); //选择db,这里选择0号数据库,不选择的话默认也会选择0号
Long expire(String key, int seconds);//为一个key设置过期时间,返回1设置成功。返回0设置失败,失败原因:已有过期时间/更新过期时间/key不存在
Long expireAt(String key, long unixTime) ;//以unix时间戳来设置过期时间
Set<String> keys(String pattern);//适配pattern正则表达式,返回符合规则的keys set集,比如keys(*)就是返回当前db的所有keys,keys集较大的时候慎用,会引起资源问题。要么根据keys的规则分片取,要么存储一个keys的索引
boolean jedis.exists(String key);//判断当前db中有没有这个key
Long dbSize();//返回当前db中key的数目
String flushDB();//清空当前db,返回状态码
String flushAll();//清空整个redis,不限db的,慎用。返回状态码
jedis.close();//关闭连接
String的操作
String set(String key, String value);//往选中的db中加入数据,如果已有key则覆盖。返回状态码
String get(String key);//取出一个key对应的value
long del(String... keys);//删除keys-values,如果删除成功返回大于0的数,如果没有这个值则返回0
hash操作
hget(String key, String field) //返回对应value值
hset(String key, String field, String value) //在redis中插入一个key,它对应一个map
boolean hexists(String key, String field)//判断map中是否存在该field
Map<String, String> hgetAll(String key)//获取整个map
hdel(String key, String field)//从map中删除该键
hkeys(String key)//获取该map全部的field
hvals(String key)//获取该map全部的value
hlen(String key)//返回该map的size
list操作 (类似于队列)
lpush(String key, String... values)//向队列头部插入数据
rpush(String key, String... values)//向队列尾部插入数据
lpop(String key)//从头部出队列
rpop(String key)//从尾部出队列
lset(String key, long index, String value)//
lrem(String key, long count, String value)//从queue中移除count个数据,正数从头部移除,负数从尾部移除,0表示移除全部
set操作
sadd(String key, String... members) //向set中添加一个member,使用该操作会在redisdb中插入一个key,它对应的value是一个set集合
Set<String> smembers(key) //返回set中的全部members
srem(String key, String... members) //移除set中的members
String spop(String key) //随机移除并返回set中的一个member
sorted set 操作
zadd(String key,double socre,String member); //增加一个元素,同时指定其分值
Set set = jedis.zrange(String key,long start,long end); // 按排名查出指定范围的内容
//这里的set是redis实现的SetFromList,继承自javaapi的AbstractSet。 该set是有序的
实际操作,及数值的计算
jedis给每种类型都提供了数值计算的方法
incr decr
increase /ɪn’kriːs/ 增加 decrease /dɪ’kriːs/ 减少
https://blog.csdn.net/qq_42570601/article/details/99649214
package com.realrainy.oa;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Tuple;
public class RedisTest {
Jedis je = new Jedis("127.0.0.1", 6379);
// je.auth("password");
public static void main(String[] args) {
RedisTest rt = new RedisTest();
// rt.rSting();
// rt.rHash();
// rt.rList();
// rt.rSet();
rt.rSSet();
}
public void rSting() {
// 赋值
je.set("name", "huangqiqi");
je.set("username", "huangqiqi");
je.set("password", "123");
// 删除
je.del("name");
System.out.println(je.get("name"));
System.out.println(je.get("username"));
// 自减
je.decr("password");
System.out.println(je.get("password"));
// 增减指定量
je.incrBy("password", 3);
System.out.println(je.get("password"));
// 连接
je.append("username", "如果没有串,我就自己创建!");
System.out.println(je.get("username"));
}
public void rHash() {
// 单个赋值
je.hset("用户表1", "username", "huangqiqi");
System.out.println(je.hget("用户表1", "username"));
// 多个赋值
Map<String, String> map = new HashMap<>();
map.put("username", "huangqiqi");
map.put("password", "123");
je.hmset("用户表2", map);
System.out.println(je.hmget("用户表2", "username", "password"));
// 增加数字
je.hset("用户表1", "age", "23");
je.hincrBy("用户表1", "age", 2);
System.out.println(je.hget("用户表1", "age"));
// 判断字段是否存在
boolean fiag1 = je.hexists("用户表1", "username");
boolean fiag2 = je.hexists("用户表1", "password");
System.out.println(fiag1 + "\t" + fiag2);
// 获取长度
System.out.println(je.hlen("用户表1"));
// 获取所有属性名称
Set<String> sets = je.hkeys("用户表2");
for (String str : sets) {
System.out.println(str);
}
// 获取所有属性的值
List<String> list = je.hvals("用户表1");
for (String str : list) {
System.out.println(str);
}
}
public void rList() {
// 从左边开始添加
je.lpush("list1", "1", "2", "3");
je.lpush("list1", "a", "b", "c");
// 从第1个开始(坐标为0)到倒数第一个(坐标为-1) 也就是最后一个 也就是 所有数据
System.out.println("list1:" + je.lrange("list1", 0, -1));
// 从右边开始开始添加,一般人都习惯这种思维
je.rpush("list2", "1", "2", "3");
je.rpush("list2", "a", "b", "c");
System.out.println("list2:" + je.lrange("list2", 0, -1));
// 从左侧弹出集合元素,并删除该元素
System.out.println(je.lpop("list1"));
// 从右侧弹出集合元素,并删除该元素
System.out.println(je.rpop("list2"));
// 删除
je.del("list1");
je.del("list2");
}
public void rSet() {
// 添加和获取
je.sadd("set1", "a", "b", "c");
je.sadd("set1", "a", "d", "e");
System.out.println("不会出现重复元素:" + je.smembers("set1"));
// 删除元素
je.srem("set1", "d", "e");
System.out.println("删除掉两个元素后:" + je.smembers("set1"));
// 判断某个元素是否存在
boolean flag = je.sismember("set1", "a");
System.out.println(flag);
/*
* 计算差、交、并集
*/
je.sadd("set2", "a", "b", "c");
je.sadd("set3", "b", "c", "d");
System.out.println("set2:" + je.smembers("set2"));
System.out.println("set3:" + je.smembers("set3"));
// 差集: je.sdiff("set2","set3") 结果返回set2有但是set3没有的元素
Set<String> set1 = je.sdiff("set2", "set3");
System.out.println("差集:");
for (String set : set1) {
System.out.print(set + "\t");
}
// 交集
Set<String> set2 = je.sinter("set2", "set3");
System.out.println("\n交集:");
for (String set : set2) {
System.out.print(set + "\t");
}
// 并集
Set<String> sets3 = je.sunion("set2", "set3");
System.out.println("\n并集");
for (String set : sets3) {
System.out.print(set + "\t");
}
// 计算元素总数
System.out.println("\nset1的元素总数:" + je.scard("set1"));
// 随机获取一个元素
String rand = je.srandmember("set1");
System.out.println("随机获取一个元素:" + rand);
}
public void rSSet() {
// 添加集合期末成绩 元素是平时分,考试,作业 评分分别是80,10,10
je.zadd("期末成绩", 80, "平时分");
je.zadd("期末成绩", 10, "考试");
je.zadd("期末成绩", 10, "作业");
// 获得元素
Set<Tuple> sets = je.zrangeWithScores("期末成绩", 0, -1);
for (Tuple t : sets) {
System.out.println(t.getElement() + "\t" + t.getScore());
}
System.out.println("删除得分在70~90分的元素");
// 删除元素
je.zremrangeByScore("期末成绩", 70, 90);
Set<Tuple> sets2 = je.zrangeWithScores("期末成绩", 0, -1);
for (Tuple t : sets2) {
System.out.println(t.getElement() + "\t" + t.getScore());
}
}
}