redisTemplate和jedis两种操作缓存

概念:Jedis是Redis官方推荐的面向Java的操作Redis的客户端,而RedisTemplate是SpringDataRedis中对JedisApi的高度封装。SpringDataRedis相对于Jedis来说可以方便地更换Redis的Java客户端,比Jedis多了自动管理连接池的特性,方便与其他Spring框架进行搭配使用如:SpringCache。总体redisTemplate 用的多。

(一)操作引用自
redis 菜鸟教程(opsfor类型):
https://www.runoob.com/redis/redis-commands.html 这里事务,安装,操作,分区全有。
别人写的不错(配置util都有): https://blog.csdn.net/weixin_44030218/article/details/87897032#2SerializeUtilclass_207
opsforvalue: Redis 字符串数据类型的相关命令用于管理 redis 字符串

opsforHash: Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象

opsforList: Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)

其他人写的redis操作:
https://blog.csdn.net/ruby_one/article/details/79141940

自己买的redis 小册子:
扫码阅读(仅限自己)redisTemplate和jedis两种操作缓存_第1张图片

(二) jedis操作redis 缓存(jedis类型 自己做的增删改查):
这个写的可以(配置util都有):
https://blog.csdn.net/weixin_44030218/article/details/87553193
CRUD:

  /** 
 * 
项目名称:Commodity-Web 
 * 文件名称:RedisController.java 
 * 包名:com.jk.commodity.controller 
 * 创建日期:2018年6月23日下午8:38:28 
 * Copyright (c) 2018, [email protected] All Rights Reserved.
*/ package com.jk.commodity.controller; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; import org.codehaus.jackson.annotate.JsonAnyGetter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.jk.commodity.model.User; import com.jk.commodity.service.RedisService; import redis.clients.jedis.ShardedJedis; import redis.clients.jedis.ShardedJedisPool; /** *
项目名称:Commodity-Web    
 * 类名称:RedisController    
 * 类描述:    
 * 创建人:
 * 创建时间:2018年6月23日 下午8:38:28    
 * 修改人:
 * 修改时间:2018年6月23日 下午8:38:28    
 * 修改备注:       
 * @version 
*/ @Controller @RequestMapping(value="/Redis") public class RedisController { @Autowired private RedisService redisService; @Autowired private ShardedJedisPool shardedJedisPool; @RequestMapping(value="/queryRedis") @ResponseBody public String queryRedis(Integer offset,Integer limit){ List list=null; //获取jedis ShardedJedis jedis= shardedJedisPool.getResource(); Boolean exists = jedis.exists("list"); if(!exists){ if(jedis.setnx("synouc","1")==1){ //加锁 jedis.expire("synouc",20*60);//防止死锁 //这里不需要加offset,limit!!! list= redisService.queryRedis(); HashMapmap=new HashMap<>(); for (User user : list) { jedis.lpush("list",user.getUserid().toString()); map.put("userid",user.getUserid().toString()); map.put("username",user.getUsername()); map.put("userpas",user.getUserpas().toString()); jedis.hmset("list_"+user.getUserid().toString(),map); Random random=new Random();//准备失效时间 随机 int nextInt = random.nextInt(100); } jedis.del("synouc"); jedis.expire("list",300*600); }else{ try { Thread.sleep(50); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //如果你把redis 中删了则全依靠下面的代码重新生成!!他这个分页是针对redis的与查询方法无关,但是你前台任然得写 server!!!!!!!!!!!!!!! List list2 = jedis.lrange("list", offset, offset+limit-1); List>list1=new ArrayList(); for (String id : list2) { Map hgetAll = jedis.hgetAll("list_"+id); list1.add(hgetAll); } JSONObject object=new JSONObject(); object.put("total",jedis.llen("list")); object.put("rows",list1); return object.toJSONString(); } } ----------------------------------------------------------------------------------------------- redis 新增 @Override public void insertRedis(User user) { //新增没有传过来id 所以需要拿id 接收一下!! //利用username 查 id redisMapper.insertRedis(user); int id=redisMapper.queryRedisid(user.getUsername()); /* List list1=redisMapper.queryRediss(id);*/ List list1=redisMapper.queryRedisss(id); ShardedJedis jedis = shardedJedisPool.getResource(); //存map 和hashMap都一样 HashMap hashmap=new HashMap(); Map map=new HashMap(); //往list中添加id 不是删了在建!!! jedis.lpush("list",list1.get(0).getUserid().toString()); map.put("userid", list1.get(0).getUserid().toString()); map.put("username",list1.get(0).getUsername()); map.put("userpas",list1.get(0).getUserpas()); jedis.hmset("list_"+list1.get(0).getUserid(),map); } sql: insert into t_user(username,userpas) values(#{username},#{userpas}) ------------------------------------------------------------------------------------------------------------------------------- reids 删除: 1:用del 删除redis来做!! @RequestMapping(value="/delredis") @ResponseBody public void delredis(Integer id){ redisService.delredis(id); } @Override public void delredis(Integer id) { redisMapper.delredis(id); ShardedJedis jedis = shardedJedisPool.getResource(); jedis.del("list"); jedis.del("list_"+id); } 就是在基本删除的基础上加上上面红字就行。 jedis.del("list"); //先数据库删了之后再在redis中删了 list 然redis 查询方法 当list 不存在时会根据数据库中现在已有的数据新创建一个list 而 list_id id 为是数字这这个会直接删除了不会再redis中继续生成 2:用expire 过期时间来做!! expire(String,seconds); 时间单位为秒 expire(list,seconds); ShardedJedis jedis = shardedJedisPool.getResource(); jedis.expire("list",10); jedis.expire("list_"+id,10); 代替: ShardedJedis jedis = shardedJedisPool.getResource(); jedis.del("list"); jedis.del("list_"+id); ------------------------------------------------------------------------------------------------------------------------------ redis修改: id 不能 修改所以redis中的list不需要过期!!!! 一样意思,修改方法上后面加上过期在加上查询

配置:

配置文件:
  config.properties:
    #db driver
jdbc.driver=com.mysql.jdbc.Driver
#db url
jdbc.url=jdbc:mysql://主机ip:3306/888?&useUnicode=true&characterEncoding=utf8&mysqlEncoding=utf8
#db username
jdbc.username=root
#db password
jdbc.password=root
#db maxActive
jdbc.maxActive=2
#db minIdle
jdbc.minIdle=5
#db maxIdle
jdbc.maxIdle=5
#redis
maxTotal=2000
maxIdle=50
redisHost=127.0.0.1
redisPort=6379
redisTimeout=3000
spring-context:
      


	
	
	

	
	
	
		
			
				classpath:config.properties
			
		
	
	
	
		
		
		
		
		
		
		
		
		
		

	
	
	
     
     	
		  
			  	     	
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
				        
			  
		  	
		  	
		  	  
		        
		        
		        
   			 
		  	
		  	
		  	
		  		 
		  		 
		  		 	
			  		 	
		  		 	
		  		 
		  	
     
	
	

	
	
		
		
		
		
		
		
	
	
	

	
	
		
	
	
		
		
		
		
	



	
	
		
		
	

	
	
		
			
			
			
			
			
			
			
		
	
 	
		
	
	
			
 

Pom文件:


			org.springframework.data
			spring-data-redis
			1.5.0.RELEASE
		
		
		
			redis.clients
			jedis
			2.9.0
		
redis.client 这个jar包提供jedis的一些方法!!

**若是springboot 则可能是:**

		
			org.springframework.boot
			spring-boot-starter-cache
		
		
		
			org.springframework.boot
			spring-boot-starter-data-redis
		

你可能感兴趣的:(java,redis)