Jedis的基本操作方法

一、Jedis介绍  

    jedis 是 redis推荐的java客户端。通过Jedis我们可以很方便地使用java代码的方式,对redis进行操作。jedis使用起来比较简单,它的操作方法与redis命令相类似。对于初次使用redis的人来说,上手更快,更能适应。本例子使用maven,需要添加如下依赖:
 

<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>3.1.0</version>
		</dependency>

二、Jedis连接

(1)设置redis允许远程连接(redis.conf),注释掉 bind 参数

(2)使用Jedis连接

/**
	 * 连接redis
	 */
	@Before
	public void init() {
		// 参数为redis的IP地址,端口号 
		jedis=new Jedis("192.168.147.128",6379);
//		输入密码
//		jedis.auth(password)
	}

 如果出现这个错误说明没有关闭Linux防火墙

关闭linux防火墙

出现这个错误,是说开启了protected mode(保护模式)还是找到配置文件,打开,查看发现真的有这么一个mode把它改成no试试

 把protected-mode改为no

 然后重启服务,测试成功

三、jedis对key的操作

/**
	 * Jedis对key的一些操作
	 */
	@Test
	public void keyTest() {
//		 确认key是否存在
		Boolean exists = jedis.exists("k1");
//	          删除一个key
		Long del = jedis.del("k1");
//	          返回值的类型
		String type = jedis.type("k1");
//	    keys(pattern):返回满足给定pattern的所有key
		Set<String> keys = jedis.keys("*");
//	       随机返回key空间的一个key
		String randomKey = jedis.randomKey();
//	     rename(oldname, newname):将key由oldname重命名为newname,若newname存在则删除newname表示的key
		String rename = jedis.rename("", "");
//	     dbsize:返回当前数据库中key的数目
		Long dbSize = jedis.dbSize();
//	     expire:设定一个key的活动时间(s)
		jedis.expire("", 1000);
//	     ttl:获得一个key的活动时间
		Long ttl = jedis.ttl("");
//	     select(index):按索引查询
		String select = jedis.select(0);
//	     move(key, dbindex):将当前数据库中的key转移到有dbindex索引的数据库
		jedis.move("", 1);
//	     flushdb:删除当前选择数据库中的所有key
		String flushDB = jedis.flushDB();
//	     flushall:删除所有数据库中的所有key
		String flushAll = jedis.flushAll();
	}

 四、Jedis对String操作的命令

/**
	 * Jedis对String的操作
	 */
	@Test
	public void stringTest() {
//		 set(key, value):给数据库中名称为key的string赋予值value
		String set = jedis.set("k1", "v1");
//	     get(key):返回数据库中名称为key的string的value
		String string = jedis.get("k1");
//	     getset(key, value):给名称为key的string赋予上一次的value
		String set2 = jedis.getSet("", "");
//	     mget(key1, key2,…, key N):返回库中多个string(它们的名称为key1,key2…)的value
		List<String> mget = jedis.mget("k1", "k2", "k3");
//	     setnx(key, value):如果不存在名称为key的string,则向库中添加string,名称为key,值为value
		Long setnx = jedis.setnx("", "");
//	     setex(key, time, value):向库中添加string(名称为key,值为value)同时,设定过期时间time(seconds)
		String setex = jedis.setex("", 1000, "");
//	     mset(key1, value1, key2, value2,…key N, value N):同时给多个string赋值,
//		名称为key i的string赋值value i
		String mset = jedis.mset("k1", "v1", "k2", "v2");
//	     msetnx(key1, value1, key2, value2,…key N, value N):如果所有名称为key i的string都不存在,
//		则向库中添加string,名称  key i赋值为value i
		Long msetnx = jedis.msetnx("k1", "v1", "k2", "v2");
//	     incr(key):名称为key的string增1操作
		Long incr = jedis.incr("");
//	     incrby(key, integer):名称为key的string增加integer
		Long incrBy = jedis.incrBy("", 10);
//	     decr(key):名称为key的string减1操作
		Long decr = jedis.decr("");
//	     decrby(key, integer):名称为key的string减少integer
		Long decrBy = jedis.decrBy("", 10);
//	     append(key, value):名称为key的string的值附加value
		Long append = jedis.append("", "");
//	     substr(key, start, end):返回名称为key的string的value的子串
		String substr = jedis.substr("", 1, 5);
	}

五、Jedis对List操作的命令

/**
	 * Jedis对list的操作
	 */
	@Test
	public void listTest() {
//		  rpush(key, value):在名称为key的list尾添加一个值为value的元素
		Long rpush = jedis.rpush("l1", "v1", "v2", "v3");
//		     lpush(key, value):在名称为key的list头添加一个值为value的 元素
		Long lpush = jedis.lpush("l1", "v1", "v2", "v3");
//		     llen(key):返回名称为key的list的长度
		Long llen = jedis.llen("");
//		     lrange(key, start, end):返回名称为key的list中start至end之间的元素(下标从0开始,下同)
		List<String> lrange = jedis.lrange("", 0, 2);
//		     ltrim(key, start, end):截取名称为key的list,保留start至end之间的元素
		String ltrim = jedis.ltrim("", 0, 2);
//		     lindex(key, index):返回名称为key的list中index位置的元素
		String lindex = jedis.lindex("", 1);
//		     lset(key, index, value):给名称为key的list中index位置的元素赋值为value
		String lset = jedis.lset("", 0, "");
//		     lrem(key, count, value): 删除count个名称为key的list中值为value的元素。
//				count为0,删除所有值为value的元素,
//				count>0      从头至尾删除count个值为value的元素,
//				count<0从尾到头删除|count|个值为value的元素。
		Long lrem = jedis.lrem("",2,"");
//		     lpop(key):返回并删除名称为key的list中的首元素
		String lpop = jedis.lpop("");
//		     rpop(key):返回并删除名称为key的list中的尾元素
		String rpop = jedis.rpop("");
//		     blpop(key1, key2,… key N, timeout):lpop 命令的block版本。
//				即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。
//				如果 timeout>0,则遇到上述情况时,等待timeout秒,
//				如果问题没有解决,则对key i+1开始的list执行pop操作。
		List<String> blpop = jedis.blpop("","","");
//		     brpop(key1, key2,… key N, timeout):rpop的block版本。参考上一命令。
		List<String> brpop = jedis.brpop("","","");
//		     rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,
//				并将该元素添加到名称为dstkey的list的头部
		String rpoplpush = jedis.rpoplpush("", "");
	}

六、Jedis对Set操作的命令

/**
	 * Jedis对set的操作
	 */
	@Test
	public void setTest() {
//		sadd(key, members):向名称为key的set中添加元素member
		Long sadd = jedis.sadd("", "");
//	     srem(key, member) :删除名称为key的set中的元素member
		Long srem = jedis.srem("", "");
//	     spop(key) :随机返回并删除名称为key的set中一个元素
		String spop = jedis.spop("");
//	     smove(srckey, dstkey, member) :将member元素从名称为srckey的集合
//			移到名称为dstkey的集合
		Long smove = jedis.smove("", "", "");
//	     scard(key) :返回名称为key的set的基数
		Long scard = jedis.scard("");
//	     sismember(key, member) :测试member是否是名称为key的set的元素
		Boolean sismember = jedis.sismember("", "");
//	     sinter(key1, key2,…key N) :求交集
		Set<String> sinter = jedis.sinter("", "", "");
//	     sinterstore(dstkey, key1, key2,…key N) :求交集并将交集保存到dstkey的集合
		Long sinterstore = jedis.sinterstore("", "", "");
//	     sunion(key1, key2,…key N) :求并集
		Set<String> sunion = jedis.sunion("", "", "");
//	     sunionstore(dstkey, key1, key2,…key N) :求并集并将并集保存到dstkey的集合
		Long sunionstore = jedis.sunionstore("", "", "");
//	     sdiff(key1, key2,…key N) :求差集
		Set<String> sdiff = jedis.sdiff("", "");
//	     sdiffstore(dstkey, key1, key2,…key N) :求差集并将差集保存到dstkey的集合
		Long sdiffstore = jedis.sdiffstore("", "", "");
//	     smembers(key) :返回名称为key的set的所有元素
		Set<String> smembers = jedis.smembers("");
//	     srandmember(key) :随机返回名称为key的set的一个元素
		String srandmember = jedis.srandmember("");
	}

七、Jedis对zset(sorted set)操作的命令

/**
	 * Jedis对zset的操作
	 */
	@Test
	public void zsetTest() {
//		 zadd(key, score, member):向名称为key的zset中添加元素member,
//			score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
		Long zadd = jedis.zadd("", 1, "");
//	     zrem(key, members) :删除名称为key的zset中的元素member
		Long zrem = jedis.zrem("", "");
//	     zincrby(key, increment, member) :如果在名称为key的zset中已经存在元素member,
//			则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
		Double zincrby = jedis.zincrby("", 1, "");
//	     zrank(key, member) :返回名称为key的zset(元素已按score从小到大排序)
//			中member元素的rank(即index,从0开始),若没有member元素,返回“nil”
		Long zrank = jedis.zrank("", "");
//	     zrevrank(key, member) :返回名称为key的zset(元素已按score从大到小排序)
//			中member元素的rank(即index,从0开始),若没有member元素,返回“nil”
		Long zrevrank = jedis.zrevrank("", "");
//	     zrange(key, start, end):返回名称为key的zset(元素已按score从小到大排序)
//			中的index从start到end的所有元素
		Set<String> zrange = jedis.zrange("", 0, 1);
//	     zrevrange(key, start, end):返回名称为key的zset(元素已按score从大到小排序)
//			中的index从start到end的所有元素
		Set<String> zrevrange = jedis.zrevrange("", 0, 1);
//	     zrangebyscore(key, min, max):返回名称为key的zset中score >= min且score <= max的所有元素
		Set<String> zrangeByScore = jedis.zrangeByScore("", 10, 20);
//	     zcard(key):返回名称为key的zset的基数
		Long zcard = jedis.zcard("");
//	     zscore(key, element):返回名称为key的zset中元素element的score
		Double zscore = jedis.zscore("", "");
//	     zremrangebyrank(key, min, max):删除名称为key的zset中rank >= min且rank <= max的所有元素
		Long zremrangeByRank = jedis.zremrangeByRank("", 0L, 20L);
//	     zremrangebyscore(key, min, max) :删除名称为key的zset中score >= min且score <= max的所有元素
		Long zremrangeByScore = jedis.zremrangeByScore("", 0D, 20D);
//	     zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX): 
//			对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,
//			在进行AGGREGATE运算前,都要乘以对于 的WEIGHT参数。如果没有提供WEIGHT,默认为1。
//			默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行 SUM运算的值,
//			而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
		Long zunionstore = jedis.zunionstore("dstkeyN", "keyN", "WEIGHT", "SUM");
	}

八、Jedis对Hash操作的命令

/**
	 * Jedis对hash的操作
	 */
	@Test
	public void hashTest() {
//		  hset(key, field, value):向名称为key的hash中添加元素field<—>value
		Long hset = jedis.hset("", "", "");
//		     hget(key, field):返回名称为key的hash中field对应的value
		String hget = jedis.hget("", "");
//		     hmget(key, field1, …,field N):返回名称为key的hash中field i对应的value
		List<String> hmget = jedis.hmget("", "", "");
//		     hmset(key, hash):向名称为key的hash中添加hash元素
		String hmset = jedis.hmset("h1",new HashMap());
//		     hincrby(key, field, integer):将名称为key的hash中field的value增加integer
		Long hincrBy = jedis.hincrBy("", "", 1);
//		     hexists(key, field):名称为key的hash中是否存在键为field的域
		Boolean hexists = jedis.hexists("","");
//		     hdel(key, fields):删除名称为key的hash中键为field的域
		Long hdel = jedis.hdel("", "");
//		     hlen(key):返回名称为key的hash中元素个数
		Long hlen = jedis.hlen("");
//		     hkeys(key):返回名称为key的hash中所有键
		Set<String> hkeys = jedis.hkeys("");
//		     hvals(key):返回名称为key的hash中所有键对应的value
		List<String> hvals = jedis.hvals("");
//		     hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value
		Map<String, String> hgetAll = jedis.hgetAll("");
	}
发布了71 篇原创文章 · 获赞 2 · 访问量 6180

猜你喜欢

转载自blog.csdn.net/qq_40298351/article/details/102651672