您的位置:首页 > 数据库 > Redis

redis学习之java类对redis库操作的简单封装

2016-05-19 21:18 603 查看
继上一篇安装好redis后,本篇将封装java类以方便对redis进行各种操作,因为我也是新手正在学习,只是很简单的封装。先贡献一张DB图,好让大家对各种DB整体有个了解。



通过上图知道,Redis与Memcache放在同一层级,说明他们之间有很多相似之处,另外redis在队列和栈上,数据持久化等个人觉得比MemCache优点多,两者之间的雷同网上很多学习资料,不再阐述。下面开始学习java类对Redis操作的简单封装:

一、准备工作

a.开启Redis服务(我的是在Ubuntu下)

执行命令redis-server成功开启服务(PS:执行redis-server &命令可以后台运行服务,很多时候这点很必要)



b.测试连接

在Ubuntu上执行命令ifconfig查看服务IP,我的是192.168.161.130,如图:



测试连接:在ubuntu上可以ping通服务iP,现在我在Windows下看是否可ping通(redis服务的防火墙关掉),如图:



确认可以ping通就可以开始下一步了

二、java封装工作

a、 先来看下java类整体目录结构



b、贴出代码:

接口类IRedis.java

package redis;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface IRedis {
//String
void set(String key,String value) throws Exception;//添加
String get(String key) throws Exception;//获取
//set
void sadd(String key,Set<String> value) throws Exception;//添加
void srem(String key,Set<String> value) throws Exception;//删除
Long scard(String key) throws Exception;//获取key对应的value总数
Set<String> smembers(String key) throws Exception;//获取key对应的所有value
boolean sismember(String key,String value) throws Exception;//判断是否存在
String srandmember(String key) throws Exception;//随机获取数据
//map
void hmset(String key,Map<String,String> map) throws Exception;//添加
Long hlen(String key) throws Exception;//mapkey个数
Set<String> hkeys(String key) throws Exception;//map中所有键值
List<String> hvals(String key) throws Exception;//map中所有value
List<String> hmget(String key,String s1,String s2) throws Exception;//取出map中的name、password字段值
void hdel(String key,String s) throws Exception;//删除map中的某一个键值 password
//list
void lpush(String key,List<String> list) throws Exception;//添加
List<String> lrange(String key,Long start,Long end) throws Exception;//获取
void del(String key) throws Exception;//删除

//append
void append(String key,String value) throws Exception;//追加

}


实现类:Redis.java:

package redis;

import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import redis.clients.jedis.Jedis;

public class Redis implements IRedis {

@Override
public void sadd(String key, Set<String> value) throws Exception {
Utils f = Utils.createFactory();
Jedis jedis = f.connection();
for(String str: value){
jedis.sadd(key, str);
}
//		Iterator<String> it = value.iterator();
//		while (it.hasNext()) {
//		 String str = it.next();
//		 System.out.println(str);
//		 jedis.sadd(key,str);
//		}

}

@Override
public void set(String key, String value) throws Exception {
Utils f = Utils.createFactory();
Jedis jedis = f.connection();
jedis.set(key,value);

}

@Override
public void srem(String key, Set<String> value) throws Exception {
Utils f = Utils.createFactory();
Jedis jedis = f.connection();
Iterator<String> it = value.iterator();
while(it.hasNext()){
String str = it.next();
jedis.srem(key, str);
}
}

@Override
public String get(String key) throws Exception {
Utils f = Utils.createFactory();
Jedis jedis = f.connection();
return jedis.get(key);
}

@Override
public Long scard(String key) throws Exception {
Utils f = Utils.createFactory();
Jedis jedis = f.connection();
return jedis.scard(key);
}

@Override
public Set<String> smembers(String key) throws Exception {
Utils f = Utils.createFactory();
Jedis jedis = f.connection();
return jedis.smembers(key);
}

@Override
public boolean sismember(String key, String value) throws Exception {
Utils f = Utils.createFactory();
Jedis jedis = f.connection();
return jedis.sismember(key,value);
}

@Override
public String srandmember(String key) throws Exception {
Utils f = Utils.createFactory();
Jedis jedis = f.connection();
return jedis.srandmember(key);
}

@Override
public void hmset(String key, Map<String, String> map) throws Exception {
Utils f = Utils.createFactory();
Jedis jedis = f.connection();
jedis.hmset(key,map);
}

@Override
public Long hlen(String key) throws Exception {
Utils f = Utils.createFactory();
Jedis jedis = f.connection();
return jedis.hlen(key);
}

@Override
public Set<String> hkeys(String key) throws Exception {
Utils f = Utils.createFactory();
Jedis jedis = f.connection();
return jedis.hkeys(key);
}

@Override
public List<String> hvals(String key) throws Exception {
Utils f = Utils.createFactory();
Jedis jedis = f.connection();
return jedis.hvals(key);
}

@Override
public List<String> hmget(String key, String s1, String s2)
throws Exception {
Utils f = Utils.createFactory();
Jedis jedis = f.connection();
return jedis.hmget(key,s1,s2);
}

@Override
public void hdel(String key, String s) throws Exception {
Utils f = Utils.createFactory();
Jedis jedis = f.connection();
jedis.hdel(key,s);
}

@Override
public void lpush(String key, List<String> list) throws Exception {
Utils f = Utils.createFactory();
Jedis jedis = f.connection();
for(String s: list){
jedis.lpush(key,s);
}
}

@Override
public List<String> lrange(String key, Long start, Long end)
throws Exception {
Utils f = Utils.createFactory();
Jedis jedis = f.connection();
return jedis.lrange(key, start, end);
}

@Override
public void del(String key) throws Exception {
Utils f = Utils.createFactory();
Jedis jedis = f.connection();
jedis.del(key);
}

@Override
public void append(String key, String value) throws Exception {
Utils f = Utils.createFactory();
Jedis jedis = f.connection();
jedis.append(key,value);
}

}

工具类Factory.java

package redis;

import redis.clients.jedis.Jedis;

public class Utils {
private static final String ip = "192.168.161.130";
private static final Integer port = 6379;

public  Jedis connection() throws Exception{
Jedis jedis = new Jedis(ip,port);
return jedis;
}

public static Utils createFactory() throws Exception{
return new Utils();
}
}


三、测试

写了两个测试的方法,RedisTest.java:

package test;

import java.util.HashSet;
import java.util.Set;

import redis.Redis;

public class RedisTest {
public static void main(String[] args) throws Exception {
//		append();
sadd();
}

public static void append() throws Exception{
Redis r = new Redis();
r.set("z", "wb");
String s = r.get("z");
System.out.println(s);
}

public static void sadd() throws Exception{
Redis r = new Redis();
Set<String> set = new HashSet<String>();
set.add("w");
set.add("b");
r.sadd("zsss",set);
Set<String> t = r.smembers("zsss");
System.out.println(t);
}
// ↑当测第二个方法时也是用的跟第一个一样的键“z”,报WRONGTYPE Operation against a key
//holding the wrong kind of value,因为redis中已经存在了相同的key, 而且key对应的值类型并不是Set,
//而是String,浪费好多时间,不过遇到bug正是学习提高的时候
}


测试结果:



这篇先到这里,今天俺的发小大学毕业了,而我已经工作两年有余了,回顾自己的大学时光,更多的是遗憾,不过现在已经淡然了,有了爱学习的习惯,可能是上学时欠下的,话说我们学校旁边又多了几栋百度的大厦,百度一直是我梦寐以求的公司。加油吧,贴几张我们学校的图,以此激励自己。













内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: