javaWeb中使用Redis缓存实例解析

 更新时间:2018年01月03日 11:35:45   作者:云云云云云云娇  
这篇文章主要介绍了javaWeb中使用Redis缓存实例解析,具有一定借鉴价值,需要的朋友可以参考下

直接进入主题:

一:serviceImpl定义:

@Service 
  public class JedisClientSingleService implements JedisClient {
	@Autowired 
	    private JedisPool jedisPool;
	@Override 
	    public String get(String key) {
		Jedis jedis = jedisPool.getResource();
		String string = jedis.get(key);
		jedis.close();
		return string;
	}
	@Override 
	    public String set(String key, String value) {
		Jedis jedis = jedisPool.getResource();
		String string = jedis.set(key, value);
		jedis.close();
		return string;
	}
	@Override 
	    public String hget(String hkey, String key) {
		Jedis jedis = jedisPool.getResource();
		String string = jedis.hget(hkey, key);
		jedis.close();
		return string;
	}
	@Override 
	    public long hset(String hkey, String key, String value) {
		Jedis jedis = jedisPool.getResource();
		long result = jedis.hset(hkey, key, value);
		jedis.close();
		return result;
	}
	@Override 
	    public long incr(String key) {
		Jedis jedis = jedisPool.getResource();
		long result = jedis.incr(key);
		jedis.close();
		return result;
	}
	@Override 
	    public long expire(String key, int second) {
		Jedis jedis = jedisPool.getResource();
		long result = jedis.expire(key, second);
		jedis.close();
		return result;
	}
	@Override 
	    public long ttl(String key) {
		Jedis jedis = jedisPool.getResource();
		long result = jedis.ttl(key);
		jedis.close();
		return result;
	}
	@Override 
	    public long del(String key) {
		Jedis jedis = jedisPool.getResource();
		long result = jedis.del(key);
		jedis.close();
		return result;
	}
	@Override 
	    public long hdel(String hkey, String key) {
		Jedis jedis = jedisPool.getResource();
		long result = jedis.hdel(hkey, key);
		jedis.close();
		return result;
	}

二:添加缓存出(一般写在service是层中):

public List<RoleResource> getTreeGrid() { 
    //从缓存中获取内容 
    try { 
      String cachString = jedisClientSingleService.hget(ALL_RESOURCES_NO_CONDITION, hashId); 
      if(!StringUtils.isBlank(cachString)){ 
        List<RoleResource> list = JsonUtils.jsonStrToList(cachString, RoleResource.class) ; 
        return list ; 
      } 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
     
    List<RoleResource> list =sessionFactory.openSession().selectList("cn.sys.auth.entity.ResourcesMapper.getTreeGrid"); 
    //将缓存中添加缓存 
    try { 
      //redsi只存字符串,把list转换换成字符串 
      String cachString =JsonUtils.toJson(list) ; 
      jedisClientSingleService.hset(ALL_RESOURCES_NO_CONDITION, hashId, cachString) ; 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
    return list; 
  } 

逻辑:先从缓存中取数据,如果缓存中没有,就去数据库中取,然后把数据存入缓存,下次查询时就会从缓存中取。

三:缓存的同步

问题来了,入过你修改或者删除了数据,下次取的时候,因为缓存中有数据便在缓存中取,这是数据库的数据与缓存中的数据不一致,便出现差异,这就要缓存同步了。

其实很简单,就是在修改,删除(如果添加也需要的话),执行下面操作:

1:删除缓存,处理数据,把数据放如缓存

2:删除缓存,处理数据(等查询数据的时候会把数据放入缓存,两种情况只是写缓存时间的区别)

try { 
      jedisClientSingleService.hdel(ALL_RESOURCES_NO_CONDITION, hashId); 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 

总结

以上就是本文关于javaWeb中使用Redis缓存实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

  • java中fork-join的原理解析

    java中fork-join的原理解析

    Fork/Join框架是Java7提供用于并行执行任务的框架,是一个把大任务分割成若干个小任务,今天通过本文给大家分享java中fork join原理,感兴趣的朋友一起看看吧
    2021-04-04
  • Java自定义异常_动力节点Java学院整理

    Java自定义异常_动力节点Java学院整理

    这篇文章主要介绍了Java自定义异常_动力节点Java学院整理的相关资料,需要的朋友可以参考下
    2017-04-04
  • SpringBoot实现扫码登录的示例代码

    SpringBoot实现扫码登录的示例代码

    本文主要介绍了SpringBoot实现扫码登录的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Java ThreadLocal的设计理念与作用

    Java ThreadLocal的设计理念与作用

    这篇文章主要介绍了Java ThreadLocal的设计理念与作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Java集合教程之Collection实例详解

    Java集合教程之Collection实例详解

    集合,或者叫容器,是一个包含多个元素的对象,下面这篇文章主要给大家介绍了关于Java集合教程之Collection的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-08-08
  • Java 逻辑控制全面详解

    Java 逻辑控制全面详解

    程序的逻辑主要分为三种结构:顺序结构、分支结构、循环结构,顺序结构的所有的代码都是从前向后执行的。有些时候顺序是由“{}”为界限的,下文将全面详细的介绍
    2021-10-10
  • Springboot @Import 详解

    Springboot @Import 详解

    这篇文章主要介绍了Springboot @Import 详解,仔细看了下Springboot关于@Import的处理过程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • 浅谈Java中的参数传递问题

    浅谈Java中的参数传递问题

    这篇文章主要介绍了Java中的参数传递问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • java实现汉字转拼音

    java实现汉字转拼音

    这篇文章主要介绍了java实现汉字转拼音的功能,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • Selenium处理select标签的下拉框

    Selenium处理select标签的下拉框

    Selenium是一个开源的和便携式的自动化软件测试工具,用于测试Web应用程序有能力在不同的浏览器和操作系统运行。接下来通过本文给大家介绍Selenium处理select标签的下拉框,需要的朋友一起学习吧
    2016-04-04

最新评论