11.redis的客户端-Jedis

devtools/2024/11/15 4:45:39/

1.Jedis

redis命令作为方法名称,学习成本低,简单使用。但是jedis实例是不安全的,多线程环境下需要基于连接池来使用。

2.Lettuce

lettuce是基于Netty实现的,支持同步,异步和响应式编程方式,并且是线程安全的。支持redis的哨兵模式、集群模式和管道模式。

3.Redisson

redisson是一个基于redis实现分布式、可伸缩的java数据结构集合,包含了诸如Map,Queue,Lock,Semphore,AtomicLong等强大功能。

Spring Data Redis 可以兼容 Jedis和Lettuce两个客户端。

Jedis官方网站:https://github.com/redis/jedis

1.引入依赖

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</version>
</dependency>

单元测试依赖

<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.7.0</version><scope>test</scope>
</dependency>

2.建立连接

3.操作redis

4.释放资源

java">package com.xkj.org;import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import redis.clients.jedis.Jedis;public class JedisTest {private Jedis jedis;@BeforeEachvoid setUp() {//建立连接jedis = new Jedis("192.168.171.130", 6379);//设置密码jedis.auth("123456");//选择库jedis.select(0);}@Testvoid testString() {String result = jedis.set("name", "虎子");System.out.println("result="+result);String name = jedis.get("name");System.out.println("name="+name);}@AfterEachvoid tearDown() {if(jedis!= null) {jedis.close();}}}

Hash类型的操作

java">@Testvoid testHash() {//插入hash数据Long res = jedis.hset("person", "name", "张三");jedis.hset("person", "age", "22");System.out.println("res="+res);//取出hash数据String name = jedis.hget("person", "name");System.out.println("name="+name);//全部取出hash数据Map<String, String> person = jedis.hgetAll("person");System.out.println("person="+person);}

jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此推荐使用jedis连接池代替jedis直连方式。

Jedis连接池

java">package com.xkj.org.utils;import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;public class JedisConnectionFactory {public static final JedisPool jedisPool;static {//配置连接池JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();jedisPoolConfig.setMaxTotal(8);jedisPoolConfig.setMaxIdle(8);jedisPoolConfig.setMaxWaitMillis(1000);//创建连接池对象jedisPool = new JedisPool(jedisPoolConfig, "192.168.171.130", 6379, 1000, "123456");}public static Jedis getJedis() {return jedisPool.getResource();}}
java">package com.xkj.org;import com.xkj.org.utils.JedisConnectionFactory;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisFactory;import java.util.Map;public class JedisTest {private Jedis jedis;@BeforeEachvoid setUp() {//建立连接
//        jedis = new Jedis("192.168.171.130", 6379);jedis = JedisConnectionFactory.getJedis();//设置密码jedis.auth("123456");//选择库jedis.select(0);}@Testvoid testString() {String result = jedis.set("name", "虎子");System.out.println("result="+result);String name = jedis.get("name");System.out.println("name="+name);}@Testvoid testHash() {//插入hash数据Long res = jedis.hset("person", "name", "张三");jedis.hset("person", "age", "22");System.out.println("res="+res);//取出hash数据String name = jedis.hget("person", "name");System.out.println("name="+name);//全部取出hash数据Map<String, String> person = jedis.hgetAll("person");System.out.println("person="+person);}@AfterEachvoid tearDown() {if(jedis!= null) {//如果是连接池,会将连接还回池子jedis.close();}}}

http://www.ppmy.cn/devtools/88993.html

相关文章

Flink 开发语言选择 —— Java vs Scala

引言 Apache Flink 是一个用于处理无界和有界数据流的开源分布式计算框架。随着 Flink 的日益流行&#xff0c;越来越多的开发者开始考虑使用哪种编程语言来进行 Flink 应用程序的开发。本文将探讨在 Flink 中使用 Java 和 Scala 的优缺点&#xff0c;并帮助你做出更明智的选择…

如何在Ubuntu 14.04上安装、配置和部署Rocket.Chat

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 Rocket.Chat 是一个使用 Meteor 构建的开源消息应用程序。它支持视频会议、文件共享、语音消息&#xff0c;具有完整的 API 等功能…

全球实况天气预报接口,含空气六因子,支持多语言,返回json格式 (国外天气)

该接口支持全球20万城市&#xff0c;地图上有的几乎都可以返回天气数据&#xff0c;支持20余种语言。 包含基本天气信息、湿度、能见度、气压、降雨概率、日出日落、月初月落、空气质量指数、主要污染物等&#xff0c;可按地名、IP、经纬度坐标查询。 接口文档 请先注册账号获…

【autodl】stable-diffusion-3-medium快速部署

sd3m是一个文生图模型&#xff0c;支持英文提示词&#xff0c; 支持自然语言 stable diffusion 3 medium 是一个开源模型&#xff0c;本教程是在autodl上部署modelscope上的sd3模型。下面是运行的webui页面图 配置 充值autodl &#xff0c;并且创建一个服务器&#xff1a;我的…

从根儿上学习spring 九 之run方法启动第四段(3)

图5 接着上一篇的从根儿上学习spring 四(2)--- run方法启动第四段&#xff0c;我们继续分析AbstractBeanFactory#doGetBean方法。 图5-263行 isPrototypeCurrentlyInCreation(beanName)是判断字符串beanName是否存在于线程变量prototypesCurrentlyInCreation中&#xff0c;如…

js强制刷新

在JavaScript中触发强制刷新通常指的是强制浏览器重新加载页面&#xff0c;忽略缓存。以下是几种实现强制刷新的方法&#xff1a; ### 使用 location.reload() 这是最简单的方法&#xff0c;它会重新加载当前页面。 javascript location.reload(true); // 传入true参数表示强制…

第128天:内网安全-横向移动IPCATSC 命令Impacket 套件CS 插件全自动

环境部署 案例一&#xff1a; 域横向移动-IPC-命令版-at&schtasks 首先是通过外网web访问到win2008&#xff0c;获得了win2008的权限&#xff0c;这一步不做演示 因为里面的主机都不出网&#xff0c;所以只能利用win2008进行正向或者反向连接 信息收集 域内用户信息&…

体系结构论文导读(三十一)(上):Soft errors in DNN accelerators: A comprehensive review

Soft errors in DNN accelerators: A comprehensive review DNN 加速器中的软错误&#xff1a;全面回顾 一、文章核心 深度学习任务覆盖了广泛应用。DNN算法被实现于不同系统上&#xff0c;从小型嵌入式设备到数据中心。DNN加速器&#xff08;例如GPU、FPGA、ASIC&#xff0…