“Jedis 的编程实践”的版本间差异

来自Wikioe
跳到导航 跳到搜索
(建立内容为“category:Redis == 关于 == Jedis 是一个高性能的 Java 客户端,是 Redis 官方推荐的 Java 开发工具。要在 Java 开发中访问 Redis 缓…”的新页面)
 
第33行: 第33行:


== 基础实践 ==
== 基础实践 ==
=== Jedis操作String字符串 ===
=== Jedis 操作 String(字符串) ===
Jedis 的 String 字符串操作函数和 Redis 客户端操作 String 字符串的命令,基本上可以一比一的相互对应。
 
 
示例:
: <syntaxhighlight lang="bash" highlight="">
package com.crazymakercircle.redis.jedis;
//...省略import
public class StringDemo {
/**
* Jedis字符串数据类型的相关命令
*/
@Test
public void operateString() {
Jedis jedis = new Jedis("localhost", 6379);
//如果返回 pong 代表链接成功
Logger.info("jedis.ping():" + jedis.ping());
//设置key0的值为 123456
jedis.set("key0", "123456");
//返回数据类型:string
Logger.info("jedis.type(key0): " + jedis.type("key0"));
//取得值
Logger.info("jedis.get(key0): " + jedis.get("key0"));
// key是否存在
Logger.info("jedis.exists(key0):" + jedis.exists("key0"));
//返回key的长度
Logger.info("jedis.strlen(key0): " + jedis.strlen("key0"));
//返回截取字符串, 范围“0,-1”表示截取全部
Logger.info("jedis.getrange(key0): " + jedis.getrange("key0", 0, -1));
//返回截取字符串, 范围“1,4”表示区间[1,4]
Logger.info("jedis.getrange(key0): " + jedis.getrange("key0", 1, 4));
//追加字符串
Logger.info("jedis.append(key0): " + jedis.append("key0", "appendStr"));
Logger.info("jedis.get(key0): " + jedis.get("key0"));
//重命名
jedis.rename("key0", "key0_new");
//判断key 是否存在
Logger.info("jedis.exists(key0): " + jedis.exists("key0"));
//批量插入
jedis.mset("key1", "val1", "key2", "val2", "key3", "100");
//批量取出
Logger.info("jedis.mget(key1,key2,key3): " + jedis.mget("key1", "key2", "key3"));
//删除
Logger.info("jedis.del(key1): " + jedis.del("key1"));
Logger.info("jedis.exists(key1): " + jedis.exists("key1"));
//取出旧值并设置新值
Logger.info("jedis.getSet(key2): " + jedis.getSet("key2", "value3"));
//自增1
Logger.info("jedis.incr(key3): " + jedis.incr("key3"));
//自增15
Logger.info("jedis.incrBy(key3): " + jedis.incrBy("key3", 15));
//自减1
Logger.info("jedis.decr(key3): " + jedis.decr("key3"));
//自减15
Logger.info("jedis.decrBy(key3): " + jedis.decrBy("key3", 15));
//浮点数加
Logger.info("jedis.incrByFloat(key3): " + jedis.incrByFloat("key3", 1.1));
//返回0 只有在key不存在的时候才设置
Logger.info("jedis.setnx(key3): " + jedis.setnx("key3", "existVal"));
Logger.info("jedis.get(key3): " + jedis.get("key3"));// 3.1
//只有key都不存在的时候才设置,这里返回 null
Logger.info("jedis.msetnx(key2,key3): " + jedis.msetnx("key2", "exists1", "key3", "exists2"));
Logger.info("jedis.mget(key2,key3): " + jedis.mget("key2", "key3"));
//设置key,2 秒后失效
jedis.setex("key4", 2, "2 seconds is no Val");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 2 seconds is no Val
Logger.info("jedis.get(key4): " + jedis.get("key4"));
jedis.set("key6", "123456789");
//第三位之后,用新值覆盖旧值(下标从0开始)
jedis.setrange("key6", 3, "abcdefg");
//返回:123abcdefg
Logger.info("jedis.get(key6): " + jedis.get("key6"));
//返回所有匹配的key
Logger.info("jedis.get(key*): " + jedis.keys("key*"));
// 关闭连接
jedis.close();
}
}
</syntaxhighlight>
 
=== Jedis 操作 List(列表) ===

2021年11月6日 (六) 06:20的版本


关于

Jedis 是一个高性能的 Java 客户端,是 Redis 官方推荐的 Java 开发工具。要在 Java 开发中访问 Redis 缓存服务器,必须对 Jedis 熟悉才能编写出“漂亮”的代码。

Jedis 的项目地址:https://github.com/alphazero/jredis


使用Jedis,可以在 Maven 的 pom 文件中,增加以下依赖:

<dependency>
   <groupId>redis.clients</groupId>
   <artifactId>jedis</artifactId>
   <version>${redis.version}</version>
</dependency>


Jedis 基本的使用十分简单:

  • 在每次使用时,构建 Jedis 对象即可。
  • 一个 Jedis 对象代表一条和 Redis 服务进行连接的 Socket 通道。
  • 使用完 Jedis 对象之后,需要调用 Jedis.close() 方法把连接关闭,否则会占用系统资源。

创建 Jedis 对象时,可以指定 Redis 服务的 host,port 和 password。大致的伪代码如下:

Jedis jedis = new Jedis("localhost", 6379);    // 指定Redis服务的主机和端口
jedis.auth("xxxx");    // 如果Redis服务连接需要密码,就设置密码

...   // 访问Redis服务

jedis.close();    // 使用完,就关闭连接

基础实践

Jedis 操作 String(字符串)

Jedis 的 String 字符串操作函数和 Redis 客户端操作 String 字符串的命令,基本上可以一比一的相互对应。


示例:

package com.crazymakercircle.redis.jedis;
//...省略import
public class StringDemo {
	/**
	* Jedis字符串数据类型的相关命令
	*/
	@Test
	public void operateString() {
		Jedis jedis = new Jedis("localhost", 6379);
		//如果返回 pong 代表链接成功
		Logger.info("jedis.ping():" + jedis.ping());
		//设置key0的值为 123456
		jedis.set("key0", "123456");
		
		//返回数据类型:string
		Logger.info("jedis.type(key0): " + jedis.type("key0"));
		//取得值
		Logger.info("jedis.get(key0): " + jedis.get("key0"));
		// key是否存在
		Logger.info("jedis.exists(key0):" + jedis.exists("key0"));
		//返回key的长度
		Logger.info("jedis.strlen(key0): " + jedis.strlen("key0"));
		//返回截取字符串, 范围“0,-1”表示截取全部
		Logger.info("jedis.getrange(key0): " + jedis.getrange("key0", 0, -1));
		//返回截取字符串, 范围“1,4”表示区间[1,4]
		Logger.info("jedis.getrange(key0): " + jedis.getrange("key0", 1, 4));
		//追加字符串
		Logger.info("jedis.append(key0): " + jedis.append("key0", "appendStr"));
		Logger.info("jedis.get(key0): " + jedis.get("key0"));
		
		//重命名
		jedis.rename("key0", "key0_new");
		//判断key 是否存在
		Logger.info("jedis.exists(key0): " + jedis.exists("key0"));
		
		//批量插入
		jedis.mset("key1", "val1", "key2", "val2", "key3", "100");		
		//批量取出
		Logger.info("jedis.mget(key1,key2,key3): " + jedis.mget("key1", "key2", "key3"));
		
		//删除
		Logger.info("jedis.del(key1): " + jedis.del("key1"));
		Logger.info("jedis.exists(key1): " + jedis.exists("key1"));
		
		//取出旧值并设置新值
		Logger.info("jedis.getSet(key2): " + jedis.getSet("key2", "value3"));
		//自增1
		Logger.info("jedis.incr(key3): " + jedis.incr("key3"));
		//自增15
		Logger.info("jedis.incrBy(key3): " + jedis.incrBy("key3", 15));
		//自减1
		Logger.info("jedis.decr(key3): " + jedis.decr("key3"));
		//自减15
		Logger.info("jedis.decrBy(key3): " + jedis.decrBy("key3", 15));
		//浮点数加
		Logger.info("jedis.incrByFloat(key3): " + jedis.incrByFloat("key3", 1.1));
		
		//返回0 只有在key不存在的时候才设置
		Logger.info("jedis.setnx(key3): " + jedis.setnx("key3", "existVal"));
		Logger.info("jedis.get(key3): " + jedis.get("key3"));// 3.1
		
		//只有key都不存在的时候才设置,这里返回 null
		Logger.info("jedis.msetnx(key2,key3): " + jedis.msetnx("key2", "exists1", "key3", "exists2"));
		Logger.info("jedis.mget(key2,key3): " + jedis.mget("key2", "key3"));
		
		//设置key,2 秒后失效
		jedis.setex("key4", 2, "2 seconds is no Val");
		try {
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		// 2 seconds is no Val
		Logger.info("jedis.get(key4): " + jedis.get("key4"));
		
		jedis.set("key6", "123456789");
		//第三位之后,用新值覆盖旧值(下标从0开始)
		jedis.setrange("key6", 3, "abcdefg");
		//返回:123abcdefg
		Logger.info("jedis.get(key6): " + jedis.get("key6"));
		
		//返回所有匹配的key
		Logger.info("jedis.get(key*): " + jedis.keys("key*")); 
		
		// 关闭连接
		jedis.close();
	}
}

Jedis 操作 List(列表)