Jedis操作Redis模型

Redis 深度解析与 Java Jedis 实例 Redis 以其高性能、丰富的数据结构和灵活的用法而受到广泛关注。它支持多种数据类型,如字符串、哈希表、列表、集合和有序集合。Redis 将数据存储在内存中,这使得它能够快速地读写数据,非常适合用于缓存和实时数据处理。Jedis 是一个 Java 语言的 Redis 客户端,它提供了简单易用的 API 来与 Redis 服务器进行交互。Jedis 支持 Redis 的所有数据类型和命令,并提供了连接池管理、事务支持和管道操作等功能。 阅读详情

对于外部程序,想要访问Redis首先需要对Redis进行两个设置
在Redis配置文件redis.conf中配置如下

1. 注释掉bang 127.0.0.1,否则只能本机访问 
2. 关闭redis的保护模式

不推荐使用new jedis这样的操作,因为操作一次都要对redis进行远程访问,会大量的消耗资源
推荐使用连接池,其中有三个非常重要的类

JedisPoolConfig:设置和读取配置文件
JedisPool:Jedis连接池
Jedis:Jedis操作对象

首先先来一个new jedis的栗子

package jedisdemo;

import redis.clients.jedis.Jedis;

/**
 * Jedis 操作 Redis
 */
public class JedisTest {

    private static Jedis jedis;

    public static void main(String[] args) {
        jedis = new Jedis("192.168.242.161", 6379);

        jedis.set("name", "zhangsan");

        String value = jedis.get("name");

        System.out.println("name = " + value);
    }
}

Console输出name = zhangsan

下面是使用连接池的栗子

package jedisdemo;

import static org.junit.Assert.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

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

/**
 * Jedis 操作 Redis(使用连接池)
 */
public class JedisPoolTest {

    private static int MAX_TOTAL = 20; // 最大连接数,默认为8,-1表示不限制
    private static int MAX_IDLE = 10; // 最大空闲连接数,默认为8
    private static int MIN_IDLE = 5; // 初始化连接数
    private static int MAX_WAIT = 10000; // 最大等待时间,单位为毫秒,默认-1,永不超时,如果超时,抛出异常 JedisConnectionException
    private static boolean TEST_ON_BORROW = true; // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;


    private static String HOST = "192.168.242.161"; // IP
    private static int PORT = 6379; // 端口,默认6379
    private static String AUTH = "admin"; // redis 密码
    private static int TIMEOUT = 1000; // 超时时间

    private static Jedis jedis = null;
    private JedisPool jedisPool = null;

    @Before
    public void init() throws Exception {
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(MAX_TOTAL);
        poolConfig.setMaxIdle(MAX_IDLE);
        poolConfig.setMinIdle(MIN_IDLE);
        poolConfig.setMaxWaitMillis(MAX_WAIT);
        poolConfig.setTestOnBorrow(TEST_ON_BORROW);

        // 如果有密码,需要设置
        // JedisPool jedisPool = new JedisPool(poolConfig, HOST, PORT, TIMEOUT, AUTH);

        jedisPool  = new JedisPool(poolConfig, HOST, PORT);

        jedis = jedisPool .getResource();
    }

    // Redis String 字符串
    @Test
    public void testString() throws Exception {
        // set get
        jedis.set("address", "HeBei");
        System.out.println("address = " + jedis.get("address"));

        // append
        jedis.append("address", " tangsan");
        System.out.println("address = " + jedis.get("address"));

        // del
        jedis.del("address");
        System.out.println("address = " + jedis.get("address"));
    }

    // Redis List 列表
    @Test
    public void testList() throws Exception {
        // lpush lrange
         jedis.lpush("dblist", "mysql", "oracle", "db2");
         System.out.println("dblist = " + jedis.lrange("dblist", 0, -1));

        // rpush lrange
        jedis.rpush("dblist", "mongodb", "redis");
        System.out.println("dblist = " + jedis.lrange("dblist", 0, -1));

        // lpop lrange
        jedis.lpop("dblist");
        System.out.println("dblist = " + jedis.lrange("dblist", 0, -1));

        // llen
        System.out.println(jedis.llen("dblist"));
    }

    // Redis Set 无序集合
    @Test
    public void testSet() throws Exception {
        // sadd smembers
        jedis.sadd("myset", "peach", "pear", "banana");
        System.out.println("myset = " + jedis.smembers("myset"));

        // srem smembers
        jedis.srem("myset", "banana");
        System.out.println("myset = " + jedis.smembers("myset"));

        // scard
        System.out.println(jedis.scard("myset"));
    }

    // Redis Hash 哈希
    @Test
    public void testHash() throws Exception {
        // hset
        Map<String, String> hash = new HashMap<String, String>();
        hash.put("name", "tom");
        hash.put("age", "20");
        hash.put("address", "ShangHai");
        jedis.hmset("user", hash);

        // hdel
        jedis.hdel("user", "address");

        // hexists
        System.out.println(jedis.hexists("user", "address"));

        // hkeys 
        Set<String> hkeys = jedis.hkeys("user");
        for (String str : hkeys) {
            System.out.println(str);
        }

        // hvals
        List<String> hvals = jedis.hvals("user");
        for (String str : hvals) {
            System.out.println(str);
        }

        // hgetall
        Map<String, String> map = jedis.hgetAll("user");
        for(Map.Entry<String, String> entry : map.entrySet()) {
            System.out.println(entry.getKey() + " = " + entry.getValue());
        }
    }

    // Redis ZSet 有序集合
    @Test
    public void testZSet() throws Exception {
        // zadd zrange
        Map<String, Double> scoreMembers = new HashMap<String, Double>();
        scoreMembers.put("math", 90.0);
        scoreMembers.put("english", 87.5);
        scoreMembers.put("sports", 94.0);
        scoreMembers.put("music", 67.0);
        scoreMembers.put("politics", 97.0);
        jedis.zadd("score_set", scoreMembers);
        System.out.println(jedis.zrange("score_set", 0, -1));
        System.out.println(jedis.zrangeWithScores("score_set", 0, -1));

        // zrem 
        jedis.zrem("score_set", "sports");
        System.out.println(jedis.zrange("score_set", 0, -1));

        // zcard
        System.out.println(jedis.zcard("score_set"));

        // zrank
        System.out.println(jedis.zrank("score_set", "math"));
    }

    // Java对象存储到Redis(使用序列化)
    @Test
    public void testSerialize() throws Exception {
        User user = new User(1, "张三", "河北");
        jedis.set("user".getBytes(), SerializeUtil.serialize(user));
    }

    // Redis 反序列化后转为Java对象
    @Test
    public void testDeSerialize() throws Exception {
        byte[] bytes = jedis.get("user".getBytes());
        System.out.println((User)SerializeUtil.deSerialize(bytes));
    }

    // 释放资源
    @After
    public void destory() throws Exception {
        if (jedis != null) {
            jedis.close();
        }
    }
}

序列化和反序列化工具类

package jedistest;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class SerializeUtil {

    /**
     * 序列化对象
     */
    public static byte[] serialize(Object obj) {
        byte[] bytes = null;
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ;
            ObjectOutputStream oos = new ObjectOutputStream(baos);
            oos.writeObject(obj);
            bytes = baos.toByteArray();
            baos.close();
            oos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return bytes;
    }

    /**
     * 反序列化对象
     */
    public static Object deSerialize(byte[] bytes) {
        Object obj = null;
        try {
            ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
            ObjectInputStream ois = new ObjectInputStream(bais);
            obj = ois.readObject();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return obj;
    }
}
SpringBoot集成redis之Jedis 记录学习redis的一些理解,以及实操过程的雷雷清点。 阅读详情

相关推荐

Java中使用Jedis操作Redis—Redis快速入门

这里先说Java中使用Jedis操作Redis,稍后会整理Redis快速入门来详细介绍Redis(跟着项目走会更容易理解)。  Java连接Redis:  在Java程序中使用Redis之前,我们需要先确保在机器上安装了Redis服务及Java Redis驱动程序,并且你的机器上能够正常使用Java环境。  1、Java的安装配置参考-Java开发环境配置-(略)  2、安装Red

gaosure的博客 2991

理解Redis的线程 IO 模型

最近一位朋友问到:既然Redis是单线程的工作模式,如何处理那么多的并发客户端连接? Redis 是个单线程程序!这点必须铭记。也许你会怀疑高并发的 Redis 中间件怎么可能是单线程。很抱歉,它就是单线程,你的怀疑暴露了你基础知识的不足。莫要瞧不起单线程,除了 Redis 之外,Node.js 也是单线程,Nginx 也是单线程,但是它们都是服务器高性能的典范。 优势使用不当就会变成劣势。r...

布道 5292

【征服redis3】一文征服redis的jedis客户端

Jedis 是一个流行的 Java 编写的 Redis 客户端库,它提供了连接和操作 Redis 服务器的功能。简单易用:Jedis 提供了简洁的 API,方便开发人员使用,减少了连接和操作 Redis 的复杂性。高性能:Jedis 是通过直接与 Redis 服务器进行通信来实现操作的,因此具有较高的性能。支持多种数据类型:Jedis 支持操作 Redis 的各种数据类型,包括字符串、哈希、列表、集合、有序集合等。

纵横千里 捭阖四方 的专栏 1399

java redis框架_Redis框架Jedis及Redisson对比解析

1概述1.1. 主要内容本文的主要内容为对比Redis的两个框架:Jedis与Redisson,分析各自的优势与缺点,为项目中Java缓存方案中的Redis编程模型的选择提供参考。2. Jedis与Redisson对比2.1. 概况对比Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持;Redisson实现了分布式和可扩展的Java数据结构,和Jedis相比...

weixin_32441957的博客 455

Jedis连接Redis操作全面指南

Redis(Remote Dictionary Server)是一个开源的高性能键值对存储数据库,广泛用于缓存解决方案,消息队列系统(如Redis Streams),以及在数据库、缓存和消息中间件等多种场景中。它的数据结构丰富,操作简单,支持多种数据类型的存储,包括字符串(strings)、列表(lists)、集合(sets)、有序集合(sorted sets)、哈希(hashes)、位图(bitmaps)、超日志(hyperloglogs)和地理空间索引(geospatial indexes)。

weixin_29840475的博客 743

掌握Jedis:Java操作Redis的全面指南

Jedis是Java语言实现的Redis客户端库,它是连接和操作Redis服务器的桥梁。Jedis的API设计简洁直观,能够让Java开发者方便地对Redis进行操作。它支持几乎所有的Redis命令,并且为不同的数据结构提供了丰富的方法实现。

weixin_33480380的博客 974

Redis 五种io模型介绍

1. 阻塞I/O模型: 最常用的I/O模型就是阻塞I/O模型,缺省情形下,所有文件操作都是阻塞的。我们以套接字接口为例来讲解此模型:在进程空间中调用revcfrom,其系统调用直到数据包到达且被复制到应用进程的缓存区中或者发生错误时才返回,在此期间一直会等待,进程在从调用recvfrom开始到它返回的整段时间内都是被阻塞的,因此被称为阻塞I/O模型 2. 非阻塞I/O模型: recvfrom从应...

weixin_44100455的博客 9446

使用Spring结合Jedis操作Redis的实践指南

Spring Data Redis是Spring框架中专门针对Redis数据访问提供的一套简化编程模型。它的目标是通过提供一个高度可扩展的编程模型,来促进非关系型数据库的访问。Spring Data Redis的核心概念包括:数据访问对象(DAO):通过定义一系列通用的数据访问接口,简化了数据访问层的实现。:作为Spring Data Redis的核心类,提供了Redis操作的各种模板方法。Repository模式:简化数据访问层的代码,支持自定义查询方法,减少重复代码。

weixin_42629522的博客 758

Java中Redis存储复杂json格式数据并返回给前端

问题背景 在Java Web项目中,经常需要前端请求数据,后台从数据库中查询并计算最后返回json格式数据给前端。而每次请求都需要计算一次可能比较浪费时间,这时我们可以将计算好的结果保存在redis中,下次请求时先判断redis中是否已经存在,如果是则直接从redis里取出返回,因为是在内存中,所以比较快。而自己在项目中遇到的json格式数据比较复杂,下面记录一下redis存储对象和json格式数...

litexy 7497

视觉定位避坑指南:基于双mark点的坐标转换常见错误排查

本文详细解析了工业视觉项目中基于双mark点的坐标转换常见错误及排查方法,涵盖旋转矩阵构建、坐标系原点选择、图像预处理优化等关键环节。通过实战案例和代码示例,帮助工程师避免定位偏差,提升系统精度,特别适用于自动化检测和精密制造场景。

7z8x2c4v6b9的博客 167

Openclaw Onboarding向导全攻略——如何配置你的第一个AI助手

很多新手在成功运行 `openclaw --version` 后,面对黑底白字的终端就陷入了迷茫:“安装好了,然后呢?” 本篇我们就彻底解决这个问题,带你完整走完 `openclaw onboard` 交互式初始化配置向导的每一步,从“安装完成”到“真正能用”,只差这一个向导的距离。 本文为2026年3月最新版,适配OpenClaw v2026.2.x 稳定版,所有步骤均经过实测验证,可直接落地。

夏日清风 1917

Redis入门

Redis入门 Redis 1. 概念 2. 下载安装 3. 命令操作 1. 数据结构 4. 持久化操作 1. 概念: redis是一款高性能的NoSQL系列的非关系型数据库 1.1.什么是NOSQL NOSQL(NOSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理...

weixin_30449453的博客 933

【中兴交换机MC-LAG配置】

​ 中兴mc-lag配置 主设备配置如下: Keepalive链路 interface smartgroup1023 //用作MC-LAG的Keepalive链路接口 switch attribute disable yes description For_Keepalived exit interface xgei-0/1/1/47 switch attribute disable yes description For_Keepalived exit interface

qq_31440733的博客 1万+

Jedis

resp协议,jedis命令

weixin_61427900的博客 317

CANOe实战指南 - 从入门到精通的全流程解析

本文是CANOe实战指南,全面解析从入门到精通的全流程。内容涵盖CANOe软件的核心功能仿真、测试与分析,详细指导安装配置、工程创建、CAN信号收发、UDS诊断通信、CAPL自动化编程以及Panel面板设计。通过实战案例,帮助汽车电子工程师快速掌握这一行业标杆工具,构建自动化测试环境,提升开发与测试效率。

pear55的博客 574

手把手教你用Docker快速部署ZLMediaKit流媒体服务器(含WebRTC配置)

本文详细介绍了如何使用Docker快速部署ZLMediaKit流媒体服务器,并配置WebRTC功能。通过容器化部署,实现环境一致性、资源隔离和快速扩展,同时提供WebRTC专项配置、多协议推拉流实战测试及生产环境优化建议,帮助开发者高效搭建企业级流媒体平台。

agile9scrum的博客 202

Redis框架Jedis及Redisson的对比

本文的主要内容为对比Redis的两个框架:Jedis与Redisson,分析各自的优势与缺点,为项目中Java缓存方案中的Redis编程模型的选择提供参考。 Jedis与Redisson对比 1.概况对比 Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持;Redisson实现了分布式和可扩展的Java数据结构,和Jedis相比,功能较为简单,不支持字符串操作,不支持排序、事务、管道、分区等Redis特性。Redisson的宗旨是促进使用者对Redis的关注分离,从而

qf2019的博客 1856

我用 AI Agent 全自动跑 COMSOL 仿真:从建模到后处理,踩了 10+ 个深坑

本文探讨了利用AI通过COMSOL Java API实现AI芯片液冷冷板全流程自动化仿真的实践。针对700W高功耗AI芯片的散热需求,构建了包含4颗Chiplet和微通道冷板的三维液冷模型。通过严格设计的Prompt工程,AI Agent成功完成了从几何建模到结果验证的全过程,最终实现了芯片最高温度54°C的良好散热效果。文章重点分享了10个关键问题的解决经验,包括流体连通性验证、网格顺序控制、离散阶数选择、收敛判据优化等,并建立了包含流场/热场/网格独立性的三重验证体系。实践表明,AI可高效处理重复性工作

sjjsjjsjjsjjsjj的博客 974

Redis框架中 Jedis、Lettuce、Redisson 有什么区别

Redis框架中 Jedis、Lettuce、Redisson 有什么区别

ElendaLee的专栏 602

matlab SAR图像的多视滤波

单视复数数据(Single Look Comple)是原始的最高分辨率数据,但是从单个像元散射的雷达回波信号的相干叠加,导致强度信息有很多噪声。SAR的多视处理是对SLC数据方位向和/或距离向做平均,得到的结果是多视后的强度数据。多视处理可以提高SAR图像的信噪比,有效抑制斑点噪声,但是会降低方位分辨率。

点云侠的博客 534

5G 模组 FM650 USB模式查询及网络配置

完成以上配置后,5G模组可进行搜网,入网成功后,上位机获取 5G IP。

十年通信老兵的技术修炼之路——从3G到5G,从地面基站到卫星通信。 1323

jedis

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

qq_64669006的博客 1180

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Jedis二次开发

背景 Redis作为一个功能强大的nosql数据库,在项目中使用越来越广泛,为了更高效合理使用Redis,Redis提供了多种语言的客户端实现,而Jedis就是java中使用最广泛的Redis客户端实现。 在Jedis客户端jedis.jar包中,有一个jedis.class类,是一个大而全的对应Redis命令的类,方法比较多,使用起来不是很方便,主要存在两方面比较突出的问题: 不同的数据结...

Slive的专栏 427

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

springBoot整合Redis(一、Jedis操作Redis)

在springboot环境下连接redis的方法有很多,首先最简单的就是直接通过jedis类来连接,jedis类就相当于是redis的客户端表示。但是因为现在比较常用的是:StringRedisTemplate和RedisTemplate,所以jedis只做简单的介绍。

kkkkatoq的博客 4357

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Redis 基础 Jedis -- Jedis(Java程序操作Redis的工具)

Jedis(Java程序操作Redis的工具)

天行健 君子以自强不息,地势坤 君子以厚德载物。 1万+

Redis(四)整合:Redis在Jedis中如何使用和操作?

前言 百度的概念性解答我就不贴了,简单来说,Jedis是Redis官方推荐的Java连接开发工具! 虽然现在的SpringBoot2.×版本已经将Jedis换成了Lettuce,但是我觉得还是有必要了解一下Jedis的使用! 如何在java项目中整合Jedis并且连接Redis数据库? ①创建一个Maven项目 空的即可~怎么创建我就不赘述了! ②导入Jedis和fastjson依赖,耐心等待下载完成! <!--导入jedis的包--> <dependency> <

大鱼的博客 3万+
上一篇: Shuffle详解
下一篇: HBase常用操作
C_FuL
博客等级 码龄10年 15粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值