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:
实现类:Redis.java:
工具类Factory.java:
三、测试
写了两个测试的方法,RedisTest.java:
测试结果:
这篇先到这里,今天俺的发小大学毕业了,而我已经工作两年有余了,回顾自己的大学时光,更多的是遗憾,不过现在已经淡然了,有了爱学习的习惯,可能是上学时欠下的,话说我们学校旁边又多了几栋百度的大厦,百度一直是我梦寐以求的公司。加油吧,贴几张我们学校的图,以此激励自己。
通过上图知道,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正是学习提高的时候 }
测试结果:
这篇先到这里,今天俺的发小大学毕业了,而我已经工作两年有余了,回顾自己的大学时光,更多的是遗憾,不过现在已经淡然了,有了爱学习的习惯,可能是上学时欠下的,话说我们学校旁边又多了几栋百度的大厦,百度一直是我梦寐以求的公司。加油吧,贴几张我们学校的图,以此激励自己。
相关文章推荐
- redis数据库
- haproxy配置监控redis主备切换(转)
- 2.Redis常用命令
- redis数据类型设计和实现(之二)链表
- Jedis对redis的操作详解
- Redis+Spring缓存实例
- redis 之简单介绍
- redis3.0配置翻译
- 大数据爬虫基础(二)Redis在ubuntu 14.04.03下安装
- redis事务管理
- redis中key的操作命令
- redis数据类型(五)有序集合类型
- redis数据类型(四)集合类型
- Linux下Redis数据库的安装方法与自动启动脚本分享
- redis数据类型(三)散列类型
- Redis主从复制
- Redis3.0.6集群搭建
- 开源分布式搜索平台ELK(Elasticsearch+Logstash+Kibana)+Redis+Syslog-ng实现日志实时搜索
- redis数据类型(二)列表
- redis cluster 集群配置示例: 创建, 添加节点, 重新分片, 删除节点