`

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

下面的代码有自己添加的 关于redis设置有效时间的代码
package testJedis;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;

public class TestRedis {
	private Jedis jedis;

	/**
	 * 链接jedis服务器
	 */
	public void setup() {
		// 连接redis服务器,192.168.0.100:6379
		jedis = new Jedis("10.18.154.119", 6379);

		// //权限认证
		// jedis.auth("");
	}

	/**
	 * jedis存储字符串
	 */
	public void saveString() {
		// -----添加数据----------
		jedis.set("name", "xinxin");// 向key-->name中放入了value-->xinxin
		System.out.println(jedis.get("name"));// 执行结果:xinxin

		jedis.append("name", " is my lover"); // 拼接
		System.out.println(jedis.get("name"));

		jedis.del("name"); // 删除某个键
		System.out.println(jedis.get("name"));

		// 设置多个键值对
		jedis.mset("name", "liuling", "age", "23", "qq", "476777XXX");
		jedis.incr("age"); // 进行加1操作

		System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-"
				+ jedis.get("qq"));

	}

	/**
	 * jedis操作map
	 */
	public void oprMap() {

		// -----添加数据----------
		Map<String, String> map = new HashMap<String, String>();
		map.put("name", "xinxin");
		map.put("age", "22");
		map.put("qq", "123456");

		jedis.hmset("user", map);
		// 取出user中的name,执行结果:[minxr]-->注意结果是一个泛型的List

		// 第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数

		List<String> rsmap = jedis.hmget("user", "name", "age", "qq");

		System.out.println(rsmap);

		// 删除map中的某个键值
		jedis.hdel("user", "age");
		System.out.println(jedis.hmget("user", "age")); // 因为删除了,所以返回的是null
		System.out.println(jedis.hlen("user")); // 返回key为user的键中存放的值的个数2
		System.out.println(jedis.exists("user"));// 是否存在key为user的记录 返回true
		System.out.println(jedis.hkeys("user"));// 返回map对象中的所有key
		System.out.println(jedis.hvals("user"));// 返回map对象中的所有value

		Iterator<String> iter = jedis.hkeys("user").iterator();
		while (iter.hasNext()) {
			String key = iter.next();
			System.out.println(key + ":" + jedis.hmget("user", key));
		}
	}

	/**
	 * jedis操作list
	 */
	public void oprList() {
		// 开始前,先移除所有的内容
		jedis.del("java framework");
		System.out.println(jedis.lrange("java framework", 0, -1));
		// 先向key java framework中存放三条数据
		jedis.lpush("java framework", "spring");
		jedis.lpush("java framework", "struts");
		jedis.lpush("java framework", "hibernate");
		// 再取出所有数据jedis.lrange是按范围取出,
		// 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
		System.out.println(jedis.lrange("java framework", 0, -1));

		jedis.del("java framework");
		jedis.rpush("java framework", "spring");
		jedis.rpush("java framework", "struts");
		jedis.rpush("java framework", "hibernate");
		System.out.println(jedis.lrange("java framework", 0, -1));
	}

	/**
	 * jedis操作Set
	 */
	public void testSet() {
		// 添加
		jedis.sadd("user", "liuling");
		jedis.sadd("user", "xinxin");
		jedis.sadd("user", "ling");
		jedis.sadd("user", "zhangxinxin");
		jedis.sadd("user", "who");
		// 移除noname
		jedis.srem("user", "who");
		System.out.println(jedis.smembers("user"));// 获取所有加入的value
		System.out.println(jedis.sismember("user", "who"));// 判断 who
															// 是否是user集合的元素
		System.out.println(jedis.srandmember("user"));
		System.out.println(jedis.scard("user"));// 返回集合的元素个数
	}

	/**
	 * 测试排序
	 *
	 */
	public void test() throws InterruptedException {
		// jedis 排序
		// 注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的)
		jedis.del("a"); // 先清除数据,再加入数据进行测试
		jedis.rpush("a", "1");
		jedis.lpush("a", "6");
		jedis.lpush("a", "3");
		jedis.lpush("a", "9");
		System.out.println(jedis.lrange("a", 0, -1));// [9, 3, 6, 1]
		System.out.println(jedis.sort("a")); // [1, 3, 6, 9] //输入排序后结果
		System.out.println(jedis.lrange("a", 0, -1));
	}

	/**
	 * 操作jekis池
	 */
	public void testRedisPool() {
		RedisUtil.getJedis().set("newname", "中文测试");
		System.out.println(RedisUtil.getJedis().get("newname"));
	}

	/**
	 * 设置键值对的失效时间
	 */
	public void setTimeRedis(String param,int time) {
		jedis.expire(param, time);// 失效时间秒为单位 所以失效时间为60s
	}

	/**
	 * 取消键值对的失效时间
	 */
	public void cancelTimeRedis(String param) {
		System.out.println("移除" + param + "的失效时间");
		jedis.persist(param);
	}

	/**
	 * 查看某个键值对的剩余生存时间  
	 * 如果返回是-1 则表示已经取消了name的失效时间  -1表示永久有效
	 * 如果返回是-2 则表示此键不存在了
	 */
	public void queryNextTime(String param) {
		System.out.println(param + "的剩余生存时间为:" + jedis.ttl(param));
	}

	/**
	 * 测试 测试
	 * @throws InterruptedException 
	 */
	public static void main(String[] args) throws InterruptedException {
		TestRedis tr = new TestRedis();
		tr.setup();
		// tr.saveString();
		System.out.println(tr.getJedis().get("name") + "-"+ tr.getJedis().get("age") + "-" + tr.getJedis().get("qq"));
		//查看原本name的生存时间
		tr.queryNextTime("name"); //这里返回-1 表示永久有效
		// 设置name的生存时间为60秒
		tr.setTimeRedis("name", 10);// 设置为10秒后再做查看
		Thread.sleep(3000);// 三秒后查看他的失效时间
		tr.queryNextTime("name");// 这里还有7秒
		// 过了8秒后再取出来看看是否还存在这个值
		Thread.sleep(8000);
		System.out.println(tr.getJedis().get("name"));//不存在了 为null 然后失效时间返回的-2 表示此键不存在了
		tr.queryNextTime("name"); //再看此时的失效时间
		tr.cancelTimeRedis("name");//移除name的失效时间
		tr.queryNextTime("name"); //再看此时的失效时间
	}

	public Jedis getJedis() {
		return jedis;
	}

	public void setJedis(Jedis jedis) {
		this.jedis = jedis;
	}

}


package testJedis;

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

public class RedisUtil {

    
    //Redis服务器IP  
    private static String ADDR = "10.18.154.119";  
      
    //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;  
      
    /** 
     * 初始化Redis连接池 
     */  
    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);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
      
    /** 
     * 获取Jedis实例 
     * @return 
     */  
    public synchronized static Jedis getJedis() {  
        try {  
            if (jedisPool != null) {  
                Jedis resource = jedisPool.getResource();  
                return resource;  
            } else {  
                return null;  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  
      
    /** 
     * 释放jedis资源 
     * @param jedis 
     */  
    public static void returnResource(final Jedis jedis) {  
        if (jedis != null) {  
            jedisPool.returnResource(jedis);  
        }  
    }  
}


下面有源码的tar包
分享到:
评论

相关推荐

    Jedis操作Redis的案例

    而Jedis是Java语言连接Redis的客户端,提供了丰富的API供开发者进行数据操作。本案例将深入探讨如何利用Jedis在Java环境下与Redis进行交互,涉及的技术栈包括MyBatis持久层框架、Jedis工具类、Servlet以及JSP页面。 ...

    Jedis操作redis服务实例

    在本文中,我们将深入探讨如何使用Jedis进行基本和高级的Redis操作。 首先,我们需要在项目中引入Jedis的依赖。如果你的项目是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;redis.clients ...

    Jedis操作redis代码示例

    本文将深入探讨如何使用Jedis进行Redis操作,并通过具体的代码示例来详细解析其API的使用。 首先,我们需要了解如何添加Jedis依赖到项目中。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml ...

    Jedis 操作Redis 集群demo

    而Jedis是Java语言与Redis交互的主要客户端库,提供了丰富的API供开发者进行操作。本示例主要讨论如何使用Jedis来操作Redis集群。 首先,要理解Redis集群的基本概念。Redis集群是通过将数据分散在多个节点上来实现...

    jedis通过JedisSentinelPool获取jedis操作redis

    jedis通过JedisSentinelPool获取jedis操作redis,通过配置sentienl,获取sentinel连接池,通过sentinel,获取jedis信息

    Java通过Jedis操作Redis

    而Java作为广泛使用的编程语言,通过Jedis库与Redis进行交互,实现了对Redis丰富的操作功能。本文将深入探讨如何使用Java和Jedis来操作Redis,涉及Redis的基本数据类型、主从复制以及事务处理。 首先,让我们了解...

    使用 Jedis 操作 Redis 数据库 博客代码示例

    【Redis】使用 Jedis 操作 Redis 数据库 ② ( Jedis API 规律 | Redis 命令与 Jedis 函数名称基本一致 | Jedis API 使用示例 ) https://hanshuliang.blog.csdn.net/article/details/129128393 博客代码示例

    jedis操作redis工具类,使用该工具类无需配置spring

    在Java项目中,为了简化开发和提高代码复用,通常会创建一个Redis操作的工具类。这个工具类封装了与Redis服务器通信的所有逻辑,开发者只需调用相应的方法即可完成数据的读写操作,无需关心连接管理、命令构建等底层...

    jedis操作Redis

    在提供的压缩包文件`jedisTest`中,可能包含了一个或多个Java测试类,这些类展示了如何使用Jedis进行各种Redis操作。例如,一个简单的测试类可能会包括以下内容: ```java import redis.clients.jedis.Jedis; ...

    Jedis操作Redis数据库的方法

    Jedis操作Redis数据库的方法 Jedis 是 Java 语言中的一种 Redis 客户端库,它提供了便捷的方法来操作 Redis 数据库。下面将详细介绍 Jedis 操作 Redis 数据库的方法。 导包 在使用 Jedis 操作 Redis 数据库之前,...

    Java中利用jedis操作redis示例.zip

    下面我们将深入探讨如何使用Jedis进行Redis操作,并通过实际示例来加深理解。 1. **安装与依赖** 首先,要在Java项目中使用Jedis,需要将其添加为项目的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下...

    spring-data + jedis + redis代码

    3. 创建一个RedisTemplate或StringRedisTemplate bean,这是Spring Data提供的模板类,用于执行Redis操作。 4. 使用Spring Data的注解(如@Repository、@EnableRedisRepositories)来定义仓库接口,并让Spring自动...

    Java使用Jedis操作Redis服务器的实例代码

    Java使用Jedis操作Redis服务器的实例代码 title: Java使用Jedis操作Redis服务器的实例代码 本篇文章主要介绍了Java使用Jedis操作Redis服务器的实例代码,包括Maven配置、简单应用、JedisPool的实现和使用pipeline...

    各种版本的redis+Jedis驱动包

    综上所述,这个压缩包提供了全面的Redis部署选项和Java开发工具,无论是在Windows还是Linux环境下,都可以快速搭建和管理Redis服务器,并使用Jedis进行高效的数据操作。对于初学者和开发者来说,这是一个非常实用的...

    springboot使用Jedis整合redis.zip

    springboot使用Jedis整合redis#SpringBoot笔记(一)SpringBoot基本操作——环境搭建及项目创建(有demo)(二)SpringBoot基本操作——使用IDEA打war包发布及测试(三)SpringBoot基本操作——SpringBoot集成Spring...

    Java中使用Jedis操作Redis的示例代码

    在连接建立后,可以执行各种Redis操作。以下是一些关键操作的示例: 1. **存储字符串**: 使用`set`方法可以将键值对存入Redis。例如: ```java jedis.set("name", "xinxin"); ``` 还可以使用`append`方法...

    Java客户端利用Jedis操作redis缓存示例代码

    Jedis是Redis官方推荐的Java客户端,提供了丰富的API用于操作Redis数据库。本文将深入探讨如何使用Jedis进行Redis缓存操作。 首先,连接Redis服务器是进行所有操作的基础。在Java中,可以通过创建Jedis对象并指定...

    jedis调用redis源码Demo

    jedis调用redis源码Demo,直接导入工程就可以运行。 redis目录下有redis安装文件和入门电子书 redis64-2.8.9.zip redisbin_x32.zip Redis入门指南(JB51.NET).pdf Redis设计与实现.pdf src: FirestJedisTest.java ...

    java客户端Jedis操作Redis Sentinel 连接池的实现方法

    Java 客户端 Jedis 操作 Redis Sentinel 连接池的实现方法 在 Java 中,使用 Jedis 客户端操作 Redis Sentinel 连接池是一种常见的做法。以下是实现方法的详细介绍。 首先,需要在 pom.xml 文件中添加依赖项,包括...

Global site tag (gtag.js) - Google Analytics