Jedis-操作redis

之前几篇文章讲的都是在 Linux 环境下如何配置 redis,但是对于开发人员来讲,最终还是要通过Java 语言来连接并操作 redis 数据库,Jedis 是 redis 官方推荐的一个使用 Java 语言来连接 redis 的库

目录

1. 添加 Jedis 的 maven 依赖

2. 连接单机版 redis

3. 操作List,Hash,Set,Zset等类型

4. Jedis 连接池

5. 连接 redis 集群

6. Jedis 实现主从复制模式


1. 添加 Jedis 的 maven 依赖

<!-- 添加jedis依赖,操作redis-->
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
     <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>3.6.3</version>
     </dependency>

2. 连接单机版 redis

  简单测试

public class JedisDemo {
    public static void main(String[] args) {
        // 通过 ip 和端口连接 redis
        Jedis jedis = new Jedis("localhost",6379);
        // test 服务器是否连接成功
        System.out.println(jedis.ping());
        // 如果设置密码,则需要输入密码
        jedis.auth("123456");
        // 设置数据
        System.out.println(jedis.set("name","zhangsan"));
        // 获取数据
        System.out.println(jedis.get("name"));
        // 判断是否存在某个 key
        System.out.println(jedis.exists("name"));
        // 删除 key
        System.out.println(jedis.del("name"));
    }
}

  事务操作

public class JedisTransactionDemo {
    public static void main(String[] args) {
        // 通过 ip 和端口连接 redis
        Jedis jedis = new Jedis("localhost",6379);
        // watch 命令
        jedis.watch("name");
        // 开启事务
        Transaction multi = jedis.multi();
        multi.set("name","lisi");
        multi.set("age","23");
        // 撤销事务---撤销事务之后就删除了事务,在提交就会报错
        multi.discard();
        // 提交事务
        multi.exec();
    }
}

3. 操作List,Hash,Set,Zset等类型

public class JedisListDemo {

    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost",6379);
        // 操作 List 类型
        jedis.lpush("age","1","2","3","4","5","6","7","8","9");
        jedis.rpush("user","张三","李四","王五");
        System.out.println(jedis.lindex("age",2));

        // 操作 Hash 类型
        jedis.hset("person","person1","胡桃");
        // 通过map方式传入value
        HashMap<String, String> hashMap = new HashMap<>();
        hashMap.put("name","甘雨");
        hashMap.put("age","23");
        jedis.hset("genshin",hashMap);
        System.out.println(jedis.hget("genshin","name"));

        // 操作 Set 类型
        jedis.sadd("names","a","b","c","a");
        System.out.println(jedis.smembers("names"));

        // 操作有序集合 Zset 类型
        jedis.zadd("score",88,"张三");
        jedis.zadd("score",90,"李四");
        jedis.zadd("score",87,"王五");
        System.out.println(jedis.zrange("score",0,1));
    }
}

4. Jedis 连接池

       每次客户端请求都新建或者断开连接比较耗费资源,与 mysql 一样,Jedis 也可以创建一个连接池,维护多个与 redis 服务器的 tcp 请求,每次客户端请求链接都从连接池中获得,使用完毕之后又释放到连接池中

public class JedisPoolDemo {

    public static void main(String[] args) {
        // 配置连接池
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(10);  // 设置最大连接数
        config.setMaxIdle(5);  // 设置最大空闲连接数
        config.setBlockWhenExhausted(false);  // 连接耗尽时不阻塞
        
        // 创建连接池
        JedisPool jedisPool = new JedisPool(config,"localhost",6379);
        Jedis jedis = jedisPool.getResource();
        jedis.set("name","王五");
        System.out.println(jedis.get("name"));

        // 释放连接池
        jedisPool.close();
    }
}

5. 连接 redis 集群

public class JedisClusterDemo {
    public static void main(String[] args) {
        // 配置连接池
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(20);  // 设置最大连接数
        config.setMaxIdle(20);  // 设置最大空闲连接数
        config.setBlockWhenExhausted(false);  // 连接耗尽时不阻塞

        // 构建集群节点
        HashSet<HostAndPort> clusterNode = new HashSet<>();
        // 三个主节点
        clusterNode.add(new HostAndPort("localhost",6379));
        clusterNode.add(new HostAndPort("localhost",6380));
        clusterNode.add(new HostAndPort("localhost",6381));
        // 三个从节点
        clusterNode.add(new HostAndPort("localhost",26379));
        clusterNode.add(new HostAndPort("localhost",26380));
        clusterNode.add(new HostAndPort("localhost",26381));

        JedisCluster jedisCluster = new JedisCluster(clusterNode,config);

        jedisCluster.set("name","雷电将军");
        jedisCluster.hset("person","name","王五");
        jedisCluster.sadd("age","17","23","56");

        System.out.println(jedisCluster.hget("person","name"));

        // 关闭连接
        jedisCluster.close();
    }
}

6. Jedis 实现主从复制模式

public class JedisMasterSlaveDemo {
    public static void main(String[] args) throws InterruptedException {
        Jedis jedis_master = new Jedis("localhost",6379);
        Jedis jedis_slave = new Jedis("localhost",26379);

        // 配从不配主
        jedis_slave.slaveof("localhost",6379);
        // 主从复制模式: 默认主节点写,从节点读
        jedis_master.set("dog", "hhh");
        // 从节点更新需要时间
        Thread.sleep(3000);

        System.out.println(jedis_slave.get("dog"));
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/5002.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python3,一次掌握这些数据可视化图表技能,老板不给涨薪都不好意思。

一次性掌握数据可视化图表1、引言2、代码示例2.1 等高线密度图2.1.1 安装2.1.2 示例2.2 旭日图2.3 分簇散点图2.4 点图2.5 小提琴图2.6 词云3、总结1、引言 小屌丝&#xff1a;鱼哥&#xff0c; 老板让我把数据整理成视图。 小鱼&#xff1a;那你就整啊。 小屌丝&#xff1a;我…

【人工智能】—约束传播、弧约束、问题结果与问题分解、局部搜索CSP

【人工智能】—约束传播、弧约束、问题结果与问题分解、局部搜索CSP约束传播弧约束弧相容算法AC-3问题结构化简约束图-树结构CSP问题的局部搜索CSP的迭代算法举例&#xff1a;4-Queens加速&#xff1a;模拟退火法加速&#xff1a;最小最大优化(约束加权法)小结约束传播 前向检…

【Docker学习笔记】8.Docker Compose

Docker Compose Compose 简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose&#xff0c;您可以使用 YML 文件来配置应用程序需要的所有服务。然后&#xff0c;使用一个命令&#xff0c;就可以从 YML 文件配置中创建并启动所有服务。 如果你还不了解 …

2023蓝牙耳机性价比推荐:高品质蓝牙耳机盘点分享

无论我们是看视频还是在路上听音乐&#xff0c;真无线蓝牙耳机可以丰富我们的一天。然而&#xff0c;问题是有太多的选择&#xff0c;许多人不知道哪一款的性价比高音质好&#xff0c;下面小编特意整理了一期性价比高音质好的蓝牙耳机。 1.南卡小音舱lite2蓝牙耳机 南卡小音舱…

composer 使用细则

一、composer install 和 composer update 的区别 1.composer.json 文件 指定了项目依赖组件的版本规则及镜像地址 如果没有配置镜像地址&#xff0c;则默认使用全局安装的composer镜像地址 2.composer.lock 文件 保存着当前项目所依赖的php组件的镜像地址及具体的版本号&…

2022(一等奖)D277:1998-2019年中国植被动态变化及其影响因素分析

作品介绍 1 应用背景 近半个世纪以来&#xff0c;随着全球气候变化和人类活动的双重干扰&#xff0c;自然生态系统遭到了不同程度的影响。植被作为陆地生态系统的重要组成部分&#xff0c;在陆地生态系统的物质循环和能量流动中发挥着不可替代的作用&#xff0c;是自然生态系统…

Vue自创插件发布到npm以及使用方法

Vue自创插件发布到npm以及使用方法 目标&#xff1a;创建my-popup-selector下拉框组件&#xff0c;并发布到npm&#xff0c;效果如下图&#xff1a; 禁用时样式&#xff1a; ①创建vue项目&#xff1a; my-popup-selector ②项目目录结构截图如下&#xff1a; ③在项目根目录…

JVM垃圾回收算法

垃圾标记阶段 对象存活判断&#xff1a;在堆里存放着几乎所有的Java对象实例&#xff0c;在GC执行垃圾回收之前&#xff0c;首先需要区分出内存中哪些是存活对象&#xff0c;哪些是已经死亡的对象。只有被标记为己经死亡的对象&#xff0c;GC才会在执行垃圾回收时&#xff0c;…

Python+人工智能基础班(通俗易懂版教学)

文章目录一、环境及工具包的介绍二、Python基本语法三、matplotlib、numpy、pandas实操四、机器学习介绍五、机器学习线性回归线性回归实战准备单因子线性回归实战多因子线性回归实战六、机器学习逻辑回归使用线性回归解决分类任务使用逻辑回归解决分类任务逻辑回归实战&#x…

在小公司工作3年,从事软件测试5年了,才发现自己还是处于“初级“水平,是不是该放弃....

毕业前三年&#xff0c;从早到晚&#xff0c;加班到深夜&#xff0c;一年又一年&#xff0c;直至刚入职场的首个黄金三年过年都去了&#xff0c;而职位却仍在原地踏步。尽管感觉自己努力过&#xff0c;但是实际上&#xff0c;自身的能力从没得到过多少提升。 所以在无数个夜晚…

生成对抗网络 | Python实现StackGAN生成对抗神经网络

生成对抗网络 | Python实现StackGAN生成对抗神经网络 目录 生成对抗网络 | Python实现StackGAN生成对抗神经网络效果一览文章概述环境准备程序设计参考资料效果一览 文章概述 生成对抗网络 | Python实现StackGAN生成对抗神经网络 环境准备 python 2.7 TensorFlow 0.12 prettyte…

Java 多线程

多线程实现方式Thread类MyThread类继承了Thread类MyThread thread new MyThread1("窗口1");thread.start();Runnable接口自定义一个MyRunnable类来实现Runnable接口&#xff0c;在MyRunnable类中重写run&#xff08;&#xff09;方法&#xff0c;创建Thread对象&…

I.MX6ULL_Linux_驱动篇(32) 设备树GPIO驱动

在前面章节中&#xff0c;我们直接在驱动文件 newchrled.c 中定义有关寄存器物理地址&#xff0c;然后使用 io_remap 函数进行内存映射&#xff0c;得到对应的虚拟地址&#xff0c;最后操作寄存 器对应的虚拟地址完成对 GPIO 的初始化。本章我们使用设备树来向 Linux 内核传递相…

劝退还是坚守?计算机视觉行业综述

劝退还是坚守&#xff1f;计算机视觉行业综述 1 从炙手可热到充满争议 计算机视觉&#xff08;Computer Vision&#xff0c;简写为CV&#xff09;是一门研究如何让计算机从图像或图像序列中获取信息并 理解其信息的学科&#xff0c;其主要目的在于从图像或图像序列中提取对世…

基于51单片机AT89C51的小型音乐喷泉控制系统设计

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;单片机小喷泉 获取完整无水印论文报告&#xff08;内含电路原理图和程序&#xff09; 根据目前音乐喷泉的发展现状&#xff0c;介绍了一个以AT89C51单片机为核心的小型音乐喷泉控制系统。给出了一个简洁的单片机控制电路&a…

Java_Spring:9. 基于 XML 的 AOP 配置

目录 1 环境搭建 1.1 第一步&#xff1a;准备必要的代码 1.2 第二步&#xff1a;拷贝必备的 jar 包到工程的 lib 目录 1.3 第三步&#xff1a;创建 spring 的配置文件并导入约束 1.4 第四步&#xff1a;配置 spring 的 ioc 1.5 第五步&#xff1a;抽取公共代码制作成通知 …

数据结构与算法笔记--数据结构与算法基本知识

目录 1--数据结构 2--算法 3--算法分析 4--实例1&#xff1a;普通算法与秦九韶算法的运算效率比较 5--实例2&#xff1a;最大子列和问题 5-1--暴力求解法 5-2--分而治之 5-3--动态规划 5-4--完整代码 1--数据结构 定义&#xff1a;所有数据元素以及数据元素之间的关系…

JS手写Promise(详细过程)

PS&#xff1a;JS手写Promise方法的整理在下一篇文章 手写Promise的API(resolve,reject,then,catch,finally,all)_Eric加油学&#xff01;的博客-CSDN博客 1、基础版Promise 首先&#xff0c;通过一个简单的Promise例子回顾其使用 const promise new Promise((resolve, rej…

为什么诚信是项目管理的关键部分?

由于有许多需要指导的活动部件和风险&#xff0c;管理一个新项目可能是一项具有挑战性的工作。在一些对质量有着严格要求的行业&#xff0c;项目结构、设定目标、跟踪状态、风险管理和资源管理等项目管理原则尤为重要&#xff0c;而领导这项工作的是诚信。那么&#xff0c;究竟…

IP 归属用 Ip2region 就够了

文章目录Ip2region 简介是什么特性支持的编程语言案例实操依赖获取IP输入流转化解析IP测试抖音、微博、小红书等各平台相继上线" 网络用户IP地址显示功能"&#xff0c; 境外显示 国家&#xff0c; 境内显示到 省市&#xff0c;且该功能无法关闭&#xff0c;IP地址为强…
最新文章