Redis——java代码读写redis

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 一,简单Jedis读写      Jedis jedis=new Jedis("127.0.0.1",6379);//连接的是我本地的服务 System.out.println("成功连接到服务器=="); /*存取string类型*/ jedis.


一,简单Jedis读写


     

Jedis jedis=new Jedis("127.0.0.1",6379);//连接的是我本地的服务
		System.out.println("成功连接到服务器==");
		
		/*存取string类型*/
		jedis.set("name", "lhc");
		model.addAttribute("name",jedis.get("name"));
		
		/*存取hash类型*/
		jedis.hset("hash", "k1", "v1");
		jedis.hset("hash", "k2", "v2");
		jedis.hset("hash", "k3", "v3");
		model.addAttribute("hash",jedis.hvals("hash"));
		
	    /*存取list*/
		jedis.lpush("student", "lhc");
		jedis.lpush("student", "水田如雅");
		jedis.lpush("student", "杰伦哥哥");
		List<String> stuList=jedis.lrange("student", 0, 2);
		model.addAttribute("stuList",stuList.toString());
		
		/*存取set*/
		jedis.sadd("person","lhc");
		jedis.sadd("person","水田");
		jedis.sadd("person","小白");
		model.addAttribute("people",jedis.smembers("person"));
		
		/*存取zset*/
		jedis.zadd("animal", 0, "cat");
		jedis.zadd("animal", 0, "dog");
		jedis.zadd("animal", 0, "sheep");
		model.addAttribute("animal",jedis.zrange("animal", 0, 2));
		
		//查看服务是否允许
		System.out.println("服务器正在连通中。。。状态:"+jedis.ping());



二,使用连接池读写


     JedisPoolShardedJedisPool


        JedisPool连一台RedisShardedJedisPoolRedis集群,通过一致性哈希算法决定把数据存到哪台上,算是一种客户端负载均衡,所以添加是用这个(Redis 3.0之后支持服务端负载均衡) 。


    使用SharedJedisPool操作Redis集群工具类:


public class RedisDao {
	
	private static final Logger logger = Logger.getLogger(RedisDao.class);
	@Autowired
	private ShardedJedisPool shardedJedisPool;

	public void set(String key, String value) {
		ShardedJedis jedis = shardedJedisPool.getResource();
		try {			
			jedis.set(key, value);

        } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return;
	}
	


	public String get(String key) {
		ShardedJedis jedis = shardedJedisPool.getResource();
		String result = "";
		try {			
			result = jedis.get(key);

        } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return result;

	}

	public Long hset(String key, String field, String value) {
		ShardedJedis jedis = shardedJedisPool.getResource();
		
		Long result = null;
		try {			
			result = jedis.hset(key, field, value);

        } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return result;
	}

	public String hget(String key, String field) {
		ShardedJedis jedis = shardedJedisPool.getResource();
		
		String result = null;
		try {			
			result = jedis.hget(key, field);

        } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return result;
	}
	
	
	public List<String> lrange(String key,long start,long end) {
		ShardedJedis jedis = shardedJedisPool.getResource();

		List<String> result = null;
		try {			
			result = jedis.lrange(key, start, end);;

        } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return result;
	}
	
	public Long del(String key) {
		ShardedJedis jedis = shardedJedisPool.getResource();
		Long result = null;
		try {			
			result = jedis.del(key);
        } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return result;
	}
	
	public void rpush(String key, String... value) {
		ShardedJedis jedis = shardedJedisPool.getResource();
		try {			
			jedis.rpush(key,value);
        } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return;
	}
	
	public void lpush(String key, String... value) {
		ShardedJedis jedis = shardedJedisPool.getResource();
		try {			
			jedis.lpush(key,value);
        } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return;
	}
	
	public void lpop(String key) {
		ShardedJedis jedis = shardedJedisPool.getResource();
		try {			
			jedis.lpop(key);
        } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return;
	}
	
	public void rpop(String key) {
		ShardedJedis jedis = shardedJedisPool.getResource();
		try {			
			jedis.rpop(key);
        } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return;
	}
	
	
	public void lrem(String key,int count,String value) {
		ShardedJedis jedis = shardedJedisPool.getResource();
		try {			
			jedis.lrem(key,count,value);
        } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return;
	}
	
	
	/**
     * 添加key value 并且设置存活时间
     * @param key
     * @param value
     * @param liveTime
     */
    public void set(String key,String value,int liveTime){
    	ShardedJedis jedis = shardedJedisPool.getResource();
    	try {			
    		this.set(key, value);
    		jedis.expire(key, liveTime);
         } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
    }
    
    /**
     * 检查key是否已经存在
     * @param key
     * @return
     */
    public boolean exists(String key){
    	ShardedJedis jedis = shardedJedisPool.getResource();
		boolean result =false;
		try {				
			result=jedis.exists(key);
        } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return result;
    }

    /**
     * 获取一个key的模糊匹配总数
     * @param key
     * @return
     */
    public int getKeyCount(String key) {
		ShardedJedis jedis = shardedJedisPool.getResource();
		Set<String> result = null;
		try {				
			result = jedis.getShard(key).keys(key + "*");
        } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return result.size();
	}

    /**
     * 查看redis里有多少数据
     */
    @SuppressWarnings("deprecation")
	public long dbSize(){
    	ShardedJedis jedis = shardedJedisPool.getResource();
		Set<String> result = null;
		try {		
			 result=jedis.getShard("").keys("*");
         } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return result.size();
     }

	public long sadd(String key,String... value){
    	ShardedJedis jedis = shardedJedisPool.getResource();
		long result = 0l;
		try {		
			result= jedis.sadd(key,value);
         } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return result;
     }
	
	public Boolean sismember(String key,String value){
    	ShardedJedis jedis = shardedJedisPool.getResource();
    	Boolean result = false;
		try {		
			result= jedis.sismember(key,value);
         } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return result;
     }
	
	public Set smembers(String key){
    	ShardedJedis jedis = shardedJedisPool.getResource();
    	Set result = null;
		try {		
			result= jedis.smembers(key);
         } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return result;
     }
	
	public long zadd(String key,int sequence,String value){
    	ShardedJedis jedis = shardedJedisPool.getResource();
    	long result = 0l;
		try {		
			result= jedis.zadd(key,sequence,value);
         } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return result;
     }
	
	
	public Set<String> zrange(String key,long start,long end){
    	ShardedJedis jedis = shardedJedisPool.getResource();
    	Set<String> result = null;
		try {		
			result= jedis.zrange(key,start,end);
         } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return result;
     }
	
	public String hmset(String key,Map map){
    	ShardedJedis jedis = shardedJedisPool.getResource();
    	String result = null;
		try {		
			result= jedis.hmset(key,map);
         } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return result;
     }
	
	public Map<String,String> hgetAll(String key){
    	ShardedJedis jedis = shardedJedisPool.getResource();
    	Map<String,String> result = null;
		try {		
			result= jedis.hgetAll(key);
         } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	shardedJedisPool.returnBrokenResource(jedis);
        } finally {
        	shardedJedisPool.returnResource(jedis);
        }
        return result;
     }
	
    
	public ShardedJedisPool getShardedJedisPool() {
		return shardedJedisPool;
	}

	public void setShardedJedisPool(ShardedJedisPool shardedJedisPool) {
		this.shardedJedisPool = shardedJedisPool;
	}
}


   项目中还需加入redis的property文件和bean配置:


<!-- 读入属性文件 -->
	<bean id="propretyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath:conf/redis.properties</value>
			</list>
		</property>
	</bean>
	
    <!-- redis 配置 -->
 
    <bean id="redisDao" class="com.upcloud.demo.redis.dao.RedisDao" scope="prototype">
        <property name="shardedJedisPool">
			<ref bean="shardedJedisPool"/>
		</property>      
    </bean>
     
    
	<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">        
	<property name="maxTotal" value="${redis.maxActive}" />    <!--最大连接数-->
	    	<property name="maxIdle" value="${redis.maxIdle}" />     <!--最大空闲数-->
	    	<property name="maxWaitMillis" value="${redis.maxWait}" />    <!--最大等待时间ms-->
	    	<property name="testOnBorrow" value="false" />  
	</bean>  
	
	<bean id="jedis.shardInfo" class="redis.clients.jedis.JedisShardInfo">    
	    	<constructor-arg index="0" value="${redis.host}" />    
	    	<constructor-arg index="1" value="${redis.port}" />  
	</bean>  
	
	<bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool">        
	<constructor-arg index="0" ref="jedisPoolConfig" />    
	      <constructor-arg index="1">      
	          <list>        
	           <ref bean="jedis.shardInfo" />      
	          </list>    
	      </constructor-arg>  
	</bean>





相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
12天前
|
Java
在 Java 中捕获和处理自定义异常的代码示例
本文提供了一个 Java 代码示例,展示了如何捕获和处理自定义异常。通过创建自定义异常类并使用 try-catch 语句,可以更灵活地处理程序中的错误情况。
|
1月前
|
存储 安全 Java
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
61 2
|
1月前
|
存储 Java API
键值对魔法:如何优雅地使用Java Map,让代码更简洁?
键值对魔法:如何优雅地使用Java Map,让代码更简洁?
118 2
|
27天前
|
XML 安全 Java
Java反射机制:解锁代码的无限可能
Java 反射(Reflection)是Java 的特征之一,它允许程序在运行时动态地访问和操作类的信息,包括类的属性、方法和构造函数。 反射机制能够使程序具备更大的灵活性和扩展性
37 5
Java反射机制:解锁代码的无限可能
|
16天前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
31 1
|
23天前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
59 3
|
28天前
|
存储 安全 Java
系统安全架构的深度解析与实践:Java代码实现
【11月更文挑战第1天】系统安全架构是保护信息系统免受各种威胁和攻击的关键。作为系统架构师,设计一套完善的系统安全架构不仅需要对各种安全威胁有深入理解,还需要熟练掌握各种安全技术和工具。
80 10
|
24天前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
22天前
|
Java
Java代码解释++i和i++的五个主要区别
本文介绍了前缀递增(++i)和后缀递增(i++)的区别。两者在独立语句中无差异,但在赋值表达式中,i++ 返回原值,++i 返回新值;在复杂表达式中计算顺序不同;在循环中虽结果相同但使用方式有别。最后通过 `Counter` 类模拟了两者的内部实现原理。
Java代码解释++i和i++的五个主要区别
|
30天前
|
搜索推荐 Java 数据库连接
Java|在 IDEA 里自动生成 MyBatis 模板代码
基于 MyBatis 开发的项目,新增数据库表以后,总是需要编写对应的 Entity、Mapper 和 Service 等等 Class 的代码,这些都是重复的工作,我们可以想一些办法来自动生成这些代码。
31 6
下一篇
无影云桌面