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的操作和使用的主要内容,如果未能解决你的问题,请参考以下文章

Jedis使用操作

jedis的操作和使用

IDEA使用Jedis访问操作Redis数据库

Redis使用 Jedis 操作 Redis 数据库 ② ( Jedis API 规律 | Redis 命令与 Jedis 函数名称基本一致 | Jedis API 使用示例 )

Hadoop Java-Maven使用Jedis操作Redis

Jedis学习使用(java操作redis)