首先声明:我所演示的是redis版本为5.0,没用过低版本的。有些方法有出入,所以看这篇博客请以高版本为准。
话不多说,直接看正题!
第一步建立一个maven工程
项目如下:
相当简单:就新建了一个包,一个AppRedis.class演示!
pom.xml文件 更简单 只需要引入一个jar
如下:
jar下载地址:https://mvnrepository.com/artifact/redis.clients/jedis
注明:以下所有代码全在一个main方法中演示:
main方法中redis连接池的配置,使用前请保证你的redis服务正常开启!
public static void main(String[] args) {
Jedis jedis = new Jedis();
JedisPool jedisPool = null;
//配置连接池
JedisPoolConfig jpcfg = new JedisPoolConfig();
jpcfg.setMaxTotal(10);
jpcfg.setMaxIdle(5);
jpcfg.setMaxWaitMillis(3000);
jpcfg.setTestOnBorrow(false);
jedisPool = new JedisPool(jpcfg,"localhsot",6379);
//关闭连接
jedisPool.close();
/***********************************************************************/
//关于key的操作使用
// useKey(jedis);
//关于string类型key的操作
// stringKey(jedis);
//关于list类型的key的操作
// listKey(jedis);
//关于set类型的key的操作
// setKey(jedis);
//关于zset(有序集合)类型的key的操作
// zsetKey(jedis);
//关于hash类型的key的操作
// hashKey(jedis);
}
下面是针对每个类型key的具体使用!
1.通用
public static void useKey(Jedis jedis) {
System.out.println("-----------useKey----------");
//清除所有库中的数据
// System.out.println("清除库中所有数据:"+jedis.flushDB());
// System.out.println("判断mykey键是否存在:"+jedis.exists("mykey","mykey1"));
// System.out.println("判断mykey键是否存在:"+jedis.exists("mykey"));
// System.out.println("新增mykey键和myvalue值:"+jedis.set("mykey", "myvalue"));
//输出连接中的所有的key
// System.out.println("获取所有的key");
// Set<String> keys = jedis.keys("*");
// Iterator<String> iterator = keys.iterator();
// while(iterator.hasNext()) {
// System.out.print("key="+iterator.next()+"\t");
// }
//删除某个key,若key不存在,则直接忽略这个步骤
// System.out.println("系统删除key:"+jedis.del("mykey1"));
//设置key的过期时间 milliseconds 毫秒 意思就是三秒之后就已经删除了!
// System.out.println("设置key过期时间为3秒:"+jedis.pexpire("mykey", 3000));
//查询key的保存值value的类型
// System.out.println("查看key值保存value的类型:"+jedis.type("mykey2"));
}
2.string类型
public static void stringKey(Jedis jedis) {
System.out.println("-------------stringKey-------------");
//先清空数据
// jedis.flushDB();
//新增key-value
// jedis.set("stringKey", "stringValue");
// System.out.println("获取新增得值:"+jedis.get("stringKey"));
//删除key
// System.out.println("删除键:"+jedis.del("stringKey"));
//更新
// System.out.println("创建mykey这个键,已经有了就进行覆盖:"+jedis.set("mykey", "myvalue"));
// System.out.println("如果这个key存在就拼接value,如果这个key没有就创建一个新的"+jedis.append("mykey", "toOne"));
//查询
// System.out.println("获得key的value:"+jedis.get("mykey"));
// System.out.println("获取vaule中子字符串:"+jedis.getrange("mykey", 2, 4));
//同时操作多个
// System.out.println("新增多个key:"+jedis.mset("mykey1","myvalue1","mykey2","myvalue2","mykey3","myvalue3"));
// System.out.println("同时获取多个key的值:"+jedis.mget("mykey1","mykey2","mykey3"));
// System.out.println("同时删除多个key:"+jedis.del("mykey1","mykey2","mykey3"));
}
3.list类型
public static void listKey(Jedis jedis) {
System.out.println("------------listKey-------------");
//先清除数据库
// jedis.flushDB();
//新增
// System.out.println("新增一个list类型value的key"+jedis.lpush("mylist", "mylistValue");
// 再向集合中添加值
// jedis.lpush("mylist", "mylistValue0");
// jedis.lpush("mylistKey", "mylistValue4");
// System.out.println("若想同时输入多个值,key在前后面的全是value:"+jedis.lpush("mylistKey", "mylistValue1","mylistValue2","mylistValue3"));
//删除
//lerm中三个参数的意思是 key 个数count 匹配的值 (如果这个值有好多个的话count能很好的结合) 先插入的先删除。
// System.out.println("删除集合中的值:"+jedis.lrem("mylist", 2, "mylistValue0"));
// System.out.println("删除集合指定区间[2-3]外的元素:"+jedis.ltrim("mylistKey", 2, 3));//就是保存区间[2-3]上的元素其余的全都删除掉
//修改
// System.out.println("修改列表中指定下标的值:"+jedis.lset("mylistKey", 1, "mylistValue-2"));
//查询
// System.out.println("查询指定区间[0-1]的元素:"+jedis.lrange("mylistKey", 0, 1));
// System.out.println("获取指定列表下的值:"+jedis.lindex("mylistKey", 4));
// System.out.println("查看list集合长度:"+jedis.llen("mylistKey"));
//排序
// SortingParams sortingParams = new SortingParams();
// sortingParams.alpha();
// sortingParams.limit(2, 3);
// System.out.println("排序的结果:"+jedis.sort("mylistKey", sortingParams));
}
4set类型
public static void setKey(Jedis jedis) {
System.out.println("---------------setKey----------------");
//先清除数据库
// jedis.flushDB();
//新增
// System.out.println("创建一个key为myset的集合并且添加元素:"+jedis.sadd("myset", "mysetValue"));
//同时添加多个元素 key为第一个 后面全是元素
// jedis.sadd("myset", "mysetValue1","mysetValue2","mysetValue3");
//(关于添加多个元素的说明:"mysetValue1","mysetValue2","mysetValue3")
//添加到集合里面的时候不是按顺序插入的,随机插入!如果你想按顺序插入,那就真是 一个一个执行插入!
//删除
// System.out.println("删除key为myset集合中的元素:"+jedis.srem("myset","mysetValue"));
//删除多个元素
// System.out.println("删除key为myset集合中的多个元素:"+jedis.srem("myset", "mysetValue1","mysetValue2","mysetValue3"));
//查询
// System.out.println("查询key为myset的集合中的所有元素:"+jedis.smembers("myset"));
// System.out.println("查询两个key分别为myset,youset集合的差集:"+jedis.sdiff("myset","youset"));
//数学知识 给定两个数集 A={1,2,3,8} B={1,2,3,4,5} 差集:属于A而不属于B的元素所组成的集合称为差集 很显然 此差集中元素只有 8
// System.out.println("查询两个key分别为myset,youset集合的交集"+jedis.sinter("myset","youset"));
// System.out.println("查询两个key分别为myset,youset集合的并集"+jedis.sunion("myset","youset"));
}
5.zset类型
public static void zsetKey(Jedis jedis) {
System.out.println("------------------zsetKey(有序集合)------------------------");
//先清除数据库
// jedis.flushDB();
//新增
// System.out.println("创建一个key为myzset的有序集合并且添加元素:"+jedis.zadd("myzset", 1.0, "myzsetvalue"));
//同时添加多个
// HashMap<String, Double> hashMap = new HashMap<String, Double>();
// hashMap.put("myzsetValue1", 2.0);
// hashMap.put("myzsetValue2", 3.0);
// hashMap.put("myzsetValue3", 4.0);
// hashMap.put("myzsetValue4", 5.0);
// jedis.zadd("myzset", hashMap);
//删除
// System.out.println("删除zset集合中的指定元素:"+jedis.zrem("myzset", "myzsetvalue"));
// System.out.println("删除zset集合中的多个指定元素:"+jedis.zrem("myzset", "myzsetvalue1","myzsetvalue2"));
//查询
// System.out.println("获取列表指定范围内的元素:"+jedis.zrange("myzset", 1, 3));
//如果是这样写zrange("myzset", 2, -1)) 意思是从第三个元素到无穷(最后一个元素)。
// System.out.println("获取zset集合中的个数:"+jedis.zcard("myzset"));
// System.out.println("统计zset中的权重集合的范围:"+jedis.zcount("myzset", 2, 3));
// System.out.println("获取zset中某个元素的权重值:"+jedis.zscore("myzset", "myzsetValue3"));
}
6.hash类型
public static void hashKey(Jedis jedis) {
System.out.println("-------------------hashKey---------------");
//先清除数据库
// jedis.flushDB();
//新增
// System.out.println("创建一个key为myhash的集合:"+jedis.hset("myhash", "fieldValue", "fieldValue"));
// System.out.println("创建一个key为myhash的集合:"+jedis.hset("myhash1", "fieldName", "fieldValue"));
//新增多个元素 //这里特别说明一下 jedis.hset() 虽然也可以传入map但是这个方法是错的!添加多个的时候是 hmset() 一定不要弄错!
// Map<String, String> map = new HashMap();
// map.put("filedName2", "filedValue2");
// map.put("filedName3", "filedValue3");
// map.put("filedName4", "filedValue4");
// map.put("filedName5", "filedValue5");
// jedis.hmset("myhash", map);
//追加元素
// System.out.println("给key为myhash的集合新添元素:"+jedis.hincrBy("myhash", "field1", 1));
//删除
// System.out.println("删除myhash中filed为fieldName:"+jedis.hdel("myhash", "fieldName"));
// System.out.println("删除myhash中多个filed:"+jedis.hdel("myhash","filedName4","filedName3"));
//修改
// System.out.println("修改key为myhash的集合元素:"+jedis.hincrBy("myhash", "field1", 200));//后面的数字跟数据库中的是相加的关系
//查询
// System.out.println("判断myhash集合中的元素是否存在:"+jedis.hexists("myhash", "fieldName"));
// System.out.println("获取field为fieldName的值"+jedis.hget("myhash", "fieldName"));
// System.out.println("获取多个fileld的值:"+jedis.hmget("myhash","filedName2","filedName3"));
// System.out.println("获取myhash中所有的filed:"+jedis.hkeys("myhash"));
// System.out.println("获取myhash中所有的filed的value"+jedis.hvals("myhash"));
}
参考资料:https://www.cnblogs.com/edisonfeng/p/3571870.html
说明:我对比了好多方法基本没怎么变化,但是也有不一样的新特性,具体看你的发现了!
以上就是 关于redis在java中的结合使用!