文档章节

使用Jedis操作redis

G
 Galanodel
发布于 2017/05/05 09:35
字数 1070
阅读 9
收藏 0

Redis是一个开源的Key-Value数据缓存,和Memcached类似。

Redis多种类型的value,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。

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();
	}

	/** 字符串 */
	private static void testString(Jedis jedis) {

		System.out.println("#string:");

		//# SET key "hello"
		System.out.println("> SET key \"hello\"");
		System.out.println(jedis.set("key", "hello"));

		//# GET key
		System.out.println("> GET key");
		System.out.println(jedis.get("key"));

		System.out.println("> APPEND key \" world\"");
		System.out.println(jedis.append("key", " world")); //拼接
		System.out.println("> GET key");
		System.out.println(jedis.get("key"));

		//删除某个键  #DEL key [key ...] 
		System.out.println("> DEL key");
		System.out.println(jedis.del("key")); //删除某个键
		System.out.println("> GET key");
		System.out.println(jedis.get("key"));

		//设置多个键值
		//#MSET key1 "Hello" key2 "World"
		System.out.println("> MSET key1 \"Hello\" key2 \"World\"");
		System.out.println(jedis.mset("key1", "hello", "key2", "World"));

		System.out.println("> GET key1");
		System.out.println(jedis.get("key1"));
		System.out.println("> GET key2");
		System.out.println(jedis.get("key2"));

		//删除一组键  #DEL key1 key2 
		System.out.println("> DEL key1 key2");
		System.out.println(jedis.del("key1", "key2"));
		System.out.println(jedis.get("key2"));

		System.out.println("\n");
	}

	/** 哈希 */
	private static void testHash(Jedis jedis) {

		System.out.println("#hash:");

		System.out.println("> HMSET myhash field1 \"Hello\" field2 \"World\"");
		Map<String, String> map = new HashMap<String, String>();
		map.put("field1", "Hello");
		map.put("field2", "World");
		System.out.println(jedis.hmset("myhash", map));

		System.out.println("> HMGET myhash field1 field2");
		System.out.println(jedis.hmget("myhash", "field1", "field2"));

		//返回 key 指定的哈希集中所有的字段和值。
		System.out.println("> HGETALL myhash");
		System.out.println(jedis.hgetAll("myhash"));

		//删除map中的某个键值  
		System.out.println("> HDEL myhash field1");
		System.out.println(jedis.hdel("myhash", "field1"));
		System.out.println("> HDEL myhash field1");
		System.out.println(jedis.hdel("myhash", "field1"));

		//返回 key 指定的哈希集包含的字段的数量
		System.out.println("> HLEN myhash");
		System.out.println(jedis.hlen("myhash"));

		//设置 key 指定的哈希集中指定字段的值
		System.out.println("> HSET myhash field1 \"Hello\"");
		System.out.println(jedis.hset("myhash", "field1", "Hello"));
		System.out.println("> HGET myhash field1");
		System.out.println(jedis.hget("myhash", "field1"));

		//返回指定的哈希集中所有字段的名字
		System.out.println("> HKEYS myhash");
		System.out.println(jedis.hkeys("myhash"));

		//移除哈希
		jedis.del("myhash");
		System.out.println("\n");
	}

	/** 列表 */
	private static void testList(Jedis jedis) {

		System.out.println("#list:");

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

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

		System.out.println("> DEL mylist");
		System.out.println(jedis.del("mylist"));

		//向存于 key 的列表的尾部插入所有指定的值
		System.out.println("> RPUSH mylist \"1\" \"2\" \"3\" \"4\" \"5\"");
		System.out.println(jedis.rpush("mylist", "1", "2", "3", "4", "5"));

		//移除并且返回list的第一个元素
		System.out.println("> LPOP mylist");
		System.out.println(jedis.lpop("mylist"));
		System.out.println("> LPOP mylist");
		System.out.println(jedis.lpop("mylist"));

		//返回存储在 key 里的list的长度
		System.out.println("> LLEN mylist");
		System.out.println(jedis.llen("mylist"));

		//移除列表
		jedis.del("mylist");
		System.out.println("\n");
	}

	/** 集合 */
	private static void testSet(Jedis jedis) {

		System.out.println("#set:");

		//添加元素
		System.out.println("> SADD myset \"Hello\"");
		System.out.println(jedis.sadd("myset", "Hello"));
		System.out.println("> SADD myset \"World\"");
		System.out.println(jedis.sadd("myset", "World"));
		System.out.println("> SADD myset \"World\"");
		System.out.println(jedis.sadd("myset", "World"));

		//获取集合成员(元素)
		System.out.println("> SMEMBERS myset");
		System.out.println(jedis.smembers("myset"));

		//移除集合
		jedis.del("myset");
		System.out.println("\n");
	}

	/** 有序集合 */
	private static void testZSet(Jedis jedis) {
		System.out.println("#zset:");

		System.out.println("> ZADD myzset 3 \"three\"");
		System.out.println(jedis.zadd("myzset", 3, "three"));

		System.out.println("> ZADD myzset 1 \"two\"");
		System.out.println(jedis.zadd("myzset", 2, "two"));

		System.out.println("> ZADD myzset 1 \"one\" 1 \"uno\"");
		Map<String, Double> scoreMembers = new HashMap<>();
		scoreMembers.put("one", 1D);
		scoreMembers.put("uno", 1D);
		System.out.println(jedis.zadd("myzset", scoreMembers));

		System.out.println("> ZRANGE myzset 0 -1");
		System.out.println(jedis.zrange("myzset", 0, -1));

		//移除集合
		jedis.del("myzset");
		System.out.println("\n");
	}

	/** 其他常用操作 */
	private static void testCommands(Jedis jedis) {

		System.out.println("#COMMANDS:");

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

		//type可以返回string, list, set, zset , hash, none 等不同的类型。
		System.out.println("> TYPE key1");
		System.out.println(jedis.type("key1"));
		System.out.println("> TYPE key2");
		System.out.println(jedis.type("key2"));
		System.out.println("> TYPE key3");
		System.out.println(jedis.type("key3"));
		System.out.println("> TYPE key4");
		System.out.println(jedis.type("key4"));
		System.out.println("> TYPE key5");
		System.out.println(jedis.type("key5"));
		System.out.println("> TYPE key6");
		System.out.println(jedis.type("key6"));//不存在时返回none

		System.out.println("\n");
		//设置超时时间
		System.out.println("> SET mykey \"hello\"");
		System.out.println(jedis.set("mykey", "hello"));

		//设置超时时间(单位:秒)
		System.out.println("> EXPIRE mykey 2 ");
		System.out.println(jedis.expire("mykey", 2));//[EXPIRE key seconds]

		//返回key剩余的过期时间(单位:秒)
		System.out.println("> TTL mykey ");
		System.out.println(jedis.ttl("mykey"));

		//返回key剩余的过期时间(单位:毫秒)
		System.out.println("> PTTL mykey ");
		System.out.println(jedis.pttl("mykey"));

		System.out.println("> EXISTS mykey ");
		System.out.println(jedis.exists("mykey"));

		System.out.println("# sleep 2000 Millisecond!");
		try {
			Thread.sleep(2 * 1000);
		} catch (InterruptedException e) {
		}

		System.out.println("> EXISTS mykey ");
		System.out.println(jedis.exists("mykey"));

		//移除
		jedis.del("mykey", "key1", "key2", "key3", "key4", "key5");
		System.out.println("\n");
	}
}

 

© 著作权归作者所有

共有 人打赏支持
G
粉丝 2
博文 72
码字总数 49356
作品 0
海淀
高级程序员
私信 提问
征服 Redis + Jedis

用Memcached,对于缓存对象大小有要求,单个对象不得大于1MB,且不支持复杂的数据类型,譬如SET 等。基于这些限制,有必要考虑Redis! 相关链接: 征服 Redis 征服 Redis + Jedis 征服 Redi...

凯文加内特
2015/03/18
0
0
使用jedis连接单机和集群redis的两种方式

Redis服务器的部署方式可分为单机和集群的方式,使用Jedis的对应访问接口也相应不用。如何使用Jedis操作两种不同部署方式的Redis数据,以及在web工程里如何快速的切换两种不同的访问方式,是...

jimmywu911
2016/12/02
1K
2
spring-data-redis中JedisCluster不支持pipelined问题解决

摘要: 引言 了解Jedis的童鞋可能清楚,Jedis中JedisCluster是不支持pipeline操作的,如果使用了redis集群,在spring-boot-starter-data-redis中又正好用到的pipeline,那么会接收到Pipelin...

stys35
01/26
0
0
Redis应用学习(三)——Jedis客户端的简单使用介绍

Redis的Java客户端程序——Jedis 1. 在Redis的安装目录中redis-cli是一个Redis的Shell语言写的客户端,通过运行该客户端就可以实现一系列Redis操作,而如果要使用Java语言的Redis客户端,就必...

江左煤郎
2018/10/27
0
0
使用JedisPoolConfig时,returnResourceObject 与 returnBrokenResource

使用JedisPoolConfig时,returnResourceObject 与 returnBrokenResource 这2个方法各有什么问题,我可以这样使用吗? /** * 返还到连接池 * * @param pool * @param redis */ private static...

Yong008
2017/06/19
294
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux iptables之mangle表使用案例

mangle表的用途 mangle表的主要功能是根据规则修改数据包的一些标志位,以便其他规则或程序可以利用这种标志对数据包进行过滤或策略路由。 mangel表使用示例 示例1-策略路由1 内网的客户机通...

月下狼
今天
3
0
OSChina 周日乱弹 —— 兼职我想去学学布偶戏

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @clouddyy : 《火炎 - 女王蜂》 《火炎 - 女王蜂》 手机党少年们想听歌,请使劲儿戳(这里) @小鱼丁 :还在睡觉突然接到一个小哥哥电话“x...

小小编辑
今天
82
5
租房软件隐私保护如同虚设

近日,苏州市民赵先生向江苏新闻广播新闻热线025-84658888反映,他在“安居客”手机应用软件上浏览二手房信息,并且使用该软件自动生成的虚拟号码向当地一家中介公司进行咨询。可电话刚挂不久...

linux-tao
今天
3
0
分布式项目(五)iot-pgsql

书接上回,在Mapping server中,我们已经把数据都整理好了,现在利用postgresql存储历史数据。 iot-pgsql 构建iot-pgsql模块,这里我们写数据库为了性能考虑不在使用mybatis,换成spring jd...

lelinked
今天
6
0
一文分析java基础面试题中易出错考点

前言 这篇文章主要针对的是笔试题中出现的通过查看代码执行结果选择正确答案题材。 正式进入题目内容: 1、(单选题)下面代码的输出结果是什么? public class Base { private Strin...

一看就喷亏的小猿
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部