redis操作帮助类

RedisHelper.java


import redis.clients.jedis.*;

import java.util.*;

public class RedisHelper {

    private static JedisPool pool;
    private static RedisHelper redisHelper = null;

    /**
     * 通过静态工厂方法来沟通对象,复用对象,避免每次重新产生新对象
     */
    public static RedisHelper newInstance(String host, int port, String password, int maxIdle, int maxTotal, long maxWaitMillis) {
        if (null != redisHelper)
            return redisHelper;

        synchronized (RedisHelper.class) {
            if (null != redisHelper)
                return redisHelper;

            redisHelper = new RedisHelper(host, port, password, maxIdle, maxTotal, maxWaitMillis);
            return redisHelper;
        }
    }

    private RedisHelper(String host, int port, String password, int maxIdle, int maxTotal, long maxWaitMillis) {
        if (null != pool)
            return;

        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxIdle(maxIdle);//最大空闲连接数
        config.setMaxTotal(maxTotal);//最大连接数
        config.setTestOnBorrow(true);
        config.setTestOnReturn(false);
        config.setMaxWaitMillis(maxWaitMillis);
        pool = new JedisPool(config, host, port, 10000, password);
    }

    /**
     * 没有特别需求,请不要在外部调用此方法
     */
    public Jedis getConnection() {
        return pool.getResource();
    }

    public void returnConnection(Jedis conn) {
        //自Jedis3.0版本后jedisPool.returnResource()遭弃用,官方重写了Jedis的close方法用以代替
        if (null != conn) {
            conn.close();
        }
    }

    public Pipeline pipeline() {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.pipelined();
        } finally {
            this.returnConnection(conn);
        }
    }

    public Set<String> keys(String pattern) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.keys(pattern);
        } finally {
            this.returnConnection(conn);
        }
    }

    public void set(String key, String value) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            conn.set(key, value);
        } finally {
            this.returnConnection(conn);
        }
    }

    public long setNx(String key, String value) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.setnx(key, value);
        } finally {
            this.returnConnection(conn);
        }
    }

    public String get(String key) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.get(key);
        } finally {
            this.returnConnection(conn);
        }
    }

    public String getSet(String key, String value) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.getSet(key, value);
        } finally {
            this.returnConnection(conn);
        }
    }

    public long del(String key) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.del(key);
        } finally {
            this.returnConnection(conn);
        }
    }

    public long del(String... keys) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.del(keys);
        } finally {
            this.returnConnection(conn);
        }
    }

    /**
     * 若 key 存在,返回 true ,否则返回 false 。
     */
    public boolean exists(String key) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.exists(key);
        } finally {
            this.returnConnection(conn);
        }
    }

    /**
     * 设置成功,返回 1, key 不存在或设置失败,返回 0
     */
    public long pexpire(String key, long milliseconds) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.pexpire(key, milliseconds);
        } finally {
            this.returnConnection(conn);
        }
    }

    public long hset(String key, String field, String value) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.hset(key, field, value);
        } finally {
            this.returnConnection(conn);
        }
    }

    /**
     * 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。
     * 若域 field 已经存在,该操作无效。
     * 如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。
     */
    public long hsetnx(String key, String field, String value) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.hsetnx(key, field, value);
        } finally {
            this.returnConnection(conn);
        }
    }

    public long hdel(String key, String... fields) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.hdel(key, fields);
        } finally {
            this.returnConnection(conn);
        }
    }

    public Set<String> hkeys(String key) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.hkeys(key);
        } finally {
            this.returnConnection(conn);
        }
    }

    public Map<String, String> hgetAll(String key) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.hgetAll(key);
        } finally {
            this.returnConnection(conn);
        }
    }

    public String hget(String key, String field) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.hget(key, field);
        } finally {
            this.returnConnection(conn);
        }
    }

    public long hincrBy(String key, String field, Long value) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.hincrBy(key, field, value);
        } finally {
            this.returnConnection(conn);
        }
    }

    public Long rpush(String key, String... strings) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.rpush(key, strings);
        } finally {
            this.returnConnection(conn);
        }
    }

    /**
     * 返回元素个数
     */
    public Long lpush(String key, String... strings) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.lpush(key, strings);
        } finally {
            this.returnConnection(conn);
        }
    }

    public String lpop(String key) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.lpop(key);
        } finally {
            this.returnConnection(conn);
        }
    }

    public String rpop(String key) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.rpop(key);
        } finally {
            this.returnConnection(conn);
        }
    }

    public List<String> lrange(String key, long start, long end) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.lrange(key, start, end);
        } finally {
            this.returnConnection(conn);
        }
    }

    public long sadd(String key, String... members) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.sadd(key, members);
        } finally {
            this.returnConnection(conn);
        }
    }

    public Set<String> sinter(String... keys) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.sinter(keys);
        } finally {
            this.returnConnection(conn);
        }
    }

    public long scard(String key) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.scard(key);
        } finally {
            this.returnConnection(conn);
        }
    }

    public String spop(String key) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.spop(key);
        } finally {
            this.returnConnection(conn);
        }
    }

    public long srem(String key, String... members) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.srem(key, members);
        } finally {
            this.returnConnection(conn);
        }
    }

    public Set<String> smembers(String key) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.smembers(key);
        } finally {
            this.returnConnection(conn);
        }
    }

    public Set<String> sunion(String... keys) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.sunion(keys);
        } finally {
            this.returnConnection(conn);
        }
    }

    public boolean sismember(String key, String member) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.sismember(key, member);
        } finally {
            this.returnConnection(conn);
        }
    }

    public long increment(String key, long amount) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.incrBy(key, amount);
        } finally {
            this.returnConnection(conn);
        }
    }

    public double increment(String key, double amount) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.incrByFloat(key, amount);
        } finally {
            this.returnConnection(conn);
        }
    }

    /**
     * 列表长度
     */
    public long llen(String key) {
        Jedis conn = null;
        try {
            conn = this.getConnection();
            return conn.llen(key);
        } finally {
            this.returnConnection(conn);
        }
    }
}

原文地址:https://www.cnblogs.com/lalalagq/p/10218987.html

时间: 2024-11-09 04:02:59

redis操作帮助类的相关文章

Redis 操作帮助类

首先从Nuget中添加StackExchange.Redis包 1.Redis连接对象管理帮助类 using Mvc.Base; using Mvc.Base.Log; using StackExchange.Redis; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Text; namespace Redis

设计模式之PHP项目应用——单例模式设计Memcache和Redis操作类

1 单例模式简单介绍 单例模式是一种经常使用的软件设计模式. 在它的核心结构中仅仅包括一个被称为单例类的特殊类. 通过单例模式能够保证系统中一个类仅仅有一个实例并且该实例易于外界訪问.从而方便对实例个数的控制并节约系统资源.假设希望在系统中某个类的对象仅仅能存在一个.单例模式是最好的解决方式. 2 模式核心思想 1)某个类仅仅能有一个实例: 2)它必须自行创建这个实例: 3)它必须自行向整个系统提供这个实例. 3 模式架构图 4 项目应用 4.1 需求说明 CleverCode在实际的PHP项目

spring 的redis操作类RedisTemplate

spring 集成的redis操作几乎都在RedisTemplate内了. 已spring boot为例, 再properties属性文件内配置好 redis的参数 spring.redis.host=127.0.0.1 spring.redis.port=6379 spring.redis.password=redispass spring.redis.database=0 spring.redis.timeout=5000 再到 Application启动类下加入以下代码: @Bean pu

php的redis 操作类,适用于单台或多台、多组redis服务器操作

redis 操作类,包括单台或多台.多组redis服务器操作,适用于业务复杂.高性能要求的 php web 应用. redis.php: <?php /* redis 操作类,适用于单台或多台.多组redis服务器操作 使用方法: 1.$rs=new mz_redis();$rs->load_config_file('redis_config1.php');$www=$rs->connect(1,true,0)==单台读连接,连接read_array第一个元素对应的redis服务器中的随

PHP 操作redis 封装的类

1 <?php 2 /** 3 * Redis 操作,支持 Master/Slave 的负载集群 4 * 6 */ 7 class RedisCluster{ 8 9 // 是否使用 M/S 的读写集群方案 10 private $_isUseCluster = false; 11 12 // Slave 句柄标记 13 private $_sn = 0; 14 15 // 服务器连接句柄 16 private $_linkHandle = array( 17 'master'=>null,/

redis 操作大全 PHP-redis中文文档

转自  : http://www.cnblogs.com/weafer/archive/2011/09/21/2184059.html phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github.com/owlient/phpredis(支持redis 2.0.4) Redis::__construct构造函数$redis = new Redis(); connect,

使用python对redis操作

写在前面 首先声明,这是为了学习python对redis操作而写的一个小demo,包括了这几天网站找到的一些资料,综合总结出来一些东西,最后附上我写的一个用python操作redis的一个demo: 模块安装 python提供了一个模块redis-py来使我们很方便的操作redis数据库,安装该模块也很简单,直接使用pip安装就行,命令如下: pip install redis 安装完之后,使用import调用一下就能知道是否安装成功,在python界面下输入import redis,如果不报错

使用Spring Data Redis操作Redis(二)

上一篇讲述了Spring Date Redis操作Redis的大部分主题,本篇介绍Redis的订阅和发布功能在Spring应用中的使用. 1. Redis的Pub/Sub命令 Redis的订阅和发布服务有如下图6个命令,下面分别对每个命令做简单说明. publish: 向指定的channel(频道)发送message(消息) subscribe:订阅指定channel,可以一次订阅多个 psubscribe:订阅指定pattern(模式,具有频道名的模式匹配)的频道 unsubscribe:取消

使用Leopard Redis操作Redis

使用Leopard Redis操作Redis 学习如何在旧项目中使用Leopard Redis. 本指南将引导您完成使用Leopard Redis操作Redis. How to complete this guide 你可以从头开始并完成每一个步骤,或者您可以绕过你已经熟悉的基本设置步骤.无论哪种方式,你最终都可以得到可工作的代码. 1.配置maven依赖 在dao模块的pom.xml加入 <dependencies> [...] <dependency> <groupId&