jedis的操作和使用
Posted GeminiXin.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jedis的操作和使用相关的知识,希望对你有一定的参考价值。
jedis 是 Redis 官方推荐的Java连接开发工具;使用 Java 操作 redis 中间件;在企业中用的最多的就是Jedis。Jedis提供了完整Redis命令,而Redisson有更多分布式的容器实现。
如果使用jedis操作redis,那么需要对redis基本操作命令要十分熟悉;
对redis命令不熟悉的看这里:https://blog.csdn.net/weixin_44890938/article/details/118909055?spm=1001.2014.3001.5501
导入对应的依赖
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.6.3</version>
</dependency>
1.连接测试
代码示例:
package com.beyond;
import redis.clients.jedis.Jedis;
public class JedisCliTest {
public synchronized static void main(String[] args) throws InterruptedException {
Jedis jedis = new Jedis("192.168.204.128", 6379);
System.out.println("查看连接状态:" + jedis.ping());
System.out.println("切换数据库:" + jedis.select(2));
System.out.println("新增一个key:" + jedis.set("aa", "sasa"));
System.out.println("查看数据大小:" + jedis.dbSize());
System.out.println("查看当前数据库所有 key:" + jedis.keys("*"));
System.out.println("清空当前数据库:" + jedis.flushDB());
System.out.println("清空所有数据库:" + jedis.flushAll());
System.out.println("新增一个key:" + jedis.set("k", "v"));
System.out.println("新增一个key:" + jedis.set("b", "s"));
System.out.println("新增一个key:" + jedis.set("s", "aa"));
System.out.println("查看当前key是否存在:" + jedis.exists("k"));
System.out.println("查看当前key是否存在:" + jedis.exists("a"));
System.out.println("查看当前数据库所有 key:" + jedis.keys("*"));
System.out.println("设置当前key过期时间:" + jedis.expire("s", 5));
try {
Thread.sleep(2000);
System.out.println("休眠 2S 后查看当前key剩余过期时间:" + jedis.ttl("s"));
} catch (Exception e) {
} finally {
Thread.sleep(2000);
System.out.println("再次休眠 2S 后查看当前key剩余过期时间:" + jedis.ttl("s"));
}
System.out.println("移除当前的key:" + jedis.move("b", 1));
System.out.println("查看当前数据库所有 key:" + jedis.keys("*"));
System.out.println("查看当前key的类型:" + jedis.type("k"));
System.out.println("清空当前数据库:" + jedis.flushDB());
jedis.disconnect();
jedis.close();
}
}
运行结果:
查看连接状态:PONG
切换数据库:OK
新增一个key:OK
查看数据大小:1
查看当前数据库所有 key:[aa]
清空当前数据库:OK
清空所有数据库:OK
新增一个key:OK
新增一个key:OK
新增一个key:OK
查看当前key是否存在:true
查看当前key是否存在:false
查看当前数据库所有 key:[b, s, k]
设置当前key过期时间:1
休眠 2S 后查看当前key剩余过期时间:3
再次休眠 2S 后查看当前key剩余过期时间:1
移除当前的key:1
查看当前数据库所有 key:[s, k]
查看当前key的类型:string
清空当前数据库:OK
Process finished with exit code 0
2. String (字符串)
代码示例:
package com.beyond;
import redis.clients.jedis.Jedis;
public class JedisStringTest {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.204.128", 6379);
jedis.select(4);
jedis.flushDB();
System.out.println("添加一个key: " + jedis.set("k1", "aaaaa"));
System.out.println("同时新增多个值: " + jedis.mset("k2", "v2", "k3", "v3", "k4", "v4", "k5", "v5"));
System.out.println("获取当前key的value: " + jedis.get("k3"));
System.out.println("同时获取多个值: " + jedis.mget("k1", "k4"));
System.out.println("查看所有key: " + jedis.keys("*"));
System.out.println("追加字符串,若当前key不存在,相当于新增当前key(set操作)");
System.out.println("追加字符串: " + jedis.append("k1", "ssbbsb"));
System.out.println(" 查看当前key的value的长度: " + jedis.strlen("k1"));
System.out.println("追加字符串: " + jedis.append("k6", "ssasdadsda"));
System.out.println("同时获取多个值: " + jedis.mget("k1", "k6"));
jedis.flushDB();
System.out.println("-------------------------------------");
jedis.mset("k2", "v2aaa", "k1", "v1dasdad");
System.out.println(jedis.set("kk", "0"));
System.out.println("incr 自增操作相当于 i++");
System.out.println(jedis.incr("kk"));
System.out.println("decr 自减操作相当于 i--");
System.out.println(jedis.decr("kk"));
System.out.println("incrby 设置步长,相当于 i+=n");
System.out.println(jedis.incrBy("kk", 10));
System.out.println("decrby 设置步长,相当于 i-=n");
System.out.println(jedis.decrBy("kk", 5));
System.out.println("k1: " + jedis.get("k1") + " k2" + jedis.get("k2"));
System.out.println("截取字符串: " + jedis.getrange("k1", 0, 3));
System.out.println("如果结束端点为负值的话,为获取全部字符串: " + jedis.getrange("k1", 0, -1));
System.out.println("替换字符串: " + jedis.setrange("k2", 0, "dasd"));
System.out.println(" k2: " + jedis.get("k2"));
System.out.println("替换字符串: " + jedis.setrange("k2", 0, "dasdadsadsad"));
System.out.println(" k2: " + jedis.get("k2"));
System.out.println("当前key不存在时创建: " + jedis.setnx("k", "sadada"));
System.out.println("当前key不存在时创建: " + jedis.setnx("k2", "sadada"));
System.out.println("设置过期时间: " + jedis.setex("as", 5, "dasdasda"));
System.out.println("同时处理多个,当前key不存在时创建: " + jedis.msetnx("k3", "v3", "k4", "v4"));
System.out.println("同时处理多个,当前key不存在时创建: " + jedis.msetnx("k3", "v3", "k5", "v5"));
jedis.flushDB();
System.out.println("-------------------------------------");
System.out.println("getset 先get后set " +
"1.如果当前key不存在,先返回null,然后创建" +
"2.如果当前key存在,先返回当前value,然后重新设置当前key的值");
System.out.println(jedis.getSet("v1", "aaaaa"));
System.out.println(jedis.getSet("v1", "bbbbb"));
System.out.println(jedis.get("v1"));
jedis.flushDB();
}
}
运行结果:
添加一个key: OK
同时新增多个值: OK
获取当前key的value: v3
同时获取多个值: [aaaaa, v4]
查看所有key: [k3, k4, k5, k1, k2]
追加字符串,若当前key不存在,相当于新增当前key(set操作)
追加字符串: 11
查看当前key的value的长度: 11
追加字符串: 10
同时获取多个值: [aaaaassbbsb, ssasdadsda]
-------------------------------------
OK
incr 自增操作相当于 i++
1
decr 自减操作相当于 i--
0
incrby 设置步长,相当于 i+=n
10
decrby 设置步长,相当于 i-=n
5
k1: v1dasdad k2v2aaa
截取字符串: v1da
如果结束端点为负值的话,为获取全部字符串: v1dasdad
替换字符串: 5
k2: dasda
替换字符串: 12
k2: dasdadsadsad
当前key不存在时创建: 1
当前key不存在时创建: 0
设置过期时间: OK
同时处理多个,当前key不存在时创建: 1
同时处理多个,当前key不存在时创建: 0
-------------------------------------
getset 先get后set 1.如果当前key不存在,先返回null,然后创建2.如果当前key存在,先返回当前value,然后重新设置当前key的值
null
aaaaa
bbbbb
Process finished with exit code 0
3.List(列表)
代码示例:
package com.beyond;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.ListPosition;
public class JedisListTest {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.204.128", 6379);
jedis.select(5);
jedis.flushDB();
System.out.println("将一个值或者多个值插入列表头(左边)部 k1 :" + jedis.lpush("k1", "v1", "v2", "v3"));
System.out.println("获取列表的值(可获取列表区间的值) k1 :" + jedis.lrange("k1", 0, -1));
System.out.println(" 将一个值或者多个值插入列表尾(右边)部 s1 :" + jedis.rpush("s1", "a1", "a2", "a3"));
System.out.println("获取列表的值(可获取列表区间的值) s1 :" + jedis.lrange("s1", 0, -1));
System.out.println("移除列表的元素,从左边开始 :" + jedis.lpop("s1"));
System.out.println("s1 :" + jedis.lrange("s1", 0, -1));
System.out.println("移除列表的元素,从右边开始 :" + jedis.rpop("k1"));
System.out.println("k1 :" + jedis.lrange("k1", 0, -1));
System.out.println("获取列表索引处元素 k1 0 :"+ jedis.lindex("k1", 0));
System.out.println("获取列表索引处元素 s1 1 :" + jedis.lindex("s1", 1));
System.out.println(" 获取列表的长度 k1 :" + jedis.llen("k1"));
System.out.println("移除指定个数的value,精确匹配,删除1个 :" + jedis.lrem("k1", 1, "v2"));
System.out.println("添加元素 k1 :" + jedis.lpush("k1", "v1", "v2", "v2", "v2", "v3"));
System.out.println("获取列表的值(可获取列表区间的值) k1 :" + jedis.lrange("k1", 0, -1));
System.out.println("移除指定个数的value,精确匹配,删除多个 :" + jedis.lrem("k1", 2, "v2"));
System.out.println("获取列表的值(可获取列表区间的值) k1 :" + jedis.lrange("k1", 0, -1));
System.out.println("截取元素区间的值 :" + jedis.ltrim("s1"以上是关于jedis的操作和使用的主要内容,如果未能解决你的问题,请参考以下文章
Redis使用 Jedis 操作 Redis 数据库 ② ( Jedis API 规律 | Redis 命令与 Jedis 函数名称基本一致 | Jedis API 使用示例 )