Java 之 Jedis
一、客户端 Jedis
1、Jedis
Jedis 是一款java操作 redis 数据库的工具。
2、使用步骤
(1)下载 Jedis 的 jar 包
(2)使用:
//1. 获取连接
Jedis jedis = new Jedis("localhost",6379); // 可以使用空参构造,默认值"localhost",6379端口 //2. 操作
jedis.set("username","zhangsan"); //3. 关闭连接
jedis.close();
二、Jedis 操作各种 redis 中的数据结构
1、操作字符串类型 String
使用的方法同 redis 里面的方法。
Demo:
//1. 获取连接
Jedis jedis = new Jedis(); //2. 操作
//存储
jedis.set("username","zhangsan");
//获取
String username = jedis.get("username");
System.out.println(username); //可以使用setex()方法存储可以指定过期时间的 key value
jedis.setex("activecode",20,"asdf");//将activecode:asdf键值对存入redis,并且20秒后自动删除该键值对 //3. 关闭连接
jedis.close();
2、操作哈希类型 hash:map格式
使用的方法:hset、hget、hgetall
Demo:
//1. 获取连接
Jedis jedis = new Jedis(); //2. 操作
// 存储hash
jedis.hset("user","name","lisi");
jedis.hset("user","age","23");
jedis.hset("user","sex","man"); // 获取hash
String name = jedis.hget("user", "name");
System.out.println(name); // 获取hash的所有map中的数据
Map<String, String> user = jedis.hgetAll("user"); // keyset
Set<String> keySet = user.keySet();
for (String key : keySet) {
//获取value
String value = user.get(key);
System.out.println(key + ":" + value);
} //3. 关闭连接
jedis.close();
3、操作列表类型 list:linkedlist 格式。支持重复元素。
常用方法:lpush、lpush、lpop、rpop、lrange start end。
Demo:
//1. 获取连接
Jedis jedis = new Jedis(); //2. 操作
// list 存储
jedis.lpush("mylist","a","b","c");//从左边存
jedis.rpush("mylist","a","b","c");//从右边存 // list 范围获取
List<String> mylist = jedis.lrange("mylist", 0, -1);
System.out.println(mylist); // list 弹出
String element1 = jedis.lpop("mylist");//c
System.out.println(element1); String element2 = jedis.rpop("mylist");//c
System.out.println(element2); // list 范围获取
List<String> mylist2 = jedis.lrange("mylist", 0, -1);
System.out.println(mylist2); //3. 关闭连接
jedis.close();
4、操作集合类型 set:不允许重复元素
常用方法:sadd、smembers。
Demo:
//1. 获取连接
Jedis jedis = new Jedis(); //2. 操作
// set 存储
jedis.sadd("myset","java","php","c++"); // set 获取
Set<String> myset = jedis.smembers("myset");
System.out.println(myset); //3. 关闭连接
jedis.close();
5、操作有序集合类型 sortedset:不允许重复元素,且元素有序。
常用方法:zadd、zrange。
Demo:
//1. 获取连接
Jedis jedis = new Jedis();
//2. 操作
// sortedset 存储
jedis.zadd("mysortedset",3,"亚瑟");
jedis.zadd("mysortedset",30,"后裔");
jedis.zadd("mysortedset",55,"孙悟空"); // sortedset 获取
Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1); System.out.println(mysortedset); //3. 关闭连接
jedis.close();
三、Jedis 连接池:JedisPool
1、使用步骤
(1)创建一个配置对象
(2)创建一个 JedisPool 连接池对象
(3)调用方法 getResource() 方法获取 Jedis 连接
(4)使用连接
(5)关闭连接,把连接归还到连接池中
2、代码实现
代码实现:
//1.创建一个配置对象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50); // 设置最大连接数
config.setMaxIdle(10); // 设置最大空闲数 //2.创建Jedis连接池对象
JedisPool jedisPool = new JedisPool(config,"localhost",6379); //3.获取连接
Jedis jedis = jedisPool.getResource();
//4. 使用
jedis.set("hehe","heihei"); //5. 关闭 归还到连接池中
jedis.close();;
四、连接池工具类
在上面的代码中,将一些配置信息放入了代码中,但是这样并不有利于配置信息的修改,可以将配置信息单独放入一个文件中,然后读取该文件的内容即可。
jedis 详细配置说明:
#最大活动对象数
redis.pool.maxTotal=1000
#最大能够保持idel状态的对象数
redis.pool.maxIdle=100
#最小能够保持idel状态的对象数
redis.pool.minIdle=50
#当池内没有返回对象时,最大等待时间
redis.pool.maxWaitMillis=10000
#当调用borrow Object方法时,是否进行有效性检查
redis.pool.testOnBorrow=true
#当调用return Object方法时,是否进行有效性检查
redis.pool.testOnReturn=true
#“空闲链接”检测线程,检测的周期,毫秒数。如果为负值,表示不运行“检测线程”。默认为-1.
redis.pool.timeBetweenEvictionRunsMillis=30000
#向调用者输出“链接”对象时,是否检测它的空闲超时;
redis.pool.testWhileIdle=true
# 对于“空闲链接”检测线程而言,每次检测的链接资源的个数。默认为3.
redis.pool.numTestsPerEvictionRun=50
#redis服务器的IP
redis.ip=xxxxxx
#redis服务器的Port
redis1.port=6379
jedis.properties 文件
host=127.0.0.1
port=6379
maxTotal=50
maxIdle=10
jedis 连接池工具类
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig; import java.io.IOException;
import java.io.InputStream;
import java.util.Properties; /**
JedisPool工具类
加载配置文件,配置连接池的参数
提供获取连接的方法 */
public class JedisPoolUtils { private static JedisPool jedisPool; static{
//读取配置文件
InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
//创建Properties对象
Properties pro = new Properties();
//关联文件
try {
pro.load(is);
} catch (IOException e) {
e.printStackTrace();
}
//获取数据,设置到JedisPoolConfig中
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle"))); //初始化JedisPool
jedisPool = new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("port"))); } /**
* 获取连接方法
*/
public static Jedis getJedis(){
return jedisPool.getResource();
}
}
Java 之 Jedis的更多相关文章
- Redis java client ==> Jedis
https://github.com/xetorthio/jedis Jedis is a blazingly small and sane Redis java client. Jedis was ...
- 【转载】Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍
转载地址:http://blog.csdn.net/truong/article/details/46711045 关键字:Redis的Java客户端Jedis的八种调用方式(事务.管道.分布式…)介 ...
- Redis(九):Redis的Java客户端Jedis
Redis的Java客户端Jedis导航目录: 安装JDK 安装Eclipse Jedis所需要的Jar包 Jedis常用操作 JedisPool 安装JDK tar -zxvf jdk-7u67-l ...
- 9.Redis的Java客户端Jedis
Redis的Java客户端Jedis Jedis所需jar包 commons-pool-1.6.jar jedis-2.1.0.jar 1.Jedis常用操作(jedis中的api 和 我们在 l ...
- Redis入门和Java利用jedis操作redis
Redis入门和Java利用jedis操作redis Redis介绍 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - val ...
- Java通过jedis操作redis缓存
package com.wodexiangce.util; import java.util.Set; import redis.clients.jedis.Jedis; /** * redis工具类 ...
- Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式)介绍
jedis是一个著名的key-value存储系统,而作为其官方推荐的java版客户端jedis也非常强大和稳定,支持事务.管道及有jedis自身实现的分布式. 在这里对jedis关于事务.管道和分布式 ...
- Java客户端Jedis的八种调用方式
redis是一个著名的key-value存储系统,而作为其官方推荐的java版客户端jedis也非常强大和稳定,支持事务.管道及有jedis自身实现的分布式. 在这里对jedis关于事务.管道和分 ...
- 使用Redis的Java客户端Jedis
转载自:http://aofengblog.blog.163.com/blog/static/631702120147298317919/ 前一篇文章<Redis命令指南>讲解了通过命令行 ...
- [转载] 使用Redis的Java客户端Jedis
转载自http://aofengblog.blog.163.com/blog/static/631702120147298317919/ 在实际的项目开发中,各种语言是使用Redis的客户端库来与Re ...
随机推荐
- mac opencv 提示摄像头权限问题
通常在iOS开发下,我们的app需要在Info.plist文件中配置所需要的各种限制:如摄像头权限: 本次我们在mac下创建了一个command line 程序,并且设定是c++开发,并配置了open ...
- ThinkPHP中文字段问题
转自: https://www.baidu.com/link?url=Ohc9epgQgkNYLwnHqP-jZ9RfIQWW50-iz8-ZMIPLdtCIJHnUpYwQnDLmXzi7Fa110 ...
- Android Camera2/HAL3
Android : Camera2/HAL3 框架分析 https://www.cnblogs.com/blogs-of-lxl/p/10651611.html Android : Camera之ca ...
- 【WPF】修改ListBox的Item的样式
<ListBox> <!-- 数据 --> <ListBoxItem>AAAA</ListBoxItem> <ListBoxItem>BB& ...
- Eureka Server 集群配置
注册中心: debug: true spring: application: name: eureka-server logging: level: com.netflix.eureka: 'off' ...
- shell基础知识5-函数
函数的定义 function fname(){ } 或者 function_name(){ } 对于简单的函数,甚至可以是这样做 fname() { statement; } 函数调用 直接写函数名即 ...
- Linux的.a、.so和.o文件 对比 window下的dll,lib,exe文件
连续几天终于将一个又一个问题解决了,这里说其中一个问题 描述问题:使用多线程pthread的时候,(我用的IDE,CODEBOLCKS)编译后发现直接弹出窗口,程序还没有被Build..巴拉巴拉,然后 ...
- Java 待学习知识
Java 工厂模式和策略模式 Java 面向对象与面向接口的设计模式 Java 六大设计原则 - 单一职责原则 设计模式之禅 大话设计模式
- .net core 2.2 EF oracle db first
Nuget控制台: Install-Package log4net Install-Package Newtonsoft.Json Install-Package Autofac Install-Pa ...
- The last packet successfully received from the server was 1,480 milliseconds ago.
场景:一个上传接口,需要上传几十M的文件,文件中包含10几W的数据,然后对10+W的数据进行同步批量插入,每次批量插入1W.最后返回结果. 项目上线一段时间后,上传接口出现问题,数据库用的MySQL5 ...