`
xinklabi
  • 浏览: 1591005 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

Java操作redis之一(对象保存、Pool设置、sharding)

 
阅读更多
  • 源代码下载: 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.}
  •  

分享到:
评论

相关推荐

    java操作redis.docx

    Redis 是一个高性能的 NoSQL 数据库,使用 Java 语言来操作它可以提高开发效率和性能。本文档将详细介绍使用 Java 操作 Redis 的方法,包括基本命令、数据类型、string 操作、list 操作等。 一、基本命令 在使用 ...

    java操作redis数据库实例

    Java操作Redis数据库是一种常见的数据交互方式,特别是在高并发、低延迟的场景中,Redis作为内存数据库的优势被广泛应用。本文将详细讲解如何使用Java与Redis进行交互,并提供源码实例。 首先,我们需要了解Redis的...

    Java操作Redis的多种数据类型

    总的来说,Java操作Redis的四种数据类型提供了一种灵活且高效的方式来存储和处理数据。通过熟练掌握这些基本操作,开发者可以在Java应用中充分利用Redis的高性能特性,提升系统的响应速度和数据处理能力。同时,了解...

    java连接Redis所需jar包

    Jedis是Java客户端的一个轻量级、开源的实现,它提供了丰富的命令支持,使得Java开发者能够方便地操作Redis。 1. Jedis.jar: 这是Java连接Redis的核心库,包含了所有与Redis服务器交互的API。Jedis提供了一系列的...

    Java操作redis小案例

    以上就是Java操作Redis的一个简单示例,它展示了如何设置和获取键值、处理集合类型数据以及使用连接池。在实际项目中,还可以利用Redis的更多高级特性,如发布/订阅、事务、有序集合等,以满足不同的业务需求。同时...

    java操作redis所需jar包.zip

    Java操作Redis通常依赖于Jedis库,这是一个Java客户端,用于连接和操作Redis键值存储系统。Jedis提供了丰富的API,可以执行多种Redis命令,包括数据结构操作、事务处理、发布/订阅等功能。在这个"java操作redis所需...

    Java操作Redis实例,操作封装

    在Java开发中,Redis作为一个高性能的键值存储系统,常被用作缓存和消息...通过以上的方式,我们可以构建一个全面的Java Redis操作工具类,为应用程序提供便捷、高效的Redis操作接口,降低开发复杂度并提高代码复用性。

    完整的java操作redis demo

    Java操作Redis是一个常见的任务,特别是在大数据处理、缓存管理和分布式系统中。Redis是一个高性能的键值存储系统,常被用于数据库、缓存和消息中间件。Jedis是Java社区广泛使用的Redis客户端,提供了丰富的API来...

    java操作redis

    最常用的库之一是Jedis,它是由Redis官方推荐的Java客户端。Jedis提供了丰富的API,涵盖了Redis的所有命令,包括字符串、哈希、列表、集合、有序集合等数据类型的操作。 1. **安装Jedis**:在项目中引入Jedis,如果...

    java操作redis工具类与配置文件,详细版

    在Java中操作Redis,我们通常会使用一个客户端库,如Jedis或Lettuce,来建立连接、执行命令和处理响应。下面我们将详细介绍Java操作Redis的工具类以及配置文件的设置。 **1. Jedis库的引入** 首先,我们需要在项目...

    java操作redis所需jar包五个

    redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    java_redis简单案例

    3. 数据类型操作:Java Redis案例可能涉及的操作包括设置、获取、删除键值对,以及操作列表、集合、哈希等数据结构。例如,`jedis.lpush(key, value1, value2)`将值推送到列表的头部,`jedis.smembers(setKey)`获取...

    java操作redis代码和redis工具类相关包资料

    在Java开发中,Redis是一个非常流行的高性能键值存储系统,常用于缓存、消息队列等场景。本资料包提供了关于Java操作Redis的代码示例和工具类,旨在帮助开发者更好地理解和应用Java与Redis的集成。 首先,让我们...

    Java调用Redis 简单Demo

    本篇将通过一个简单的Java调用Redis的Demo来探讨如何在Java应用中操作Redis。 首先,我们需要在项目中引入Jedis库,这是一个Java客户端,用于连接和操作Redis。你可以通过Maven或Gradle在你的构建文件中添加依赖。...

    java 对Redis的导入和导出

    在Java开发中,Redis作为一个高性能的键值存储系统,常被用作缓存或数据库,其数据操作便捷高效。为了在不同的服务器之间迁移或者备份Redis中的数据,我们需要实现数据的导入与导出功能。本篇将详细介绍如何使用Java...

    Java实现Redis的消息订阅和发布

    在IT行业中,Redis被广泛用作一个高性能的键值存储系统,同时也支持消息队列功能。本篇文章将深入探讨如何使用Java来实现Redis的消息订阅和发布功能,这在分布式系统和实时数据处理中非常关键。 首先,理解Redis的...

    java redis 各类型操作实例

    在Java开发中,Redis是一个非常流行的高性能键值存储系统,常用于缓存、消息队列等场景。本文将深入探讨如何使用Java与Redis进行各种类型的操作,并基于Maven项目管理来构建我们的示例代码。 首先,为了在Java项目...

    spring 和redis整合,java代码操作redis,java代码中选择redis制定数据库

    在Java开发中,Spring框架与Redis的整合是一个常见的需求,特别是在构建高性能、高并发的应用时。Redis是一款开源的、基于键值对的数据存储系统,它提供了高速的数据读写能力,适用于缓存、消息队列等多种场景。而...

Global site tag (gtag.js) - Google Analytics