Jedis 是 Redis 官方首选的 Java 客户端开发包。
工作过程总结的一个示例如下:
- package com.wujintao.redis;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
- import org.junit.Test;
- import redis.clients.jedis.Jedis;
- import redis.clients.jedis.Pipeline;
- import redis.clients.jedis.SortingParams;
- import com.wujintao.redis.util.RedisUtil;
- public class TestCase {
- /**
- * 在不同的线程中使用相同的Jedis实例会发生奇怪的错误。但是创建太多的实现也不好因为这意味着会建立很多sokcet连接,
- * 也会导致奇怪的错误发生。单一Jedis实例不是线程安全的。为了避免这些问题,可以使用JedisPool,
- * JedisPool是一个线程安全的网络连接池。可以用JedisPool创建一些可靠Jedis实例,可以从池中拿到Jedis的实例。
- * 这种方式可以解决那些问题并且会实现高效的性能
- */
- public static void main(String[] args) {
- // ...when closing your application:
- RedisUtil.getPool().destroy();
- }
- public static void Hello() {
- Jedis jedis = RedisUtil.getJedis();
- try {
- // 向key-->name中放入了value-->minxr
- jedis.set("name", "minxr");
- String ss = jedis.get("name");
- System.out.println(ss);
- // 很直观,类似map 将jintao append到已经有的value之后
- jedis.append("name", "jintao");
- ss = jedis.get("name");
- System.out.println(ss);
- // 2、直接覆盖原来的数据
- jedis.set("name", "jintao");
- System.out.println(jedis.get("jintao"));
- // 删除key对应的记录
- jedis.del("name");
- System.out.println(jedis.get("name"));// 执行结果:null
- /**
- * mset相当于 jedis.set("name","minxr"); jedis.set("jarorwar","aaa");
- */
- jedis.mset("name", "minxr", "jarorwar", "aaa");
- System.out.println(jedis.mget("name", "jarorwar"));
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- RedisUtil.getPool().returnResource(jedis);
- }
- }
- private void testKey() {
- Jedis jedis = RedisUtil.getJedis();
- System.out.println("=============key==========================");
- // 清空数据
- System.out.println(jedis.flushDB());
- System.out.println(jedis.echo("foo"));
- // 判断key否存在
- System.out.println(jedis.exists("foo"));
- jedis.set("key", "values");
- System.out.println(jedis.exists("key"));
- }
- public static void testString() {
- System.out.println("==String==");
- Jedis jedis = RedisUtil.getJedis();
- try {
- // String
- jedis.set("key", "Hello World!");
- String value = jedis.get("key");
- System.out.println(value);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- RedisUtil.getPool().returnResource(jedis);
- }
- System.out.println("=============String==========================");
- // 清空数据
- System.out.println(jedis.flushDB());
- // 存储数据
- jedis.set("foo", "bar");
- System.out.println(jedis.get("foo"));
- // 若key不存在,则存储
- jedis.setnx("foo", "foo not exits");
- System.out.println(jedis.get("foo"));
- // 覆盖数据
- jedis.set("foo", "foo update");
- System.out.println(jedis.get("foo"));
- // 追加数据
- jedis.append("foo", " hello, world");
- System.out.println(jedis.get("foo"));
- // 设置key的有效期,并存储数据
- jedis.setex("foo", 2, "foo not exits");
- System.out.println(jedis.get("foo"));
- try {
- Thread.sleep(3000);
- } catch (InterruptedException e) {
- }
- System.out.println(jedis.get("foo"));
- // 获取并更改数据
- jedis.set("foo", "foo update");
- System.out.println(jedis.getSet("foo", "foo modify"));
- // 截取value的值
- System.out.println(jedis.getrange("foo", 1, 3));
- System.out.println(jedis.mset("mset1", "mvalue1", "mset2", "mvalue2",
- "mset3", "mvalue3", "mset4", "mvalue4"));
- System.out.println(jedis.mget("mset1", "mset2", "mset3", "mset4"));
- System.out.println(jedis.del(new String[] { "foo", "foo1", "foo3" }));
- }
- public static void testList() {
- System.out.println("==List==");
- Jedis jedis = RedisUtil.getJedis();
- try {
- // 开始前,先移除所有的内容
- jedis.del("messages");
- jedis.rpush("messages", "Hello how are you?");
- jedis.rpush("messages", "Fine thanks. I'm having fun with redis.");
- jedis.rpush("messages", "I should look into this NOSQL thing ASAP");
- // 再取出所有数据jedis.lrange是按范围取出,
- // 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
- List<String> values = jedis.lrange("messages", 0, -1);
- System.out.println(values);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- RedisUtil.getPool().returnResource(jedis);
- }
- // 清空数据
- System.out.println(jedis.flushDB());
- // 添加数据
- jedis.lpush("lists", "vector");
- jedis.lpush("lists", "ArrayList");
- jedis.lpush("lists", "LinkedList");
- // 数组长度
- System.out.println(jedis.llen("lists"));
- // 排序
- System.out.println(jedis.sort("lists"));
- // 字串
- System.out.println(jedis.lrange("lists", 0, 3));
- // 修改列表中单个值
- jedis.lset("lists", 0, "hello list!");
- // 获取列表指定下标的值
- System.out.println(jedis.lindex("lists", 1));
- // 删除列表指定下标的值
- System.out.println(jedis.lrem("lists", 1, "vector"));
- // 删除区间以外的数据
- System.out.println(jedis.ltrim("lists", 0, 1));
- // 列表出栈
- System.out.println(jedis.lpop("lists"));
- // 整个列表值
- System.out.println(jedis.lrange("lists", 0, -1));
- }
- public static void testSet() {
- System.out.println("==Set==");
- Jedis jedis = RedisUtil.getJedis();
- try {
- jedis.sadd("myset", "1");
- jedis.sadd("myset", "2");
- jedis.sadd("myset", "3");
- jedis.sadd("myset", "4");
- Set<String> setValues = jedis.smembers("myset");
- System.out.println(setValues);
- // 移除noname
- jedis.srem("myset", "4");
- System.out.println(jedis.smembers("myset"));// 获取所有加入的value
- System.out.println(jedis.sismember("myset", "4"));// 判断 minxr
- // 是否是sname集合的元素
- System.out.println(jedis.scard("sname"));// 返回集合的元素个数
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- RedisUtil.getPool().returnResource(jedis);
- }
- // 清空数据
- System.out.println(jedis.flushDB());
- // 添加数据
- jedis.sadd("sets", "HashSet");
- jedis.sadd("sets", "SortedSet");
- jedis.sadd("sets", "TreeSet");
- // 判断value是否在列表中
- System.out.println(jedis.sismember("sets"