Jedis操作Redis实例
简介
Jedis Client是Redis官网推荐的一个面向java客户端,库文件实现了对各类API进行封装调用。 Jedis源码工程地址:https://github.com/xetorthio/jedis 使用
Redis Client最好选用与服务端对应的版本,本例中使用Redis 3.2.9客户端使用jedis -2.9.0,Maven工程添加如下引用即可。<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>注意事项
Redis Client拥有众多对接版本,本项目目前使用Jedis为官方推荐Java对接客户端,是基于其对Redis良好的版本支持和API对接,另外编码中尽量避免使用废弃接口。
Redis目前正在新版过渡期,3.0版本暂未稳定,但是由于3.0版本提供了最新的集群功能,可能在日后稳定版发布以后升级到3.0,目前使用的Jedis支持3.0的目前版本API。
Jedis基本使用
普通使用
Jedis jedis = new Jedis("localhost");
jedis.set("foo", "bar");
String value = jedis.get("foo");Jedis池
JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");
/// Jedis implements Closeable. Hence, the jedis instance will be auto-closed after the last statement.try (Jedis jedis = pool.getResource()) { /// ... do stuff here ... for example
jedis.set("foo", "bar");
String foobar = jedis.get("foo");
jedis.zadd("sose", 0, "car");
jedis.zadd("sose", 0, "bike");
Set<String> sose = jedis.zrange("sose", 0, -1);
}/// ... when closing your application:pool.close();JedisPoolConfig config = new JedisPoolConfig();
//最大连接数
config.setMaxTotal(10);
//最大空闲连接数
config.setMaxIdle(5);
//获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1
config.setMaxWaitMillis(1000);
//在获取连接的时候检查有效性, 默认false
config.setTestOnBorrow(true);
//在获取返回结果的时候检查有效性, 默认false
config.setTestOnReturn(true);
JedisPool pool = new JedisPool(config, "192.168.245.153",6379); try (Jedis jedis = pool.getResource()) {
jedis.set("foo", "bar");
String foobar = jedis.get("foo");
jedis.zadd("sose", 0, "car"); jedis.zadd("sose", 0, "bike");
Set<String> sose = jedis.zrange("sose", 0, -1);
}
pool.close();Jedis常用操作
String的简单追加
Jedis jedis = new Jedis("192.168.245.153",6379);
jedis.append("foo", "bar");Jedis存放List
jedis.lpush("s", "1","2","3","4");Jedis操作Hash值
Jedis jedis = new Jedis("192.168.245.153",6379);
jedis.hset("hash", "key1", "v1");
jedis.hset("hash", "key2", "v2");
jedis.hset("hash", "key3", "v4");
//获取值
String hget = jedis.hget("hash", "key3");
System.out.println(hget);Jedis操作Set值
jedis.sadd("set", "1","2","3");
//获取值
Set<String> smembers = jedis.smembers("set");
System.out.println(smembers.toString());Jedis操作有序集合
Map<String,Double> scoreMembers = new HashMap<>();
scoreMembers.put("a", 1d);
scoreMembers.put("c", 3d);
scoreMembers.put("t", 2d);
jedis.zadd("st", scoreMembers);
//获取有序集合的成员数
Long zcard = jedis.zcard("st");
ScanResult<Tuple> zscan = jedis.zscan("st", ScanParams.SCAN_POINTER_START);
List<Tuple> result = zscan.getResult();
Iterator<Tuple> iterator = result.iterator();
while (iterator.hasNext()) {
Tuple next = iterator.next();
String element = next.getElement();
System.out.println(element);
}Jedis存放(序列化)Bean对象
Jedis jedis = new Jedis("192.168.245.153",6379); Person p1 = new Person();
p1.setAge("20");
p1.setName("joy");
p1.setId(1);
//存放序列化值
try {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream oout = new ObjectOutputStream(bout);
oout.writeObject(p1);
byte[] byteArray = bout.toByteArray();
jedis.set("person:1".getBytes(), byteArray);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //反序列化
byte[] bs = jedis.get("person:1".getBytes());
ObjectInputStream oin;
try {
ByteArrayInputStream bin = new ByteArrayInputStream(bs);
oin = new ObjectInputStream(bin);
Person p = (Person)oin.readObject();
System.out.println(p.getName());
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}Jedis存放对象(转化成Map)
Jedis jedis = new Jedis("192.168.245.153",6379); //存放p1对象
Person p1 = new Person();
p1.setAge("20");
p1.setName("joy");
p1.setId(1);
try {
Map<String, Object> bean2map = BeanUtils.bean2map(p1);
Map<String,String> map = new HashMap<>();
Set<Entry<String, Object>> entrySet = bean2map.entrySet();
Iterator<Entry<String, Object>> iterator = entrySet.iterator();
while(iterator.hasNext()) {
Entry<String, Object> next = iterator.next();
map.put(next.getKey(), String.valueOf(next.getValue()));
}
//存放map
jedis.hmset("person", map);
} catch (Exception e) {
e.printStackTrace();
}
String hget = jedis.hget("person", "name");
System.out.println(hget);Jedis排序
简单排序
//降序
jedis.lpush("s", "1","2","3","4");
List<String> sort = jedis.sort("s",new SortingParams().desc());
System.out.println(sort); //升序
jedis.lpush("s", "1","2","3","4");
List<String> sort = jedis.sort("s",new SortingParams().asc());
System.out.println(sort);
Jedis操作Redis实例的更多相关文章
- Java中使用Jedis操作Redis(转载)
整理 1.字符串 添加:set keyname value 查询:get keyname 拼接:append keyname value 删除:del keyname 添加多个: mset keyna ...
- jedis操作redis全指南
package com.wujintao.redis; import java.util.Date; import java.util.HashMap; import java.util.Iterat ...
- Jedis操作Redis技巧详解
对于Redis的部署模式有两种,单机模式 和 集群模式.因此,本文的介绍也从这两个方面进行介绍.众所周知,Jedis是最著名的Redis java客户端操作类库,几乎支持所有的Redis操作.本文就是 ...
- Redis入门和Java利用jedis操作redis
Redis入门和Java利用jedis操作redis Redis介绍 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - val ...
- Jedis操作Redis数据库
添加Maven依赖: <dependencies> <!-- 单元测试 --> <dependency> <groupId>junit</grou ...
- Jedis操作Redis
Jedis操作Redis的常用封装方法 @Resource(name="jedispool") private JedisPool pool=null; /** * 设置缓存对象过 ...
- 四、Jedis操作Redis
前言: 原来我们操作mysql需要用的jdbc,现在操作redis则需要jedis,jedis是客户端,而redis是服务器,使用jedis客户端来操作redis. 在这里要使用jedis操作red ...
- JAVA中通过Jedis操作Redis连接与插入简单库
一.简述 JAVA中通过Jedis操作Redis连接与插入简单库 二.依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis ...
- jedis操作redis的几种常见方式总结
Redis是一个著名的key-value存储系统,也是nosql中的最常见的一种,这篇文章主要给大家总结了关于在java中jedis操作redis的几种常见方式,文中给出了详细的示例代码供大家参考学习 ...
随机推荐
- 【JavaScript数据结构系列】00-开篇
[JavaScript数据结构系列]00-开篇 码路工人 CoderMonkey 转载请注明作者与出处 ## 0. 开篇[JavaScript数据结构与算法] 大的计划,写以下两部分: 1[JavaS ...
- 第 7 篇:文章详情的 API 接口
作者:HelloGitHub-追梦人物 一旦我们使用了视图集,并实现了 HTTP 请求对应的 action 方法(对应规则的说明见 使用视图集简化代码),将其在路由器中注册后,django-restf ...
- Java IO(十七)FIleReader 和 FileWriter
Java IO(十七)FIleReader 和 FileWriter 一.介绍 FIleReader 和 FileWriter 是读写字符文件的便利类,分别继承于 InputStreamReader ...
- $工具, 属性, TAB点击切换
$工具方法 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <tit ...
- 接口(interface)的使用
类实现接口就具有接口的功能 实现可以多实现,实现多个接口 package cm.aff.abst; /* 接口(interface)是与类并行的一个概念 1. 接口可以看做是一个特殊的抽象类,是常量与 ...
- Hadoop Yarn REST API未授权漏洞利用
Hadoop Yarn REST API未授权漏洞利用 Hadoop是一个由Apache基金会所开发的分布式系统基础架构,YARN是hadoop系统上的资源统一管理平台,其主要作用是实现集群资源的统一 ...
- Java实现 LeetCode 820 单词的压缩编码(字典树)
820. 单词的压缩编码 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A. 例如,如果这个列表是 ["time", "me", & ...
- Java实现 LeetCode 415 字符串相加
415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100. num1 和num2 都只包含数字 0-9. num ...
- Java实现 蓝桥杯VIP 算法提高 进制转换
算法提高 进制转换 时间限制:1.0s 内存限制:256.0MB 问题描述 程序提示用户输入三个字符,每个字符取值范围是0-9,A-F.然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制 ...
- Java实现 蓝桥杯VIP 算法提高 乘法运算
算法提高 乘法运算 时间限制:1.0s 内存限制:512.0MB 问题描述 编制一个乘法运算的程序. 从键盘读入2个100以内的正整数,进行乘法运算并以竖式输出. 输入格式 输入只有一行,是两个用空格 ...