-
源代码下载: http://download.csdn.net/detail/jiangtao_st/7623113
1、Maven配置
01.
<dependency>
02.
<groupId>redis.clients</groupId>
03.
<artifactId>jedis</artifactId>
04.
<version>
2.5
.
0
</version>
05.
</dependency>
06.
<dependency>
07.
<groupId>com.alibaba</groupId>
08.
<artifactId>fastjson</artifactId>
09.
<version>
1.1
.
41
</version>
10.
</dependency></span>
2、Properties 配置文件
redis.pool.maxActive=100
redis.pool.maxIdle=20
redis.pool.maxWait=3000
redis.ip=localhost
redis.port=6379
3、代码具体实现的Client
001.
/**
002.
*
003.
* <p>
004.
* Redis客户端访问
005.
* </p>
006.
*
007.
* @author 卓轩
008.
* @创建时间:2014年7月11日
009.
* @version: V1.0
010.
*/
011.
public
class
RedisClient {
012.
013.
public
static
JedisPool jedisPool;
// 池化管理jedis链接池
014.
015.
static
{
016.
017.
//读取相关的配置
018.
ResourceBundle resourceBundle = ResourceBundle.getBundle(
"redis"
);
019.
int
maxActive = Integer.parseInt(resourceBundle.getString(
"redis.pool.maxActive"
));
020.
int
maxIdle = Integer.parseInt(resourceBundle.getString(
"redis.pool.maxIdle"
));
021.
int
maxWait = Integer.parseInt(resourceBundle.getString(
"redis.pool.maxWait"
));
022.
023.
String ip = resourceBundle.getString(
"redis.ip"
);
024.
int
port = Integer.parseInt(resourceBundle.getString(
"redis.port"
));
025.
026.
JedisPoolConfig config =
new
JedisPoolConfig();
027.
//设置最大连接数
028.
config.setMaxTotal(maxActive);
029.
//设置最大空闲数
030.
config.setMaxIdle(maxIdle);
031.
//设置超时时间
032.
config.setMaxWaitMillis(maxWait);
033.
034.
//初始化连接池
035.
jedisPool =
new
JedisPool(config, ip, port);
036.
}
037.
038.
/**
039.
* 向缓存中设置字符串内容
040.
* @param key key
041.
* @param value value
042.
* @return
043.
* @throws Exception
044.
*/
045.
public
static
boolean
set(String key,String value)
throws
Exception{
046.
Jedis jedis =
null
;
047.
try
{
048.
jedis = jedisPool.getResource();
049.
jedis.set(key, value);
050.
return
true
;
051.
}
catch
(Exception e) {
052.
e.printStackTrace();
053.
return
false
;
054.
}
finally
{
055.
jedisPool.returnResource(jedis);
056.
}
057.
}
058.
059.
/**
060.
* 向缓存中设置对象
061.
* @param key
062.
* @param value
063.
* @return
064.
*/
065.
public
static
boolean
set(String key,Object value){
066.
Jedis jedis =
null
;
067.
try
{
068.
String objectJson = JSON.toJSONString(value);
069.
jedis = jedisPool.getResource();
070.
jedis.set(key, objectJson);
071.
return
true
;
072.
}
catch
(Exception e) {
073.
e.printStackTrace();
074.
return
false
;
075.
}
finally
{
076.
jedisPool.returnResource(jedis);
077.
}
078.
}
079.
080.
/**
081.
* 删除缓存中得对象,根据key
082.
* @param key
083.
* @return
084.
*/
085.
public
static
boolean
del(String key){
086.
Jedis jedis =
null
;
087.
try
{
088.
jedis = jedisPool.getResource();
089.
jedis.del(key);
090.
return
true
;
091.
}
catch
(Exception e) {
092.
e.printStackTrace();
093.
return
false
;
094.
}
finally
{
095.
jedisPool.returnResource(jedis);
096.
}
097.
}
098.
099.
/**
100.
* 根据key 获取内容
101.
* @param key
102.
* @return
103.
*/
104.
public
static
Object get(String key){
105.
Jedis jedis =
null
;
106.
try
{
107.
jedis = jedisPool.getResource();
108.
Object value = jedis.get(key);
109.
return
value;
110.
}
catch
(Exception e) {
111.
e.printStackTrace();
112.
return
false
;
113.
}
finally
{
114.
jedisPool.returnResource(jedis);
115.
}
116.
}
117.
118.
119.
/**
120.
* 根据key 获取对象
121.
* @param key
122.
* @return
123.
*/
124.
public
static
<T> T get(String key,Class<T> clazz){
125.
Jedis jedis =
null
;
126.
try
{
127.
jedis = jedisPool.getResource();
128.
String value = jedis.get(key);
129.
return
JSON.parseObject(value, clazz);
130.
}
catch
(Exception e) {
131.
e.printStackTrace();
132.
return
null
;
133.
}
finally
{
134.
jedisPool.returnResource(jedis);
135.
}
136.
}
137.
138.
139.
}
4、Sharding 分片管理
001.
/**
002.
*
003.
* <p>
004.
* Sharding Redis Client 工具类
005.
* </p>
006.
*
007.
* @author 卓轩
008.
* @创建时间:2014年7月11日
009.
* @version: V1.0
010.
*/
011.
public
class
ShardingRedisClient {
012.
013.
private
static
ShardedJedisPool shardedJedisPool;
014.
015.
static
{
016.
// 读取相关的配置
017.
ResourceBundle resourceBundle = ResourceBundle.getBundle(
"redis"
);
018.
int
maxActive = Integer.parseInt(resourceBundle.getString(
"redis.pool.maxActive"
));
019.
int
maxIdle = Integer.parseInt(resourceBundle.getString(
"redis.pool.maxIdle"
));
020.
int
maxWait = Integer.parseInt(resourceBundle.getString(
"redis.pool.maxWait"
));
021.
022.
String ip = resourceBundle.getString(
"redis.ip"
);
023.
int
port = Integer.parseInt(resourceBundle.getString(
"redis.port"
));
024.
025.
//设置配置
026.
JedisPoolConfig config =
new
JedisPoolConfig();
027.
config.setMaxTotal(maxActive);
028.
config.setMaxIdle(maxIdle);
029.
config.setMaxWaitMillis(maxWait);
030.
031.
//设置分片元素信息
032.
JedisShardInfo shardInfo1 =
new
JedisShardInfo(ip,port);
033.
JedisShardInfo shardInfo2 =
new
JedisShardInfo(ip,port);
034.
List<JedisShardInfo> list =
new
ArrayList<JedisShardInfo>();
035.
list.add(shardInfo1);
036.
list.add(shardInfo2);
037.
shardedJedisPool =
new
ShardedJedisPool(config, list);
038.
}
039.
040.
041.
/**
042.
* 向缓存中设置字符串内容
043.
* @param key key
044.
* @param value value
045.
* @return
046.
* @throws Exception
047.
*/
048.
public
static
boolean
set(String key,String value)
throws
Exception{
049.
ShardedJedis jedis =
null
;
050.
try
{
051.
jedis = shardedJedisPool.getResource();
052.
jedis.set(key, value);
053.
return
true
;
054.
}
catch
(Exception e) {
055.
e.printStackTrace();
056.
return
false
;
057.
}
finally
{
058.
shardedJedisPool.returnResource(jedis);
059.
}
060.
}
061.
062.
/**
063.
* 向缓存中设置对象
064.
* @param key
065.
* @param value
066.
* @return
067.
*/
068.
public
static
boolean
set(String key,Object value){
069.
ShardedJedis jedis =
null
;
070.
try
{
071.
String objectJson = JSON.toJSONString(value);
072.
jedis = shardedJedisPool.getResource();
073.
jedis.set(key, objectJson);
074.
return
true
;
075.
}
catch
(Exception e) {
076.
e.printStackTrace();
077.
return
false
;
078.
}
finally
{
079.
shardedJedisPool.returnResource(jedis);
080.
}
081.
}
082.
083.
/**
084.
* 删除缓存中得对象,根据key
085.
* @param key
086.
* @return
087.
*/
088.
public
static
boolean
del(String key){
089.
ShardedJedis jedis =
null
;
090.
try
{
091.
jedis = shardedJedisPool.getResource();
092.
jedis.del(key);
093.
return
true
;
094.
}
catch
(Exception e) {
095.
e.printStackTrace();
096.
return
false
;
097.
}
finally
{
098.
shardedJedisPool.returnResource(jedis);
099.
}
100.
}
101.
102.
/**
103.
* 根据key 获取内容
104.
* @param key
105.
* @return
106.
*/
107.
public
static
Object get(String key){
108.
ShardedJedis jedis =
null
;
109.
try
{
110.
jedis = shardedJedisPool.getResource();
111.
Object value = jedis.get(key);
112.
return
value;
113.
}
catch
(Exception e) {
114.
e.printStackTrace();
115.
return
false
;
116.
}
finally
{
117.
shardedJedisPool.returnResource(jedis);
118.
}
119.
}
120.
121.
122.
/**
123.
* 根据key 获取对象
124.
* @param key
125.
* @return
126.
*/
127.
public
static
<T> T get(String key,Class<T> clazz){
128.
ShardedJedis jedis =
null
;
129.
try
{
130.
jedis = shardedJedisPool.getResource();
131.
String value = jedis.get(key);
132.
return
JSON.parseObject(value, clazz);
133.
}
catch
(Exception e) {
134.
e.printStackTrace();
135.
return
null
;
136.
}
finally
{
137.
shardedJedisPool.returnResource(jedis);
138.
}
139.
}
140.
141.
}
5、 单元测试、保存对象、写入对象
01.
/**
02.
*
03.
* <p>
04.
* 测试独立redis 客户端
05.
* </p>
06.
*
07.
* @author 卓轩
08.
* @创建时间:2014年7月11日
09.
* @version: V1.0
10.
*/
11.
public
class
SimpleClient {
12.
13.
@Test
14.
public
void
userCache(){
15.
16.
//向缓存中保存对象
17.
UserDO zhuoxuan =
new
UserDO();
18.
zhuoxuan.setUserId(
113445
);
19.
zhuoxuan.setSex(
1
);
20.
zhuoxuan.setUname(
"卓轩"
);
21.
zhuoxuan.setUnick(
"zhuoxuan"
);
22.
zhuoxuan.setEmail(
"zhuoxuan@mogujie.com"
);
23.
//调用方法处理
24.
boolean
reusltCache = RedisClient.set(
"zhuoxuan"
, zhuoxuan);
25.
if
(reusltCache) {
26.
System.out.println(
"向缓存中保存对象成功。"
);
27.
}
else
{
28.
System.out.println(
"向缓存中保存对象失败。"
);
29.
}
30.
}
31.
32.
33.
@Test
34.
public
void
getUserInfo(){
35.
36.
UserDO zhuoxuan = RedisClient.get(
"zhuoxuan"
,UserDO.
class
);
37.
if
(zhuoxuan !=
null
){
38.
System.out.println(
"从缓存中获取的对象,"
+ zhuoxuan.getUname() +
"@"
+ zhuoxuan.getEmail());
39.
}
40.
41.
}
42.
43.
44.
45.
}
-
- 浏览: 1586310 次
- 性别:
- 来自: 吉林
文章分类
- 全部博客 (624)
- C/C++ (33)
- Java (181)
- 网络相关 (7)
- 我爱篮球 (3)
- 也爱足球 (4)
- 杂谈 (1)
- 系统架构 (3)
- Web Service (14)
- Framework (3)
- 系统命令 (8)
- 管理平台相关 (8)
- 其它 (35)
- Websphere (1)
- Struts2 (24)
- Hibernate (16)
- Spring (23)
- javascript (20)
- jquery (23)
- html/css/div (28)
- 数据库 (40)
- JavaWeb (27)
- 设计模式 (2)
- 文档编写 (3)
- SVN (5)
- Ant (1)
- Maven (13)
- 软件项目管理 (8)
- AOP (1)
- kindeditor (1)
- JSON (2)
- Servlt/JSP (4)
- WordXML (2)
- XML (12)
- 面试相关 (7)
- Tomcat (11)
- 性能与调优 (29)
- 职业发展 (2)
- 操作系统 (7)
- AJAX (2)
- DWR (1)
- Eclipse (12)
- 持续集成 (3)
- 批处理命令 (1)
- Mozilla Rhino (2)
- 新鲜技术 (18)
- Apache mina (2)
- 底层技术 (18)
- Linux (22)
- 新鲜技术,IT历史 (1)
- 敏捷开发 (1)
- 版本控制 (5)
- 较火技术 (7)
- 集群 (2)
- Web前端 (13)
- 报表工具 (3)
- 网站架构 (5)
- 大数据 (8)
- 分布式存储 (5)
- 云计算 (8)
- TCP/IP协议 (1)
- 负载均衡 (3)
- 硬件 (1)
- 表现层技术 (3)
- Velocity (3)
- jvm (6)
- 并发编程 (10)
- hadoop (8)
- 数据结构和算法 (12)
- 计算机原理 (1)
- 测试驱动开发-TDD (3)
- 开发技巧 (1)
- 分词器 (1)
- 项目构建工具 (2)
- JMX (4)
- RMI (1)
- 测试技术 (22)
- 网络完全 (1)
- Git (4)
- apache开源包 (4)
- Java常用 (1)
- mock (2)
- OSGi (2)
- MongoDB (1)
- JBPM (1)
- Storm (3)
- mysql (2)
- telnet (1)
- 正则表达式 (1)
- bootstrap (4)
- Apache ActiveMQ (1)
- redis (9)
- Nginx (2)
- rsync+inotify文件同步 (2)
- testng (1)
- 原型设计工具 (1)
- 工程能力 (1)
- 风险控制 (3)
- ibatis (1)
- 分布式 (4)
- 安全技术 (1)
- 计算机基础 (4)
- 消息中间件 (1)
- UML (2)
最新评论
-
u012236967:
java命令执行jar包(里面的main函数)的方式(包括依赖其它的jar包问题) -
世界尽头没有你:
Selenium自动化测试从入门到精通(Java版)百度网盘地 ...
自动化测试工具 Selenium WebDriver 入门教程(针对主流浏览器) -
小小西芹菜:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
dwr实现Reverse Ajax推送技术的三种方式 -
hellozhouqiao:
楼主,请教一点问题.现在我们需要在excel 的页脚里面加上图 ...
FreeMaker + xml 导出word(处理目录,图片和页眉页脚问题) -
乱在长安:
使用Timer会有各种各样的问题好嘛?!书上推荐使用Sched ...
DelayQueue (ScheduledThreadPoolExecutor调度的实现)
发表评论
-
Java SE7新特性之二进制字面量
2016-12-14 22:53 825Java SE 7中, 整数类型(byte, shor ... -
浮点数为什么不精确?为什么银行的金额不能用浮点数计算
2016-12-14 22:52 2012浮点数为什么不精确? 其实这句话本身就不精确, 相对精确一 ... -
计算机是如何计算乘法除法的(实际上都是转换为二进制加法计算)
2016-12-14 22:46 6626http://blog.csdn.net/blues1021 ... -
什么是补码、反码、负数在计算中如何表示
2016-12-14 22:39 919负数在计算机中如何表 ... -
Math.abs()绝对值取到的数不一定是正数
2016-12-14 22:37 1260Math.abs() 注释:Note that if th ... -
用BigInteger实现大素数生成算法
2016-12-06 16:42 1862转自:http://www.cnblogs.co ... -
加密(AES)、公私钥(PKI)、摘要(DIGEST)、签名(SIGNATURE)、证书(CERT)的形象解释和组合用法
2016-09-15 18:19 94041.鲍勃有两把钥匙,一把是公钥,另一把是私钥。 ... -
RSA加密公私钥生成工具(openssl)
2016-09-15 13:00 1185https://www.openssl.org/source/ ... -
RPC原理详解
2016-06-23 20:47 576RPC 功能目标 RPC 的主要功能目标是让构建分布式计算 ... -
Java并发之CountDownLatch、CyclicBarrier和Semaphore
2016-06-23 20:36 1407这次说一下 JUC 中的同步器三个主要的成员:CountDo ... -
线程间协作的两种方式:wait、notify、notifyAll和Condition
2016-06-23 20:35 574在前面我们将了很多关于同步的问题,然而在现实中,需要线程之 ... -
The final local variable xxx cannot be assigned, since it is defined in an enclo
2016-04-24 17:42 1591本文就自己编程时候遇到的一个问题,简要描述一下,并提出解决 ... -
一个奇葩的excel中无法trim的“空格”的问题
2016-03-29 16:21 1924太奇怪了。打印出来的命名是空格,就是 trim() 不管用。 ... -
List深度复制
2016-02-17 09:34 2676昨天弄了一个类似List<Map<String, ... -
Eclipse导入 jar 源码乱码问题
2015-12-15 19:43 870http://blog.csdn.net/laiwenqian ... -
Java高并发编程的各种陷阱
2015-07-25 17:49 999www.iteye.com/blogs/subjects/ja ... -
ASM介绍(java字节码操作利器)
2015-06-10 20:46 4357转自:http://www.ibm.com/de ... -
JDK 7 中的 Fork/Join 模式(并发处理)
2015-06-03 19:47 1000转自:http://www.ibm.com/dev ... -
Java常见内存溢出异常分析
2015-06-03 16:36 826转自:http://www.iteye.com/news/3 ... -
dom4j解析带有命名空间的xml
2015-04-09 21:23 5526Element rootEle = resultDoc.g ...
相关推荐
Redis 是一个高性能的 NoSQL 数据库,使用 Java 语言来操作它可以提高开发效率和性能。本文档将详细介绍使用 Java 操作 Redis 的方法,包括基本命令、数据类型、string 操作、list 操作等。 一、基本命令 在使用 ...
Java操作Redis数据库是一种常见的数据交互方式,特别是在高并发、低延迟的场景中,Redis作为内存数据库的优势被广泛应用。本文将详细讲解如何使用Java与Redis进行交互,并提供源码实例。 首先,我们需要了解Redis的...
总的来说,Java操作Redis的四种数据类型提供了一种灵活且高效的方式来存储和处理数据。通过熟练掌握这些基本操作,开发者可以在Java应用中充分利用Redis的高性能特性,提升系统的响应速度和数据处理能力。同时,了解...
Jedis是Java客户端的一个轻量级、开源的实现,它提供了丰富的命令支持,使得Java开发者能够方便地操作Redis。 1. Jedis.jar: 这是Java连接Redis的核心库,包含了所有与Redis服务器交互的API。Jedis提供了一系列的...
以上就是Java操作Redis的一个简单示例,它展示了如何设置和获取键值、处理集合类型数据以及使用连接池。在实际项目中,还可以利用Redis的更多高级特性,如发布/订阅、事务、有序集合等,以满足不同的业务需求。同时...
Java操作Redis通常依赖于Jedis库,这是一个Java客户端,用于连接和操作Redis键值存储系统。Jedis提供了丰富的API,可以执行多种Redis命令,包括数据结构操作、事务处理、发布/订阅等功能。在这个"java操作redis所需...
在Java开发中,Redis作为一个高性能的键值存储系统,常被用作缓存和消息...通过以上的方式,我们可以构建一个全面的Java Redis操作工具类,为应用程序提供便捷、高效的Redis操作接口,降低开发复杂度并提高代码复用性。
Java操作Redis是一个常见的任务,特别是在大数据处理、缓存管理和分布式系统中。Redis是一个高性能的键值存储系统,常被用于数据库、缓存和消息中间件。Jedis是Java社区广泛使用的Redis客户端,提供了丰富的API来...
最常用的库之一是Jedis,它是由Redis官方推荐的Java客户端。Jedis提供了丰富的API,涵盖了Redis的所有命令,包括字符串、哈希、列表、集合、有序集合等数据类型的操作。 1. **安装Jedis**:在项目中引入Jedis,如果...
在Java中操作Redis,我们通常会使用一个客户端库,如Jedis或Lettuce,来建立连接、执行命令和处理响应。下面我们将详细介绍Java操作Redis的工具类以及配置文件的设置。 **1. Jedis库的引入** 首先,我们需要在项目...
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...
3. 数据类型操作:Java Redis案例可能涉及的操作包括设置、获取、删除键值对,以及操作列表、集合、哈希等数据结构。例如,`jedis.lpush(key, value1, value2)`将值推送到列表的头部,`jedis.smembers(setKey)`获取...
在Java开发中,Redis是一个非常流行的高性能键值存储系统,常用于缓存、消息队列等场景。本资料包提供了关于Java操作Redis的代码示例和工具类,旨在帮助开发者更好地理解和应用Java与Redis的集成。 首先,让我们...
本篇将通过一个简单的Java调用Redis的Demo来探讨如何在Java应用中操作Redis。 首先,我们需要在项目中引入Jedis库,这是一个Java客户端,用于连接和操作Redis。你可以通过Maven或Gradle在你的构建文件中添加依赖。...
在Java开发中,Redis作为一个高性能的键值存储系统,常被用作缓存或数据库,其数据操作便捷高效。为了在不同的服务器之间迁移或者备份Redis中的数据,我们需要实现数据的导入与导出功能。本篇将详细介绍如何使用Java...
在IT行业中,Redis被广泛用作一个高性能的键值存储系统,同时也支持消息队列功能。本篇文章将深入探讨如何使用Java来实现Redis的消息订阅和发布功能,这在分布式系统和实时数据处理中非常关键。 首先,理解Redis的...
在Java开发中,Redis是一个非常流行的高性能键值存储系统,常用于缓存、消息队列等场景。本文将深入探讨如何使用Java与Redis进行各种类型的操作,并基于Maven项目管理来构建我们的示例代码。 首先,为了在Java项目...
在Java开发中,Spring框架与Redis的整合是一个常见的需求,特别是在构建高性能、高并发的应用时。Redis是一款开源的、基于键值对的数据存储系统,它提供了高速的数据读写能力,适用于缓存、消息队列等多种场景。而...