`
wudalang_gd
  • 浏览: 9337 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

 
阅读更多

继上一篇安装好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正是学习提高的时候
}


测试结果:

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

分享到:
评论

相关推荐

    Java操作Redis实例,操作封装

    本文将深入探讨如何在Java环境中进行Redis操作,并对这些操作进行封装,以实现更高效、可复用的代码。 首先,我们需要一个连接池来管理Redis连接,这有助于减少创建和销毁连接的开销。Jedis是Java中常用的Redis...

    可能是方法最全Redis静态工具类(RedisUtils.java)

    可能是最全的Redis静态工具类,拿来即用,随时随地RedisUtils.方法名()存取数据,每个方法都有对应的注释,快速上手!

    java操作redis代码和redis工具类相关包资料

    在实际开发中,一个良好的Redis工具类通常会封装这些基础操作,提供更友好的API,例如批量操作、连接池管理、异常处理等。工具类的设计应考虑线程安全、资源释放以及错误处理,以确保代码的健壮性。 总的来说,这个...

    java redis 各类型操作实例

    在实际应用中,通常会封装一个Redis模板类,以更高效、安全地管理和执行这些操作。同时,注意合理利用连接池,如JedisPool,以提高性能并防止资源泄漏。在项目中,根据具体需求选择合适的数据结构,结合Java的Jedis...

    Redis操作字符串工具类封装,Redis工具类封装

    在Java开发中,为了方便与Redis进行交互,通常会封装一个工具类,本文将详细介绍如何封装一个基于Redis操作字符串的工具类。 在`RedisPoolUtils`这个类中,我们可以看到它是对Jedis或Lettuce等Redis客户端的进一步...

    Redis客户端Java服务接口封装

    总的来说,`RedisClientTemplate.java`是为Java应用提供了一层对Redis操作的抽象,简化了与Redis的交互,提升了代码的整洁度和复用性。通过这样的封装,开发者可以更专注于业务逻辑,而无需关心底层通信细节。在阅读...

    Redis Java Spring-Boot 操作封装类

    Redis 的 Java Spring-Boot 操作封装类,可以摆脱redisTemplate 那冗长的操作方式,支持全部数据类型的存储和查询。

    RedisConfig.java

    RedisConfig:Redis配置类 设置数据存入 redis 的序列化方式,并开启事务,注入封装RedisTemplate等等

    redis utils 工具类

    Redis Utils工具类是Java开发中常见的一种封装,用于简化与Redis数据库的交互操作。Redis是一种高性能的键值存储系统,广泛应用于缓存、消息队列、数据持久化等多个场景。在Java开发中,为了提高代码的可读性和复用...

    java对redis的基本操作

    ### Java对Redis的基本操作 #### 一、Redis服务器端安装及配置 1. **下载**: - 访问[MSOpenTech/redis](https://github.com/MSOpenTech/redis)页面,下载适用于Windows平台的`redis2.6`版本。 - 解压缩后,根据...

    java 对Redis的导入和导出

    在Java开发中,Redis作为一个高性能的键值存储系统,常被用作缓存或数据库,其数据操作便捷高效。为了在不同的服务器之间迁移或者备份Redis中的数据,我们需要实现数据的导入与导出功能。本篇将详细介绍如何使用Java...

    redisTemplate封装成redisUtils和分布式锁实现

    RedisTemplate是Spring Data Redis模块中的一个核心组件,用于在Java应用中操作Redis数据库。它提供了一种面向对象的方式来执行各种Redis命令,简化了与Redis的数据交互。本篇将深入探讨如何将RedisTemplate封装成...

    java,redis,jedis操作工具类,自己写的简易 demo

    Jedis是Java语言中对Redis官方支持的客户端库,提供了丰富的API来操作Redis服务器。本篇将详细介绍Java使用Jedis进行Redis操作的相关知识点。 1. **Jedis连接池配置** 在实际项目中,为了提高性能和资源利用率,...

    java-redis jar

    1. **RedisTemplate**:Spring Data Redis提供的核心模板类,它封装了对Redis的操作,如字符串、哈希、列表、集合、有序集合等数据类型的CRUD操作。使用`@Autowired`注解可以将其注入到需要使用Redis的类中。 2. **...

    java操作redis工具类

    org.springframework.data.redis.core.StringRedisTemplate,spring boot集成redis后操作类,封装后完全是针对redis命令调用

    redis操作工具类

    标题"redis操作工具类"暗示我们将讨论如何在Spring Boot应用中创建一个Redis操作的工具类,以便于对Redis进行便捷的CRUD(创建、读取、更新、删除)操作。这个工具类通常会利用`StringRedisTemplate`,它是Spring ...

    redis封装类

    java项目使用redis封装一些方法和一些初始化数据,如初始化连接池等

    java基于Redis实现排行榜功能源码

    在本文中,我们将深入探讨如何使用Java和Redis的有序集合(Zset)来实现一个排行榜功能。Redis是一个高性能的...通过学习这个项目,你可以了解到如何在实际开发中应用Redis,并掌握使用Java操作Redis数据结构的方法。

    java中redis锁的封装

    内容:封装好的redis锁 使用场景: 1.并发情况下 2.对某个字段状态的处理 3.支付回调,重复收到回调数据 使用方法: Object result = redisLockTemplate.execute("REDIS:LOCK:" + id, 1, TimeUnit.SECONDS, new ...

Global site tag (gtag.js) - Google Analytics