Java客户端Jedis

使用Jedis的Java客户端

maven依赖

<!-- jedis -->
<dependency>
    <groupid>redis.clients</groupid>
    jedis</artifactid>
    <version>2.9.0</version>
</dependency>

<!-- fastjson -->
<dependency>
    <groupid>com.alibaba</groupid>
    fastjson</artifactid>
    <version>1.2.22</version>
</dependency>

使用Jedis连接池

JedisUtil.java

package com.wishfulcloud.commons.dataSource.redis.jedis;

import org.apache.commons.pool2.impl.GenericObjectPoolConfig;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

/**
 * Jedis 工具类
 *
 *
 * @author wangxuezheng
 * @date 2017年3月21日 下午3:28:18
 * @version V1.0
 *
 */
public class JedisUtil {

    private static volatile GenericObjectPoolConfig poolConfig = null;

    static{
        poolConfig = new GenericObjectPoolConfig();

        // 最大连接数为默认值的5倍
        poolConfig.setMaxTotal(GenericObjectPoolConfig.DEFAULT_MAX_TOTAL * 5);
        // 最大空闲连接数为默认值的3倍
        poolConfig.setMaxIdle(GenericObjectPoolConfig.DEFAULT_MAX_IDLE * 3);
        // 最小空闲连接数为默认值的2倍
        poolConfig.setMinIdle(GenericObjectPoolConfig.DEFAULT_MIN_IDLE * 2);
        // 开启jmx功能
        poolConfig.setJmxEnabled(true);
        // 连接池没有连接后客户端的最大等待时间(单位 毫秒)
        poolConfig.setMaxWaitMillis(3000);
    }

    private static volatile JedisPool jedisPool = null;

    private JedisUtil(){}

    /**
     * 从连接池中获取一个Jedis实例
     *
     * @return
     */
    public static Jedis getJedisInstance() throws Exception{

        try {
            if(null == jedisPool){
                synchronized (JedisUtil.class){
                    if(null == jedisPool){
                        jedisPool = new JedisPool(poolConfig,"192.168.1.218",6379);
                    }
                }
            }
        } catch (Exception e) {
            throw e;
        }
        return jedisPool.getResource();
    }

    /**
     * 归还到连接池
     *
     * @param jedis
     */
    public static void close(Jedis jedis) throws Exception{
        try {
            if(null != jedis){
                jedis.close();
            }
        } catch (Exception e) {
            throw e;
        }
    }
}

BaseCache.java

package com.wishfulcloud.commons.dataSource.redis.jedis;

import com.alibaba.fastjson.JSON;

import redis.clients.jedis.Jedis;

/**
 * 单机或着主从复制 ,Jedis Java 客户端
 *
 * @author wangxuezheng
 * @date 2017年3月21日 下午3:55:26
 * @version V1.0
 *
 */
public class BaseCache<t> {

    /**
     * 保存或者更新一个实体
     *
     * 如果seconds参数值不为0的话,则是过期缓存,具有缓存时长
     *
     * @param jedis
     * @param entity 实体对象
     * @param id     实体主键
     * @param seconds 有效时长多少秒
     *
     * @return true 保存或更新成功
     *         false 保存或更新失败
     */
    public Boolean saveOrUpdate(Jedis jedis, T entity, String id, int seconds){
        String key  = entity.getClass().getSimpleName().toLowerCase() + ":" + id;
        String ok = jedis.set(key , JSON.toJSONString(entity));
        if (seconds != 0){
            jedis.expire(key, seconds);
        }
        return "OK".equals(ok);
    }

    /**
     * 根据类型和id获取一个实体,未获取到返回 null
     *
     * @param jedis
     * @param clazz 实体.class
     * @param id    主键id
     *
     * @return T 或着 null
     */
    public T getById(Jedis jedis, Class<t> clazz, String id){
        String object = jedis.get(clazz.getSimpleName().toLowerCase() + ":" +id);
        return JSON.parseObject(object, clazz);
    }

    /**
     * 根据id删除一个实体对象
     *
     * @param jedis
     * @param clazz 实体.class
     * @param id 主键id
     * @return  true 删除成功
     *          false 删除失败
     *
     */
    public Boolean deleteEntity(Jedis jedis, Class<t> clazz, String id){
        String key = clazz.getSimpleName().toLowerCase() + ":" +id;
        return jedis.del(key) > 0;
    }

}
时间: 2024-10-07 11:29:58

Java客户端Jedis的相关文章

Redis Java客户端jedis工具类以及Redis实现的跨jvm的锁

Redis Java客户端jedis工具类以及Redis实现的跨jvm的锁 最近项目中使用redis,学习了一下,client端使用jedis-2.1.0 首先是一个redis实现的跨jvm的lock, 接着是一个简单封装的工具类,也对pipeline处理进行了几个常用的封装 然后是对应Spring的相关配置 Java代码   public class RedisLock { /** 加锁标志 */ public static final String LOCKED = "TRUE";

redis的java客户端Jedis简单封装

经过我们团队的一番讨论,最终决定使用redis来进行我们的业务缓存.redis会将数据缓存到内存中,运行效率会很快.同时异步将数据写入到磁盘中,进行持久化. 且redis支持主从同步,支持分布式部署,支持N多数据结构,这对于我们有着莫大的吸引力. 参见:http://blog.csdn.net/yichenlian/article/details/27207383 我们团队讨论的焦点是在于redis的灾备恢复问题.由于redis的持久化是异步的,总会有一点时间内存中数据和磁盘数据不同步的情况(当

Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式)介绍

jedis是一个著名的key-value存储系统,而作为其官方推荐的java版客户端jedis也非常强大和稳定,支持事务.管道及有jedis自身实现的分布式. 在这里对jedis关于事务.管道和分布式的调用方式做一个简单的介绍和对比: 一.普通同步方式 最简单和基础的调用方式: 1 @Test 2 public void test1Normal() { 3 Jedis jedis = new Jedis("localhost"); 4 long start = System.curre

try redis(四) -java 客户端jedis 使用

不同的计算机语言针对redis,都有自己的客户端. 官网上也列出了客户端的 http://www.redis.io/clients java客户端如下: 感觉客户端无非也就是做些连接和拼接命令的事情.所以不费心思比较哪个好了,就选第一个吧.一般第一个应该都是不错的. 选择jedis ,发现他的代码是 GitHub 托管的,开源的.地址为 https://github.com/xetorthio/jedis 找到 maven dependency <dependency> <groupId

Java客户端Jedis的八种调用方式

redis是一个著名的key-value存储系统,而作为其官方推荐的java版客户端jedis也非常强大和稳定,支持事务.管道及有jedis自身实现的分布式. 在这里对jedis关于事务.管道和分布式的调用方式做一个简单的介绍和对比:  一.普通同步方式 最简单和基础的调用方式, @Test  public void test1Normal() {      Jedis jedis = new Jedis("localhost");      long start = System.c

[转载] 使用Redis的Java客户端Jedis

转载自http://aofengblog.blog.163.com/blog/static/631702120147298317919/ 在实际的项目开发中,各种语言是使用Redis的客户端库来与Redis交互.针对Java语言,Redis官方推荐Jedis. Jedis提供了多种操作方式:单机单连接方式.单机连接池方式.多机分布式+连接池方式. 预备 jedis-2.5.2commons-pool2-2.2.jar 使用单连接 此方式仅建议用于开发环境做调试用. // 创建连接String h

使用Redis的Java客户端Jedis

转载自:http://aofengblog.blog.163.com/blog/static/631702120147298317919/ 前一篇文章<Redis命令指南>讲解了通过命令行的方式执行Key=>的存储操作,在实际的项目开发中,各种语言是使用Redis的客户端库来与Redis交互.针对Java语言,Redis官方推荐Jedis. Jedis提供了多种操作方式:单机单连接方式.单机连接池方式.多机分布式+连接池方式. 预备 jedis-2.5.2commons-pool2-2.

redis java客户端Jedis 实现 连接池 + 简单的负载均衡

1.下载 redis_win_2.6.13.zip 安装包 下载地址:大家去百度吧 2.redis_win_2.6.13.zip 安装包解压缩后,进入redis-server.exe所在目录 在此目录中,新建一个配置文件:redis01.conf[此处文件名字,并不固定],文件内容如下: #是否以后台进程运行 daemonize yes   #指定后台进程的pid文件写入位置 pidfile /var/run/redis.pid   #监听端口,默认为6379 port 6379   #只接受以

Redis java客户端 jedis 源码分析系列二:单实例 jedis

在使用Jedis的过程中最简单的用法就是单实例单连接的jedis,如下代码所示: public void testJedis(){ Jedis jedis = new Jedis("127.0.0.1"); jedis.set("key", "value"); jedis.get("key"); jedis.close(); } 让我们深入到内部去看一看其结构,如下图所示: 此处请先忽略 JedisPool 类和 Pool&l