Redis JAVA客户端 Jedis常用方法

Jedis 是 Redis 官方首选的 Java 客户端开发包 (redis 的 java 版本的客户端实现)

#MAVEN 配置

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

#JAVA 代码

package yyl.example.demo.redis;
import java.util.HashMap;
import java.util.Map;
import redis.clients.jedis.Jedis;

/**

  • Jedis 常用方法用法
    */
    public class JedisTest {

    public static void main(String[] args) {
    Jedis jedis
    = new Jedis("localhost", 6379);
    //jedis.auth("admin");

testString(jedis); testHash(jedis); testList(jedis); testSet(jedis); testZSet(jedis);
    testCommands(jedis);

    jedis.disconnect();
}

</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)"> 字符串 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> testString(Jedis jedis) {

    System.out.println(</span>"#string:"<span style="color: rgba(0, 0, 0, 1)">);

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"># SET key "hello"</span>
    System.out.println("&gt; SET key \"hello\""<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.set(</span>"key", "hello"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"># GET key</span>
    System.out.println("&gt; GET key"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.get(</span>"key"<span style="color: rgba(0, 0, 0, 1)">));

    System.out.println(</span>"&gt; APPEND key \" world\""<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.append(</span>"key", " world")); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">拼接</span>
    System.out.println("&gt; GET key"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.get(</span>"key"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">删除某个键  #DEL key [key ...] </span>
    System.out.println("&gt; DEL key"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.del(</span>"key")); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">删除某个键</span>
    System.out.println("&gt; GET key"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.get(</span>"key"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置多个键值
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">#MSET key1 "Hello" key2 "World"</span>
    System.out.println("&gt; MSET key1 \"Hello\" key2 \"World\""<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.mset(</span>"key1", "hello", "key2", "World"<span style="color: rgba(0, 0, 0, 1)">));

    System.out.println(</span>"&gt; GET key1"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.get(</span>"key1"<span style="color: rgba(0, 0, 0, 1)">));
    System.out.println(</span>"&gt; GET key2"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.get(</span>"key2"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">删除一组键  #DEL key1 key2 </span>
    System.out.println("&gt; DEL key1 key2"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.del(</span>"key1", "key2"<span style="color: rgba(0, 0, 0, 1)">));
    System.out.println(jedis.get(</span>"key2"<span style="color: rgba(0, 0, 0, 1)">));

    System.out.println(</span>"\n"<span style="color: rgba(0, 0, 0, 1)">);
}

</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)"> 哈希 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> testHash(Jedis jedis) {

    System.out.println(</span>"#hash:"<span style="color: rgba(0, 0, 0, 1)">);

    System.out.println(</span>"&gt; HMSET myhash field1 \"Hello\" field2 \"World\""<span style="color: rgba(0, 0, 0, 1)">);
    Map</span>&lt;String, String&gt; map = <span style="color: rgba(0, 0, 255, 1)">new</span> HashMap&lt;String, String&gt;<span style="color: rgba(0, 0, 0, 1)">();
    map.put(</span>"field1", "Hello"<span style="color: rgba(0, 0, 0, 1)">);
    map.put(</span>"field2", "World"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.hmset(</span>"myhash"<span style="color: rgba(0, 0, 0, 1)">, map));

    System.out.println(</span>"&gt; HMGET myhash field1 field2"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.hmget(</span>"myhash", "field1", "field2"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">返回 key 指定的哈希集中所有的字段和值。</span>
    System.out.println("&gt; HGETALL myhash"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.hgetAll(</span>"myhash"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">删除map中的某个键值  </span>
    System.out.println("&gt; HDEL myhash field1"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.hdel(</span>"myhash", "field1"<span style="color: rgba(0, 0, 0, 1)">));
    System.out.println(</span>"&gt; HDEL myhash field1"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.hdel(</span>"myhash", "field1"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">返回 key 指定的哈希集包含的字段的数量</span>
    System.out.println("&gt; HLEN myhash"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.hlen(</span>"myhash"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置 key 指定的哈希集中指定字段的值</span>
    System.out.println("&gt; HSET myhash field1 \"Hello\""<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.hset(</span>"myhash", "field1", "Hello"<span style="color: rgba(0, 0, 0, 1)">));
    System.out.println(</span>"&gt; HGET myhash field1"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.hget(</span>"myhash", "field1"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">返回指定的哈希集中所有字段的名字</span>
    System.out.println("&gt; HKEYS myhash"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.hkeys(</span>"myhash"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">移除哈希</span>
    jedis.del("myhash"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(</span>"\n"<span style="color: rgba(0, 0, 0, 1)">);
}

</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)"> 列表 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> testList(Jedis jedis) {

    System.out.println(</span>"#list:"<span style="color: rgba(0, 0, 0, 1)">);

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">将所有指定的值插入到存于 key 的列表的头部
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">如果 key 不存在,那么在进行 push 操作前会创建一个空列表
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">如果 key 对应的值不是一个 list 的话,那么会抛出异常</span>
    System.out.println("&gt; HKEYS myhash"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.lpush(</span>"mylist", "hello"<span style="color: rgba(0, 0, 0, 1)">));
    System.out.println(jedis.lpush(</span>"mylist", "world"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">返回存储在列表里指定范围内的元素
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">(偏移量也可以是负数,表示偏移量是从list尾部开始计数。 例如, -1 表示列表的最后一个元素,-2 是倒数第二个,以此类推)</span>
    System.out.println("&gt;  LRANGE mylist 0 -1"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.lrange(</span>"mylist", 0, -1<span style="color: rgba(0, 0, 0, 1)">));

    System.out.println(</span>"&gt; DEL mylist"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.del(</span>"mylist"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">向存于 key 的列表的尾部插入所有指定的值</span>
    System.out.println("&gt; RPUSH mylist \"1\" \"2\" \"3\" \"4\" \"5\""<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.rpush(</span>"mylist", "1", "2", "3", "4", "5"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">移除并且返回list的第一个元素</span>
    System.out.println("&gt; LPOP mylist"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.lpop(</span>"mylist"<span style="color: rgba(0, 0, 0, 1)">));
    System.out.println(</span>"&gt; LPOP mylist"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.lpop(</span>"mylist"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">返回存储在 key 里的list的长度</span>
    System.out.println("&gt; LLEN mylist"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.llen(</span>"mylist"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">移除列表</span>
    jedis.del("mylist"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(</span>"\n"<span style="color: rgba(0, 0, 0, 1)">);
}

</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)"> 集合 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> testSet(Jedis jedis) {

    System.out.println(</span>"#set:"<span style="color: rgba(0, 0, 0, 1)">);

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">添加元素</span>
    System.out.println("&gt; SADD myset \"Hello\""<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.sadd(</span>"myset", "Hello"<span style="color: rgba(0, 0, 0, 1)">));
    System.out.println(</span>"&gt; SADD myset \"World\""<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.sadd(</span>"myset", "World"<span style="color: rgba(0, 0, 0, 1)">));
    System.out.println(</span>"&gt; SADD myset \"World\""<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.sadd(</span>"myset", "World"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取集合成员(元素)</span>
    System.out.println("&gt; SMEMBERS myset"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.smembers(</span>"myset"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">移除集合</span>
    jedis.del("myset"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(</span>"\n"<span style="color: rgba(0, 0, 0, 1)">);
}

</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)"> 有序集合 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> testZSet(Jedis jedis) {
    System.out.println(</span>"#zset:"<span style="color: rgba(0, 0, 0, 1)">);

    System.out.println(</span>"&gt; ZADD myzset 3 \"three\""<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.zadd(</span>"myzset", 3, "three"<span style="color: rgba(0, 0, 0, 1)">));

    System.out.println(</span>"&gt; ZADD myzset 1 \"two\""<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.zadd(</span>"myzset", 2, "two"<span style="color: rgba(0, 0, 0, 1)">));

    System.out.println(</span>"&gt; ZADD myzset 1 \"one\" 1 \"uno\""<span style="color: rgba(0, 0, 0, 1)">);
    Map</span>&lt;String, Double&gt; scoreMembers = <span style="color: rgba(0, 0, 255, 1)">new</span> HashMap&lt;&gt;<span style="color: rgba(0, 0, 0, 1)">();
    scoreMembers.put(</span>"one"<span style="color: rgba(0, 0, 0, 1)">, 1D);
    scoreMembers.put(</span>"uno"<span style="color: rgba(0, 0, 0, 1)">, 1D);
    System.out.println(jedis.zadd(</span>"myzset"<span style="color: rgba(0, 0, 0, 1)">, scoreMembers));

    System.out.println(</span>"&gt; ZRANGE myzset 0 -1"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.zrange(</span>"myzset", 0, -1<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">移除集合</span>
    jedis.del("myzset"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(</span>"\n"<span style="color: rgba(0, 0, 0, 1)">);
}

</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)"> 其他常用操作 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> testCommands(Jedis jedis) {

    System.out.println(</span>"#COMMANDS:"<span style="color: rgba(0, 0, 0, 1)">);

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"># 返回key所存储的value的数据结构类型</span>
    System.out.println("&gt; SET key1 \"value\""<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.set(</span>"key1", "value"<span style="color: rgba(0, 0, 0, 1)">));
    System.out.println(</span>"&gt; HSET key2 field \"value\""<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.hset(</span>"key2", "field", "value"<span style="color: rgba(0, 0, 0, 1)">));
    System.out.println(</span>"&gt; LPUSH key3 \"value\""<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.lpush(</span>"key3", "value"<span style="color: rgba(0, 0, 0, 1)">));
    System.out.println(</span>"&gt; SADD key4 \"value\""<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.sadd(</span>"key4", "value"<span style="color: rgba(0, 0, 0, 1)">));
    System.out.println(</span>"&gt; ZADD key5 \"value\""<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.zadd(</span>"key5", 0, "value"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">type可以返回string, list, set, zset , hash, none 等不同的类型。</span>
    System.out.println("&gt; TYPE key1"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.type(</span>"key1"<span style="color: rgba(0, 0, 0, 1)">));
    System.out.println(</span>"&gt; TYPE key2"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.type(</span>"key2"<span style="color: rgba(0, 0, 0, 1)">));
    System.out.println(</span>"&gt; TYPE key3"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.type(</span>"key3"<span style="color: rgba(0, 0, 0, 1)">));
    System.out.println(</span>"&gt; TYPE key4"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.type(</span>"key4"<span style="color: rgba(0, 0, 0, 1)">));
    System.out.println(</span>"&gt; TYPE key5"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.type(</span>"key5"<span style="color: rgba(0, 0, 0, 1)">));
    System.out.println(</span>"&gt; TYPE key6"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.type(</span>"key6"));<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不存在时返回none</span>
System.out.println("\n"); //设置超时时间 System.out.println("> SET mykey \"hello\""); System.out.println(jedis.set("mykey", "hello"));
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置超时时间(单位:秒)</span>
    System.out.println("&gt; EXPIRE mykey 2 "<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.expire(</span>"mykey", 2));<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">[EXPIRE key seconds]

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">返回key剩余的过期时间(单位:秒)</span>
    System.out.println("&gt; TTL mykey "<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.ttl(</span>"mykey"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">返回key剩余的过期时间(单位:毫秒)</span>
    System.out.println("&gt; PTTL mykey "<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.pttl(</span>"mykey"<span style="color: rgba(0, 0, 0, 1)">));

    System.out.println(</span>"&gt; EXISTS mykey "<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.exists(</span>"mykey"<span style="color: rgba(0, 0, 0, 1)">));

    System.out.println(</span>"# sleep 2000 Millisecond!"<span style="color: rgba(0, 0, 0, 1)">);
    </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
        Thread.sleep(</span>2 * 1000<span style="color: rgba(0, 0, 0, 1)">);
    } </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (InterruptedException e) {
    }

    System.out.println(</span>"&gt; EXISTS mykey "<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(jedis.exists(</span>"mykey"<span style="color: rgba(0, 0, 0, 1)">));

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">移除</span>
    jedis.del("mykey", "key1", "key2", "key3", "key4", "key5"<span style="color: rgba(0, 0, 0, 1)">);
    System.out.println(</span>"\n"<span style="color: rgba(0, 0, 0, 1)">);
}

}