Redis与java结合相关操作

首先声明:我所演示的是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中的结合使用!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值