首页 > 其他分享 >jedis

jedis

时间:2024-07-24 20:25:19浏览次数:7  
标签:Redis redis Jedis org jedis import

jedis简介

jedis是Redis的java客户端库,为java开发者提供了与redis服务器进行通信的便捷方式。

常见的java客户端库有:Jedis,Lettuce,Redisson。

在IDEA中使用jedis的步骤

1、导包

创建一个maven类型文件

在pom.xml中添加包

    <dependencies>
    <!--jedis-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.7.0</version>
            <scope>compile</scope>
        </dependency>
    <!--单元测试类-->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.7.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

2、然后新建一个test类

先建立连接,然后存入数据,最后要记着关

package com.heima.test;

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import redis.clients.jedis.Jedis;

import java.util.Map;

public class Jedistest {
    private Jedis jedis;

    @BeforeEach
    void setUp(){
        //1、建立连接
        jedis = new Jedis("192.168.152.128",6379);
        //2、设置密码,我没设置密码,设置了密码需要填写
//        jedis.auth("");
        //3、选择库
        jedis.select(0);
    }

    @Test
    void testString(){
        //存入数据
        String result = jedis.set("name","老王");
        System.out.println("result = " + result);
        //获取数据
        String name = jedis.get("name");
        System.out.println("name = "+ name);
    }

    @Test
    void testHash(){
        //插入哈希
        jedis.hset("user:1","name","Jack");
        jedis.hset("user:1","age","22");

        Map<String,String> map = jedis.hgetAll("user:1");
        System.out.println(map);
    }
    //关
    @AfterEach
    void tearDown(){
        if(jedis != null){
            jedis.close();
        }
    }
}

jedis连接池

jedis本身是线程不安全的,频繁的创建和销毁连接会损耗jedis的性能,因此建议采用jedis连接池代替jedis直连。

创建连接池:jedisConnectionFactory

package com.heima.jedis.util;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class jedisConnectionFactory {
    private  static final JedisPool jedisPool;

    //用静态代码块完成对jedis对象的初始化
    static{
        //配置连接池
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        //最大连接数
        poolConfig.setMaxTotal(8);
        //最大空闲连接,最多有8个空闲的连接
        poolConfig.setMaxIdle(8);
        //最小空闲连接,当没有连接是就会逐渐释放连接直到为0
        poolConfig.setMinIdle(0);
        //最长等待时长,如果没有空闲连接,最多等待1000毫秒,没有连接释放就报错。默认是-1,也就是一直等。
        poolConfig.setMaxWaitMillis(1000);
        //创建连接池对象
        jedisPool = new JedisPool(poolConfig,"192.168.152.128",6379,1000);
    }

    public static Jedis getJedis(){
        return jedisPool.getResource();
    }
}

在jedistest中把获得连接的方式一改

ok,可以运行了

Spring Data Reids

Spring Data里面封装了很多对数据库的操作,其中Spring Data Reids就是Spring对redis的操作。

SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做SpringDataRedis,

特点:

提供了对不同Redis客户端的整合(Lettuce和Jedis )

提供了RedisTemplate统一APl来操作Redis

支持Redis的发布订阅模型

支持Redis哨兵和Redis集群

支持基于Lettuce的响应式编程

支持基于JDK、JSON、字符串、Spring对象的数据序列化及反序列化

支持基于Redis的JDKCollection实现

在jedis中提供了ReidsTemplate工具类,其中封装了各种对Redis的操作。并且将不同数据类型的操作API封装到了不同的类型中。

这样对reids的操作进行封装,提高了redis的可读性,减少了redis代码的臃肿程度。

API

返回值类型

说明

redisTemplate.opsForValue()

Value0perations

操作String类型数据

redisTemplate.opsForHash()

HashOperations

操作Hash类型数据

redisTemplate.opsForList()

List0perations

操作List类型数据

redisTemplate.opsForSet()

setoperations

操作Set类型数据

redisTemplate.opsForZSet()

zSetoperations

操作SortedSet类型数据

redisTemplate

通用的命令

使用步骤:

1、引入依赖(两个)

<!--Redis依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</ artifactId>
</ dependency>
<!--连接池依赖-->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>

2、配置redis的地址信息

如果报错说被弃用,则换一个其他(更高版本的试一下),注意格式,空格

标签:Redis,redis,Jedis,org,jedis,import
From: https://blog.csdn.net/qq_64669006/article/details/140616102

相关文章

  • 【异常】nested exception is java.lang.NoClassDefFoundError: redis/clients/jedis/
    原因是版本冲突。以下我原本使用的版本信息<!--SpringBootRedis依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.1.8.RELEASE</version><......
  • Jedis连接踩坑日记
    Jedis连接踩坑日记背景:线上某块业务的增删改功能全部都不可用。页面发送了xhr请求之后状态一直处于pending状态,后端没有日志产生排查路线与解决办法第一:由于服务在内网里面,无法进行远程调试。所以采用比较笨的方式,在代码里面多加一些日志,最后定位JedisUtil.getJedis().hs......
  • Redis的Java客户端-Jedis
    Redis的Java客户端-Jedis在Redis官网中提供了各种语言的客户端,地址:https://redis.io/docs/clients/其中Java客户端也包含很多:标记为❤的就是推荐使用的java客户端,包括:Jedis和Lettuce:这两个主要是提供了Redis命令对应的API,方便我们操作Redis,而SpringDataRedis是对这两种做了......
  • Jedis串读(转发https://heapdump.cn/article/5092763解Bug之路-串包Bug)
    解Bug之路-串包Bug笔者很热衷于解决Bug,同时比较擅长(网络/协议)部分,所以经常被唤去解决一些网络IO方面的Bug。现在就挑一个案例出来,写出分析思路,以飨读者,希望读者在以后的工作中能够少踩点坑。串包Bug现场前置故障Redis超时由于某个系统大量的hget、hset操作将Redis拖垮,通过......
  • 【Java 进阶篇】Jedis 操作 Hash:Redis中的散列类型
    在Redis中,Hash是一种存储键值对的数据结构,它适用于存储对象的多个属性。Jedis作为Java开发者与Redis交互的工具,提供了丰富的API来操作Hash类型。本文将深入介绍Jedis如何操作Redis中的Hash类型数据,通过生动的代码示例和详细的解释,助你轻松掌握Jedis中Hash的各种操作。Jedis中Hash的......
  • 记录一次jedis连接池没有释放导致的生产问题
    /***占用锁,并设置唯一锁id*@paramlockKey锁key*@return锁id*/publicStringlock(StringlockKey,Integertimeout){//获得jedis实例Jedisjedis=redisUtil.getJedis();//锁id(必须拥有此id才能释放锁)StringlockId=UUID.randomUUID().to......
  • Spring Data Redis切换底层Jedis 和 Lettuce实现
    1简介SpringDataRedis是SpringData系列的一部分,它提供了Spring应用程序对Redis的轻松配置和使用。它不仅提供了对Redis操作的高级抽象,还支持Jedis和Lettuce两种连接方式。可通过简单的配置就能连接Redis,并且可以切换Jedis和Lettuce两个连接方式。下面先来看看我们该如何使......
  • Spring Boot JedisCluster配置
    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API1、添加Maven依赖(或jar包)<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dep......
  • @Test下jedisManager.getJedis报错NullPointerException
    原文链接:https://www.longkui.site/error/test%e4%b8%8bjedismanager-getjedis%e6%8a%a5%e9%94%99nullpointerexception/4813/报错代码:importorg.junit.Test;importredis.clients.jedis.Jedis;@AutowiredprivateJedisManagerjedisManager;publicclassTestDem......
  • redis 源码分析:Jedis 哨兵模式连接原理
    1.可以从单元测试开始入手查看类JedisSentinelPoolprivatestaticfinalStringMASTER_NAME="mymaster";protectedstaticfinalHostAndPortsentinel1=HostAndPorts.getSentinelServers().get(1);protectedstaticfinalHostAndPortsentinel2=HostAndPorts......