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 ...
随机推荐
- Failure [DELETE_FAILED_INTERNAL_ERROR]之后rm apk卸载
版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/heng615975867/arti ...
- 前端文章索引:HTML+CSS+JS
1 HTML 1.1 HTML5 HTML5 – 1.基础 HTML5 – 2.新元素 HTML5 – 3.加强版ol HTML5 – 4.canvas 2 CSS 2.1 CSS3 CSS3–1.c ...
- JS的base64编码解码
Unicode问题解法 有个小坑是它只支持ASCII. 如果你调用btoa("中文")会报错: Uncaught DOMException: Failed to execute ' ...
- flask 运行 flask db init 报错,init-db 命令找不到
flask init-db 结果是 `Error: No such command “init-db”. 那是因为init-db 已经被 flask db init 给代替了 运行 flask db ...
- JDK8:Lambda根据 单个字段、多个字段,分组求和
使用lambda表达式分别 根据 单个字段.多个字段,分组求和 示意图: 1.根据 单个字段,分组求和:根据2019这个字段,计算一个list集合里,同属于2019的某个字段累加和 2.根据 多个字段 ...
- Hadoop源码解读系列目录
Hadoop源码解读系列 1.hadoop源码|common模块-configuration详解2.hadoop源码|core模块-序列化与压缩详解3.hadoop源码|core模块-远程调用与NIO ...
- EF Code First 快速创建
以.net framework为例,包括数据库管理类库和启动项目两个项目文件 数据库管理类库 新建一个类库,名称为XXX.Database 管理nuget包,引入库EntityFramework 6. ...
- Android存储及getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()区别:
存储介绍: Android系统分为内部存储和外部存储,内部存储是手机系统自带的存储,一般空间都比较小,外部存储一般是SD卡的存储,空间一般都比较大,但不一定可用或者剩余空间可能不足.一般我们存储内容都 ...
- spark笔记 环境配置
spark笔记 spark简介 saprk 有六个核心组件: SparkCore.SparkSQL.SparkStreaming.StructedStreaming.MLlib,Graphx Spar ...
- eclipse不提示
1.菜单window->Preferences->Java->Editor->Content Assist->Enable auto activation 选项要打上勾 ...