“Jedis 的编程实践”的版本间差异
跳到导航
跳到搜索
(建立内容为“category:Redis == 关于 == Jedis 是一个高性能的 Java 客户端,是 Redis 官方推荐的 Java 开发工具。要在 Java 开发中访问 Redis 缓…”的新页面) |
(→基础实践) |
||
第33行: | 第33行: | ||
== 基础实践 == | == 基础实践 == | ||
=== | === 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(); } }