前几篇博客我们介绍了Redis的概念、数据类型和不同数据类型下的数据操作。在进行数据操作的时候,我们是直接使用命令的,那如何在项目中操作Redis的数据呢?今天小编就带大家看一下在java下如何操作Redis的数据。
准备工作:
新建项目,需要引入jar包 jedis-2.1.0.jar commons-pool-1.5.5.jar
Jedis是Redis的java客户端,后面的操作都会用到。
小试牛刀:
查询所有key,相当于数据库命令“keys *”。
//连接Redis,6379端口 Jedis jedis=new Jedis("192.168.22.226",6379); //查询所有key值 Set keys=jedis.keys("*"); Iterator iterator=keys.iterator(); //遍历 while(iterator.hasNext()){ Object obj=iterator.next(); System.out.println("=======[key值]:"+obj); }
进阶:
Redis的数据类型分为五种:String,hashes,list,set和Sortedsets。这里只以其中的几个为例,简要说明。
1、list
//list操作--先进后出 jedis.lpush("list001", "001"); jedis.lpush("list001", "002"); jedis.lpush("list001", "003"); System.out.println("key为list001中的元素有:"+jedis.lrange("list001", 0, -1)); System.out.println(jedis.lpop("list001")); System.out.println(jedis.lpop("list001")); System.out.println(jedis.lpop("list001"));
在前一篇博客中,我们演示了list操作中模拟队列、栈的进出,这里就不再赘述了。大家可以下面自己测试,很简单的。
2、hash
在hash操作中,仍旧是hset命令进行添加。
jedis.hset("user001", "book", "Redis"); jedis.hset("user001", "page", "500");
3、set
//添加元素 jedis.sadd("set02", "one"); jedis.sadd("set02", "two"); jedis.sadd("set02", "three"); jedis.sadd("set02", "four"); //读取 Set set = jedis.smembers("set02"); //遍历打印输出 Iterator iterator = set.iterator(); while (iterator.hasNext()) { Object obj = iterator.next(); System.out.println("key为set02中的元素有:"+obj); }
项目实战:
在ITOO中,redis用来实现不同系统间的Session共享,Redis所存储的数据类型也只有String一种类型,因此项目中也只对这种类型进行了再一次的封装。
初始化方法
// ip地址 private String host = "192.168.22.246"; private int port = 6379; // 0 - never expire private int expire = 0; private int timeout = 0; private String password = ""; //Redis池 private static JedisPool jedisPool = null; /** * 初始化方法 */ public void init() { //配置信息 JedisPoolConfig jedisConfig = new JedisPoolConfig(); jedisConfig.setMaxIdle(100); jedisConfig.setMaxTotal(1000); jedisConfig.setMaxWaitMillis(2000); jedisConfig.setTestWhileIdle(true); jedisConfig.setMinEvictableIdleTimeMillis(60000); jedisConfig.setTimeBetweenEvictionRunsMillis(30000); jedisConfig.setNumTestsPerEvictionRun(-1); if (jedisPool == null) { if (password != null && !"".equals(password)) { jedisPool = new JedisPool(jedisConfig, host, port, timeout, password); } else if (timeout != 0) { jedisPool = new JedisPool(jedisConfig, host, port, timeout); } else { jedisPool = new JedisPool(jedisConfig, host, port); } } }
添加方法
/** * set * * @param key * @param value * @return */ public byte[] set(byte[] key, byte[] value) { //实例化jedis Jedis jedis = jedisPool.getResource(); try { //使用set命令添加 jedis.set(key, value); if (this.expire != 0) { //有效时间 jedis.expire(key, this.expire); } } finally { jedisPool.returnResource(jedis); } return value; }
如果是获取元素,就使用get命令,其他的代码都很类似,就不再重复了。
Java操作Redis还是十分好上手的,Jedis的方法和数据库的命令几乎一模一样,连名字都懒得改的,基本上都是set、get、lpush、lpop、sadd之类的,如果这些命令还不熟悉,就翻翻小编前几篇博客吧。不过性能这块还没怎么考虑过,期待下回分享吧……