11.redis的客户端-Jedis

embedded/2024/9/22 15:48:10/

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/embedded/90730.html

相关文章

【科研选题第2期】UTD24与一些约稿期刊

一、商学院顶级期刊目录&#xff1a;UTD24与FT501、UTD24期刊与FT50期刊目录2、检索 二、期刊约稿选题1、《欧洲运筹学杂志》&#xff08;European Journal of Operational Research&#xff0c; EJOR&#xff09;&#xff08;1&#xff09;能源转型的复杂性 2、Journal of Env…

Linux驱动开发—中断,中断号,中断控制器GIC,中断子系统架构详解

文章目录 1.中断的基本概念2.中断上下文中断上下文的主要特点中断上下文的限制顶半部和底半部 3.中断子系统架构中断控制器GICGIC 的层级结构 中断控制器级联基本概念级联中断控制器的工作原理 中断号概念基本概念中断号的作用中断号的分配ARM 架构和 GIC 总体架构图 4.申请一个…

使用爬虫爬取微博评论

具体步骤如下&#x1f447;&#x1f447;&#x1f447;&#xff1a; Step1&#xff1a;电脑访问手机端微博_https://m.weibo.cn/_ Step2&#xff1a;打开一条微博_https://m.weibo.cn/detail/4907031376694279_ Step3&#xff1a;URL地址中的_49070__31376694279_就是需要爬…

网络面经

1.TCP头格式有哪些&#xff1f; 图解TCP头部格式 详情 源端口和目的端口 端口的作用是什么&#xff1f; 端口的作用是在网络中唯一表示一台主机中的一个进程 序列号 什么是序列号&#xff1f; 用来给传输的字节标号的 比如要传10个字节 那么给第一个字节标号为1001 那么第十…

大数据应用【大数据导论】

各位大佬好 &#xff0c;这里是阿川的博客&#xff0c;祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 目录 大数据在许多领域应用互联网领域应用生物医学…

鸿蒙媒体开发【相机数据采集保存】音频和视频

相机数据采集保存 介绍 本示例主要展示了相机的相关功能&#xff0c;使用libohcamera.so 接口实现相机的预览、拍照、录像、前后置摄像头切换进行拍照、录像&#xff0c;以及对焦、曝光等控制类功能。 效果预览 使用说明 弹出是否允许“CameraSample”使用相机&#xff1f;…

玄机-第二章-日志分析-apache日志分析

1.题目 2. 启动靶机并用连接工具连接靶机 2.1 提交当天访问次数最多的IP&#xff0c;即黑客IP&#xff1a;(flag{ip}) 注&#xff1a;Apache的日志文件通常存储在/var/log/apache2/或/var/log/httpd/目录下 切换并查看Apache日志文件得到flag flag{192.168.200.2} 2.2 黑…

【vue-cli】vue-cli@2源码学习

vue-cli 2 源码 @vue/cli: 3.11.0创建项目 vue create 项目名称 @vue/cli: 2.x.x 创建项目 vue init webpack yhh-project 脚手架初始化项目流程: 下载vue/cli@2 源码 下载完成后初始化 npm i 创建项目 vue init webpack yhh-project vue-init: bin/vue-init #!/usr/bin/e…