Java使用Jedis操作Redis大全

Java操作Redis需要导入两个jar:
  •   commons-pool2-2.4.2.jar
  •   jedis-2.1.0.jar
package com.chinasofti.test;

import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;

import org.junit.Before;
import org.junit.Test;

import redis.clients.jedis.Jedis;

/**
 * Java连接Redis测试
 * @author liuhl
 *
 */
public class ConnRedis {

    Jedis jedis;

    @Before
    public void init(){
        jedis = new Jedis("localhost", 6379, 30);
        jedis.auth("admin");
    }

    /**
     * 测试Redis对字符串的操作
     * set():添加一个新字符串
     * append():向已有的key所对应的value上面追加值
     * del():删除某个键
     * mset():设置多个键值对
     * incr(k):对该可以进行+1操作
     * @author liuhl
     */
    @Test
    public void testRedisString(){
        jedis.set("username", "sMith kevens");
        jedis.append("username", "是Redis开发者");
        System.out.println(jedis.get("username")+"------------");
        //删除某个键
        jedis.del("date");
        System.out.println(jedis.get("date")+"======");
        //设置多个键值对
        jedis.mset("nicheng","shubiao","QAge","3","QQnumber","906058683","sex","man");
        jedis.incr("QAge");//进行+1操作
        System.out.println(jedis.get("nicheng")+":"+jedis.get("QAge")+":"+jedis.get("QQnumber")+":"+jedis.get("sex"));
    }

    /**
     * Redis对List的操作
     * llen():获取列表size
     * lpush():向列表左侧插入元素
     * rpush():向列表右侧插入元素
     * lrange("",0,-1):获取列表所有元素
     * @author liuhl
     */
    @Test
    public void testRedisList(){
        //开始前先移除所有的内容
        jedis.del("javaframe work");
        System.out.println(jedis.lrange("java framework", 0, -1));
        //定义列表frame work,并向其中添加三条数据
        jedis.lpush("javaframe work", "struts2");
        jedis.lpush("javaframe work", "spring");
        jedis.lpush("javaframe work", "hibernate");
        System.out.println(jedis.llen("javaframe work")+"个");
        System.out.println(jedis.lrange("javaframe work", 0, -1));

        //向列表右侧添加元素
        jedis.rpush("javaframe work", "ibatis");
        jedis.rpush("javaframe work", "mybatis");
        jedis.rpush("javaframe work", "springmvc");
        System.out.println(jedis.lrange("javaframe work", 0, -1));
    }

    /**
     *Jedis操作无序列表(Set)
     *sadd():向无序列表插入元素
     *smembers():获取所有加入的value
     *srem():移除
     *sismember():判断一个值是不是某个集合的元素,返回boolean
     *scard():返回集合元素的个数
     *srandmember():返回集合中的一个随机元素
     *@author liuhl
     *@return void
     *@category
     */
    @Test
    public void testRedisSet(){
        //向无序集合插入元素
        jedis.sadd("user", "yanbao");
        jedis.sadd("user", "chengyi");
        jedis.sadd("user", "fanwei");
        //移除
        jedis.srem("user", "chengyi");
        System.out.println(jedis.smembers("user"));
        System.err.println(jedis.sismember("user", "yunfei"));
        System.out.println(jedis.scard("user"));
        System.out.println(jedis.srandmember("user"));
    }

    /**
     * 测试列表排序sort
     * redis:Lists是双向链表
     * 排序前先清掉列表,后添加数据测试
     * @exception  InterruptedException:检查异常
     * @author liuhl
     */
    @Test
    public void testListSort() throws InterruptedException{
        jedis.del("arr");
        jedis.lpush("arr", "4");
        jedis.lpush("arr", "78");
        jedis.lpush("arr", "2");
        jedis.lpush("arr", "9");
        jedis.lpush("arr", "7");
        jedis.rpush("arr", "120");
        jedis.rpush("arr", "91");
        jedis.rpush("arr", "88");
        jedis.rpush("arr", "31");
        jedis.rpush("arr", "10");
        System.out.println("排序前:"+jedis.lrange("arr", 0, -1));
        System.out.println("排序后:"+jedis.sort("arr"));

    }

    /**
     *
     * 测试redis有序集合
     * com.chinasofti.test
     * 方法名:testRedisShortZset
     * 创建人:liuhl
     * 时间:2017-4-5-上午10:15:33
     * return: void
     * @exception
     * @since  1.0.0
     * zadd():向有序集合(sorts zsets)中插入一个元素
     * zrange():仅列出所有的元素值。
     */
    @Test
    public void testRedisShortZset(){
        //向有序集合sorts sets插入元素
        jedis.zadd("lhlzset", 6, "http://localhost:8080");
        jedis.zadd("lhlzset", 6, "sort");
        //只列出有序集合的元素
        System.out.println(jedis.zrange("lhlzset", 0, -1));
        System.out.println(jedis.zrangeByScore("lhlzset", 0, 6));

    }

    /**
     *
     * 测试hashs哈希
     * com.chinasofti.test
     * 方法名:testHashs
     * 创建人:liuhl
     * 时间:2017-4-6-上午9:46:04
     * return: void
     * @exception
     * @since  1.0.0
     * hmset():建立hashs并赋值
     * hmget():列出hashs相关
     */
    @Test
    public void testHashs(){
        //建立hashs并赋值
        Map<String, String> map = new HashMap<>();
        map.put("首都", "北京");map.put("河南", "洛阳");map.put("陕西", "西安");
        jedis.hmset("china", map);
        //列出hashs的内容
        System.out.println(jedis.hmget("china", "河南"));

    }
}
package com.chinasofti.test;

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

/**
 * Redis连接池
 *
 * @author Administrator
 *
 */
public class RedisUtils {

    // Redis服务器IP
    private static String ADDR = "127.0.0.1";
    // redis端口号
    private static int PORT = 6379;
    // 访问密码
    private static String AUTH = "admin";
    /**
     * 可用连接实例的最大数目,默认为8,如果赋值为-1,则表示不限制,
     * 如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
     */
    private static int MAX_ACTIVE = 1024;
    // 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
    private static int MAX_IDLE = 200;
    // 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
    private static int MAX_WAIT = 10000;
    private static int TIMEOUT = 10000;
    // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
    private static boolean TEST_ON_BORROW = true;
    private static JedisPool jedisPool = null;
    // 初始化连接池
    static {
        try {
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxActive(MAX_ACTIVE);
            config.setMaxIdle(MAX_IDLE);
            // config.setMaxWait(MAX_WAIT);
            config.setTestOnBorrow(TEST_ON_BORROW);
            // jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH);
            // 注释的这两行为jdk版本问题导致,可忽略
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取redis实例
     */
    public synchronized static Jedis getJedis() {
        try {
            if (jedisPool != null) {
                Jedis jedis = jedisPool.getResource();
                return jedis;
            } else {
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     *
     * @param jedis
     */
    public static void returnResource(final Jedis jedis) {
        if (jedis != null) {
            jedisPool.returnResource(jedis);// 关闭操作已经在此处处理了
        }
    }

}
时间: 2024-10-10 09:12:24

Java使用Jedis操作Redis大全的相关文章

Java中Jedis操作Redis与Spring的整合

Redis是一个key-value存储系统.它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集合).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.为了保证效率,数据都是缓存在内存中.redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步.以下是

Java Spring mvc 操作 Redis 及 Redis 集群

本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5941953.html 关于 Redis 集群搭建可以参考我的另一篇文章 Redis集群搭建与简单使用 Redis 是什么,能做什么 Redis 是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.它支持字符串.哈希表.列表.集合.有序集合,位图,hyperloglogs等数据类型.内置复制.Lua脚本.LRU收回.事务以及不同级别磁盘持久化功能,同时通过Redis

Redis学习-5 Jedis操作Redis

1.Jedis Jedis在java应用中操作Redis; 2.Jedis访问Redis 下载Jedis http://search.maven.org和Commons-Poolx [关闭linux的防火墙] 新建java project 导入jar jedis的jar 新建class,创建jedis对象,连接到Redis服务器, String host = "192.168.1.1"; int port = 6379; Jedis jedis = new Jedis(host,por

四、Jedis操作Redis

前言:  原来我们操作mysql需要用的jdbc,现在操作redis则需要jedis,jedis是客户端,而redis是服务器,使用jedis客户端来操作redis. 在这里要使用jedis操作redis需要引入下面两个jar包 一.Jedis简单操作 1.使用jedis 客户端,完成jedis简单操作: public class JedisTest { @Test() public void setRedis(){ Jedis connection = new Jedis("127.0.0.1

Java中使用Jedis操作Redis

转载:http://www.cnblogs.com/liuling/p/2014-4-19-04.html 使用Java操作Redis需要jedis-2.1.0.jar,下载地址:http://files.cnblogs.com/liuling/jedis-2.1.0.jar.zip 如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar,下载地址:http://files.cnblogs.com/liuling/commons-pool-1.5.4.jar.zip

java中使用jedis操作redis(连接池方式)

1 package com.test; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import java.util.List; 6 import java.util.Map; 7 8 import org.junit.Before; 9 import org.junit.Test; 10 11 import redis.clients.jedis.Jedis; 12 13 public class TestRedis

【转载】Java中使用Jedis操作Redis

1 package com.test; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import java.util.List; 6 import java.util.Map; 7 8 import org.junit.Before; 9 import org.junit.Test; 10 11 import redis.clients.jedis.Jedis; 12 13 public class TestRedis

使用Jedis操作redis

使用Java操作Redis需要jedis-2.1.0.jar,下载地址:http://files.cnblogs.com/liuling/jedis-2.1.0.jar.zip 如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar,下载地址:http://files.cnblogs.com/liuling/commons-pool-1.5.4.jar.zip jedis的基本操作: package com.donghai.redis; import java.uti

使用jedisPool管理jedis,使用jedis操作redis

ps:jedis是redis在java中的客户端操作工具 package com.test; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import java.util.List; 6 import java.util.Map; 7 8 import org.junit.Before; 9 import org.junit.Test; 10 11 import redis.clients.jedis.Jedis; 1