Jedis几个简单测试例子

6 篇文章 0 订阅
package redis.test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

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

/**
 * Created by Tony
 */
public class JedisUtilTest {
	JedisPool pool;
	Jedis jedis;

	@Before
	public void setUp() {
		pool = new JedisPool(new JedisPoolConfig(), "127.0.0.1");
		jedis = pool.getResource();
		// jedis.auth("password");
	}

	@Test
	public void testGet() {
		System.out.println(jedis.get("lu"));
	}

	/**
	 * Redis存储初级的字符串 CRUD
	 */
	@Test
	public void testBasicString() {
		// -----添加数据----------
		jedis.set("name", "minxr");// 向key-->name中放入了value-->minxr
		System.out.println(jedis.get("name"));// 执行结果:minxr
		// -----修改数据-----------
		// 1、在原来基础上修改
		jedis.append("name", "jarorwar"); // 很直观,类似map 将jarorwar
											// append到已经有的value之后
		System.out.println(jedis.get("name"));// 执行结果:minxrjarorwar
		// 2、直接覆盖原来的数据
		jedis.set("name", "tony");
		System.out.println(jedis.get("name"));// 执行结果:tony
		// 删除key对应的记录
		jedis.del("name");
		System.out.println(jedis.get("name"));// 执行结果:null
		/**
		 * mset相当于 jedis.set("name","minxr"); jedis.set("jarorwar","tony");
		 */
		jedis.mset("name", "minxr", "jarorwar", "tony");
		System.out.println(jedis.mget("name", "jarorwar"));
	}

	/**
	 * jedis操作Map
	 */
	@Test
	public void testMap() {
		Map<String, String> user = new HashMap<String, String>();
		user.put("name", "minxr");
		user.put("pwd", "password");
		jedis.hmset("user", user);
		// 取出user中的name,执行结果:[minxr]-->注意结果是一个泛型的List
		// 第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数
		List<String> rsmap = jedis.hmget("user", "name");
		System.out.println(rsmap);
		// 删除map中的某个键值
		// jedis.hdel("user","pwd");
		System.out.println(jedis.hmget("user", "pwd")); // 因为删除了,所以返回的是null
		System.out.println(jedis.hlen("user")); // 返回key为user的键中存放的值的个数1
		System.out.println(jedis.exists("user"));// 是否存在key为user的记录 返回true
		System.out.println(jedis.hkeys("user"));// 返回map对象中的所有key [pwd, name]
		System.out.println(jedis.hvals("user"));// 返回map对象中的所有value [minxr,
												// password]
		Iterator<String> iter = jedis.hkeys("user").iterator();
		while (iter.hasNext()) {
			String key = iter.next();
			System.out.println(key + ":" + jedis.hmget("user", key));
		}
	}

	/**
	 * jedis操作List
	 */
	@Test
	public void testList() {
		// 开始前,先移除所有的内容
		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操作Set
	 */
	@Test
	public void testSet() {
		// 添加
		jedis.sadd("sname", "minxr");
		jedis.sadd("sname", "jarorwar");
		jedis.sadd("sname", "tony");
		jedis.sadd("sanme", "noname");
		// 移除noname
		jedis.srem("sname", "noname");
		System.out.println(jedis.smembers("sname"));// 获取所有加入的value
		System.out.println(jedis.sismember("sname", "minxr"));// 判断 minxr
																// 是否是sname集合的元素
		System.out.println(jedis.srandmember("sname"));
		System.out.println(jedis.scard("sname"));// 返回集合的元素个数
	}

	@Test
	public void test() throws InterruptedException {
		// keys中传入的可以用通配符
		System.out.println(jedis.keys("*")); // 返回当前库中所有的key [sose, sanme, name,
												// jarorwar, foo, sname, java
												// framework, user, braand]
		System.out.println(jedis.keys("*name"));// 返回的sname [sname, name]
		System.out.println(jedis.del("sanmdde"));// 删除key为sanmdde的对象 删除成功返回1
													// 删除失败(或者不存在)返回 0
		System.out.println(jedis.ttl("sname"));// 返回给定key的有效时间,如果是-1则表示永远有效
		jedis.setex("timekey", 10, "min");// 通过此方法,可以指定key的存活(有效时间) 时间为秒
		Thread.sleep(5000);// 睡眠5秒后,剩余时间将为<=5
		System.out.println(jedis.ttl("timekey")); // 输出结果为5
		jedis.setex("timekey", 1, "min"); // 设为1后,下面再看剩余时间就是1了
		System.out.println(jedis.ttl("timekey")); // 输出结果为1
		System.out.println(jedis.exists("key"));// 检查key是否存在
												// System.out.println(jedis.rename("timekey","time"));
		System.out.println(jedis.get("timekey"));// 因为移除,返回为null
		System.out.println(jedis.get("time")); // 因为将timekey 重命名为time 所以可以取得值
												// min
		// 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));
		
		System.out.println(jedis.blpop(0, "a"));
	}
}
package redis.test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.exceptions.JedisConnectionException;


public class FirstClient {

	private static Jedis jedis = new Jedis("localhost");

	public void testConn() {
		try {
			jedis.connect();
			jedis.ping();
			jedis.quit();
		} catch (JedisConnectionException e) {
			e.printStackTrace();
		}
	}

	public void setTest() {
		try {
			//EXPIRE key seconds 为给定key设置生存时间。当key过期时,它会被自动删除。
			jedis.expire("messages", 10);//10秒过期
			//EXPIREAT EXPIREAT的作用和EXPIRE一样,都用于为key设置生存时间。不同在于EXPIREAT命令接受的时间参数是UNIX时间戳(unix timestamp)。
			
			for (int i = 0; i < 100; i++) {
				//jedis.set("key" + i, "value" + i);
				jedis.rpush("messages", "value" + i);
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void getTest() {
		try {
			for (int i = 0; i < 100; i++) {
				//System.out.println(jedis.get("key" + i));
				//System.out.println(jedis.lrange("messages",  i,  i));
				//处于阻塞等待状态
				System.out.println(jedis.blpop(0, "messages"));//接收了数据后,队列里就没有数据了
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public void detTest(){
		jedis.del("messages");
	}

	public static void main(String[] args) {
		FirstClient client = new FirstClient();
		//client.setTest();
		client.getTest();
		//client.detTest();
		System.exit(0);
	}

}
package redis.test;

import java.util.List;

import redis.clients.jedis.Jedis;

/**
 * 系统名称:XXXXXXXX(redis-test)<br>
 * 所属模块:XXXXXXXXXXXXXX<br>
 * 功能描述:XXXXXXXXXXXXXX<br>
 * 文件名:redis.test.RedisTest.java<br>
 * 版本信息:1.00<br>
 * 
 * 开发部门:XXXXX<br>
 * 创建者: Administrator<br>
 * 创建时间:2014-12-2 上午11:51:30<br>
 * 修改者: Administrator<br>
 * 修改时间:2014-12-2 上午11:51:30<br>
 */

public class RedisTest {
	
	/**
	   * @param args
	   */
	  public static void main(String[] args) {
	    Jedis jedis = new Jedis("192.168.2.128", 6379, 0);
	    String value;
	    // 1. k-v存储
	    jedis.set("name", "helloword");
	    value = jedis.get("name");
	    System.out.println("1: " + value);
	    // 2. 将新增的值添加到旧值后面
	    jedis.append("name", " append new info,");
	    value = jedis.get("name");
	    System.out.println("2: " + value);
	    // 3. 删除key对应的记录
	    // jedis.del("name");
	    // value = jedis.get("name");
	    // System.out.println("3: " + value);
	    // 4. 批量设值
	    jedis.mset("name1", "minxr", "name2", "aaa");
	    System.out.println("4: " + jedis.mget("name1", "name2"));
	    // 5. 清空数据,所有的
	    // System.out.println(jedis.flushDB());
	    // 6. 截取value的值
	    System.out.println("6: " + jedis.getrange("name", 1, 3));
	    // 7.按通配符模糊查找符合条件的key
	    System.out.println("7: " + jedis.keys("*na*"));
	    // 8. 数据库大小
	    System.out.println("8: " + jedis.dbSize());

	    // 9. k-v存储,v表示的List(队列形式)   //先进先出
	    jedis.del("messages");
	    jedis.rpush("messages", "how");
	    jedis.rpush("messages", "are");
	    jedis.rpush("messages", "you");
	    // 返回messages对应的集合长度
	    System.out.println("9: " + jedis.llen("messages"));
	    // 取数据,第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
	    List<String> values = jedis.lrange("messages", 0, 1);
	    System.out.println("9: " + values);

	    // 10. k-v存储,v表示的List(堆栈形式)  //后进先出
	    jedis.del("desc");
	    jedis.lpush("desc", "1");
	    jedis.lpush("desc", "2");
	    jedis.lpush("desc", "3");
	    jedis.lpush("desc", "4");
	    // 数组长度
	    System.out.println("10: " + jedis.llen("desc"));
	    System.out.println("10: " + jedis.lrange("desc", 0, -1));

	    // 11. 取出库中所有的key
	    for (String a : jedis.keys("*")) {
	      System.out.println("======================");
	      System.out.println(a);
	    }

	  }

}



  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,我来解答你的问题。 首先,我们需要在项目中引入 Jedis 和 Redis 相关依赖,然后在代码中创建 Jedis 对象,连接 Redis 数据库。接着,我们可以使用 Jedis 对象进行 Redis 操作,例如对 List 进行操作。 以下是一个简单的 List 测试代码示例: ```java import redis.clients.jedis.Jedis; import java.util.List; public class RedisListTest { public static void main(String[] args) { //连接 Redis 数据库 Jedis jedis = new Jedis("localhost", 6379); //清空 Redis 数据库 jedis.flushDB(); //向 List 中添加元素 jedis.lpush("myList", "a", "b", "c"); //获取 List 中的元素 List<String> myList = jedis.lrange("myList", 0, -1); System.out.println("List 中的元素为:" + myList); //获取 List 的长度 long length = jedis.llen("myList"); System.out.println("List 的长度为:" + length); //弹出 List 中的元素 String element = jedis.lpop("myList"); System.out.println("弹出的元素为:" + element); //获取 List 中的元素 myList = jedis.lrange("myList", 0, -1); System.out.println("List 中的元素为:" + myList); //关闭连接 jedis.close(); } } ``` 在这个示例中,我们首先连接 Redis 数据库并清空其中的数据。然后,我们通过 `lpush` 方法向 List 中添加元素,使用 `lrange` 方法获取 List 中的元素,使用 `llen` 方法获取 List 的长度,使用 `lpop` 方法弹出 List 中的元素,并再次使用 `lrange` 方法获取 List 中的元素。最后,我们关闭了与 Redis 数据库的连接。 希望这个示例能够帮助你理解如何使用 Jedis 操作 Redis 中的 List。如果你有其他问题,欢迎继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值