Java Redis系列3(Jedis的使用+jedis连接池技术)
Jedis的使用
什么是Jedis?
一款Java操作redis数据库的工具
使用步骤
1.下载redis所需的java包
2.使用步骤
import org.junit.Test;
public class Jedis {
@Test
public void test1(){
//获取连接
//如果使用空参构造,默认值 "localhost",6379端口
redis.clients.jedis.Jedis jedis = new redis.clients.jedis.Jedis();
//设置数据
jedis.set("name","zhangsna");
//关闭连接
jedis.close();
}
}
Jedis操作不同的redis中的数据结构
1.字符串
设置:set
获取:get
import org.junit.Test;
public class Jedis {
@Test
public void test1(){
//获取连接
redis.clients.jedis.Jedis jedis = new redis.clients.jedis.Jedis();
//设置数据
jedis.set("name","zhangsna");
//获取参数
String name = jedis.get("name");;
//关闭连接
jedis.close();
}
}
2.hash类型:map格式
import org.junit.Test;
import java.util.Map;
public class Jedis {
@Test
public void test1(){
//获取连接
//如果使用空参构造默认是localhost,3670端口
redis.clients.jedis.Jedis jedis = new redis.clients.jedis.Jedis();
//设置数据
jedis.hset("user","name","zhangsan");
jedis.hset("user","id","13");
//获取数据
jedis.hget("user","name");
//获取全部数据
Map<String, String> user = jedis.hgetAll("user");
//关闭连接
jedis.close();
}
}
3.列表类型list
import org.junit.Test;
public class Jedis {
@Test
public void test1(){
//获取连接
//如果使用空参构造默认是localhost,3670端口
redis.clients.jedis.Jedis jedis = new redis.clients.jedis.Jedis();
//设置数据
//左边添加数据
jedis.lpush("list","a");
//右边添加数据
jedis.rpush("list","b");
//获取指定范围内的数据
jedis.lrange("list" ,0,-1);
//移除最右边的数据并返回值
String list = jedis.rpop("list");
//移除最左边的数据并返回值
String list1 = jedis.lpop("list");
//关闭连接
jedis.close();
}
}
4.集合类型:set 不允许重复元素
import org.junit.Test;
import java.util.Set;
public class Jedis {
@Test
public void test1(){
//获取连接
//如果使用空参构造默认是localhost,3670端口
redis.clients.jedis.Jedis jedis = new redis.clients.jedis.Jedis();
//设置数据
jedis.sadd("set","a");
jedis.sadd("set","b");
//获取集合中的全部数据
Set<String> set = jedis.smembers("set");
//移除集合中的指定数据
jedis.srem("a");
//关闭连接
jedis.close();
}
}
5.有序集合类型:sortedset 不允许重复元素,且集合有序
import org.junit.Test;
import java.util.Set;
public class Jedis {
@Test
public void test1(){
//获取连接
//如果使用空参构造默认是localhost,3670端口
redis.clients.jedis.Jedis jedis = new redis.clients.jedis.Jedis();
//设置数据
jedis.zadd("sortedset",2,"a");
jedis.zadd("sortedset",1,"b");
//获取集合中的全部数据
jedis.zrange("sortedset",0,-1);
//移除集合中的指定数据
jedis.zrem("sortedset", "a");
//关闭连接
jedis.close();
}
}
Jedis连接池技术
import org.junit.Test;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class Jedis {
@Test
public void test1(){
//创建一个配置对象
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
//设置参数
//最大空闲数
jedisPoolConfig.setMaxIdle(50);
//最大连接数
jedisPoolConfig.setMaxTotal(50);
//创建数据库连接池对象
JedisPool pool= new JedisPool(jedisPoolConfig, "localhost", 6379);
//获取连接
redis.clients.jedis.Jedis resource = pool.getResource();
//使用
resource.set("username","zhangsan");
//归还连接到数据库连接池
resource.close();
}
}
使用工具类创建数据库连接池
配置文件信息(放在src目录下)
host:127.0.0.1
port:6379
maxTotal:50
maxIdle:10
工具类代码
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class JedisUtil {
private static JedisPool jedisPool;
//使用静态代码块加载配置文件
static {
//读取配置文件
InputStream resourceAsStream = JedisUtil.class.getClassLoader().getResourceAsStream("jedis.properties");
//创建properties对象
Properties properties = new Properties();
//关联文件
try {
properties.load(resourceAsStream);
} catch (IOException e) {
e.printStackTrace();
}
//创建配置文件对象
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(Integer.parseInt(properties.getProperty("maxTotal")));
jedisPoolConfig.setMaxIdle(Integer.parseInt("maxIdle"));
//初始化jedispool
jedisPool=new JedisPool(jedisPoolConfig,properties.getProperty("host"),Integer.parseInt(properties.getProperty("port")));
}
//获取连接
public static JedisPool getJedisPool(){
return jedisPool;
}
}
测试类代码
import org.junit.Test;
import redis.clients.jedis.JedisPool;
public class Jedis {
@Test
public void test1(){
//使用工具类获取连接池
JedisPool jedisPool = JedisUtil.getJedisPool();
//获取连接
redis.clients.jedis.Jedis resource = jedisPool.getResource();
//使用连接操作
resource.set("name", "zhangsan");
//归还连接
}
}
以上就是jedis的一些基础操作及怎么使用jedis连接池,这也是我JAVA redis系列的第三篇,后面我会继续更新,写作不易,请各位老铁点个赞支持一下,觉得有帮助的也可以收藏呀,我会经常更新文章,也可以关注我呀
Java Redis系列3(Jedis的使用+jedis连接池技术)的更多相关文章
- Java Redis系列1 关系型数据库与非关系型数据库的优缺点及概念
Java Redis系列1 关系型数据库与非关系型数据库的优缺点及概念 在学习redis之前我们先来学习两个概念,即什么是关系型数据库什么是非关系型数据库,二者的区别是什么,二者的关系又是什么? ** ...
- Java Redis系列2 (redis的安装与使用+redis持久化的实现))
Java Redis系列2 (redis的安装与使用+redis持久化的实现) 什么是Redis? Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50 ...
- 解密httpclient,dbcp,jedis,c3p0,druid,okhttp都在使用的连接池技术
最近在连接池上面栽了个跟头(参见这里),引起我对池技术的强烈关注,这几天总结了一下很多场景都会使用的池技术: 池概念 pool,中文翻译为水池,但是在英文中,还有一种解释是 an organizati ...
- Java基础学习笔记二十七 DBUtils和连接池
DBUtils 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC开发,本案例我们讲采用apache commons组件一个成员:DBUtils.DBUtils就是JDBC的简化开发 ...
- 2017.10.21 Java中的数据源与连接池技术
1.数据源技术就是预先建立好一定的数量的数据库连接,并将这些连接保存在连接池中,有连接池负责对这些数据库连接管理,当访问数据库时,只需要从连接池中取出有空闲状态的数据库连接:当程序访问数据库结束时,释 ...
- jedis哨兵模式的redis组(集群),连接池实现。(客户端分片)
java 连接redis 我们都使用的 是jedis ,对于redis这种频繁请求的场景我们一般需要对其池化避免重复创建,即创建一个连接池 ,打开jedis的 jar包我们发现,jedis对池已经有 ...
- Jedis编程设计:连接池
Jedis作为redis的最佳客户端,它提供了连接池的特性,"连接池"在通常情况下可以有效的提高应用的通信能力,并且这是一种良好的设计模式.Jedis的连接池设计基于apa ...
- Java 并发专题 : Semaphore 实现 互斥 与 连接池
继续并发方面的知识.今天介绍Semaphore,同样在java.util.concurrent包下. 本来准备通过例子,从自己实现到最后使用并发工具实现,但是貌似效果并不是很好,有点太啰嗦的感觉,所有 ...
- 深入剖析Java中的装箱和拆箱(缓存池技术)
以下是本文的目录大纲: 一.什么是装箱?什么是拆箱? 简单一点说,装箱就是 自动将基本数据类型转换为包装器类型:拆箱就是 自动将包装器类型转换为基本数据类型. 二.装箱和拆箱是如何实现的 1:反编 ...
随机推荐
- 原来不只是fastjson,这个你每天都在用的类库也被爆过反序列化漏洞!
GitHub 15.8k Star 的Java工程师成神之路,不来了解一下吗! GitHub 15.8k Star 的Java工程师成神之路,真的不来了解一下吗! GitHub 15.8k Star ...
- 如何用 Python 做自动化测试【进阶必看】
一.Selenium 环境部署 1. window 环境部署 1.1 当前环境Win10 64 位系统:Python3.6.2(官方已经更新到了 3.6.4) 官方下载地址:https://www.p ...
- Ubuntu14.04 安装VMware tools
Ubuntu14.04 安装VMware tools 方法一: 1. 在VMware 11(个人的测试环境为vm 11版本)下安装Ubuntu镜像:ubuntu-14.04.1-desktop-amd ...
- 普通list和树状list互转
import java.util.ArrayList; import java.util.List; public class TreeNode { private String id; privat ...
- CSS:有点难的面试题①
1 举例说明匿名块框和匿名行内框2 什么是标准文档流?3 inline-block遵循怎样的渲染规则?4 什么是BFC?如何触发BFC?5 什么是Line box?(最好画图说明) 6 <met ...
- HDU-2473 Junk-Mail Filter(并查集的使用)
原题链接:https://vjudge.net/problem/11782/origin Description: Recognizing junk mails is a tough task. Th ...
- Flutter 实现酷炫的3D效果
老孟导读:此文讲解3个酷炫的3D动画效果. 下面是要实现的效果: Flutter 中3D效果是通过 Transform 组件实现的,没有变换效果的实现: class TransformDemo ext ...
- 线程_进程间通信Queue合集
# Queue的工作原理 from multiprocessing import Queue q = Queue(3)#初始化一个Queue对象,最多可接收3条put消息 q.put("In ...
- 环境篇:数据同步工具DataX
环境篇:数据同步工具DataX 1 概述 https://github.com/alibaba/DataX DataX是什么? DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 ...
- Dynamics 2016 启用Bing Maps
http://www.krpano360.com/图文详解申请必应地图api密钥 https://crmbook.powerobjects.com/system-administration/inte ...