前几篇博客我们介绍了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之类的,如果这些命令还不熟悉,就翻翻小编前几篇博客吧。不过性能这块还没怎么考虑过,期待下回分享吧……