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;/**
testString(jedis); testHash(jedis); testList(jedis); testSet(jedis); testZSet(jedis);
Jedis 常用方法用法
*/
public class JedisTest {public static void main(String[] args) {
Jedis jedis = new Jedis("localhost", 6379);
//jedis.auth("admin");System.out.println("\n"); //设置超时时间 System.out.println("> SET mykey \"hello\""); System.out.println(jedis.set("mykey", "hello"));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("> 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("> 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>"> 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("> 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("> 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("> 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("> 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>"> 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>"> 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("> 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>"> HMSET myhash field1 \"Hello\" field2 \"World\""<span style="color: rgba(0, 0, 0, 1)">); Map</span><String, String> map = <span style="color: rgba(0, 0, 255, 1)">new</span> HashMap<String, String><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>"> 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("> 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("> 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>"> 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("> 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("> 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>"> 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("> 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("> 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("> 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>"> 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("> 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("> 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>"> 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("> 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("> 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>"> 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>"> 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("> 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>"> 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>"> 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>"> ZADD myzset 1 \"one\" 1 \"uno\""<span style="color: rgba(0, 0, 0, 1)">); Map</span><String, Double> scoreMembers = <span style="color: rgba(0, 0, 255, 1)">new</span> HashMap<><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>"> 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("> 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>"> 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>"> 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>"> 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>"> 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("> 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>"> 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>"> 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>"> 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>"> 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>"> 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>
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置超时时间(单位:秒)</span> System.out.println("> 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("> 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("> 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>"> 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>"> 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)">); }
}