java中redis增删查以及清理缓存的案例

我就废话不多说了,大家还是直接看代码吧~

Controller

@ApiOperation(value = "获取信息放入Redis中")
 @RequestMapping(value = "/getPropertyTakeLookShoppingDetailRedis",method = RequestMethod.POST)
 public JsonResult getPropertyTakeLookShoppingDetailRedis(@RequestBody PropertyTakeLookRedisParam param) throws Exception {
  log.info("PropertyTakeLookController.getPropertyTakeLookShoppingDetailRedis:" + param);
  JSONObject jsonObject = propertyTakeLookWriteService.getPropertyTakeLookShoppingDetailRedis(param);
  log.info("PropertyTakeLookController.getPropertyTakeLookSysInfo:" + jsonObject);
  return JsonResult.getResult(jsonObject);
 }

Service

增删查区分 读缓存 = 0; 添加 =1;删除 = 2 ; 清除相应经纪人清单缓存 = 3 ")

 /**
  * 获取信息放入Redis中
  * @return
  * @throws Exception
  */
 public JSONObject getPropertyTakeLookShoppingDetailRedis(PropertyTakeLookRedisParam param) throws Exception {
  String takeLookStr = "DKQD";
  checkArgument(StringUtils.isNotBlank(param.getTakeLookUserEmpNo()), "工号不能为空!");
  checkArgument(param.getSelOrAddOrRemove() != null, "增删查区分不能为空!");
  String takeLookUserEmpNo = param.getTakeLookUserEmpNo();
  JSONObject jsonObject;
  if(redisHandle.exists(takeLookUserEmpNo+takeLookStr) && param.getSelOrAddOrRemove() == 0){
   jsonObject = JSONObject.parseObject(redisHandle.get(takeLookUserEmpNo+takeLookStr).toString());
  } else if(param.getSelOrAddOrRemove() == 1 || param.getSelOrAddOrRemove() == 2){
   Long[] effectiveIds = param.getPropertyEffectiveId();
   PropertyTakeLookShoppingCartParam propertyTakeLookShoppingCartParam = new PropertyTakeLookShoppingCartParam();
   BeanUtils.copyProperties(param,propertyTakeLookShoppingCartParam);
   propertyTakeLookShoppingCartParam.setPropertyEffectiveId(effectiveIds);
   //获取信息
   PageInfo<?> takeLookDetail = propertytakelookService.getPropertyTakeLookShoppingCartDetail(propertyTakeLookShoppingCartParam);
   System.out.print("参数查看" + JsonResult.getResult(takeLookDetail).toJson());
   jsonObject = JSONObject.parseObject(JsonResult.getResult(takeLookDetail).toJson());
   Object jsonArray = jsonObject.get("data");
   redisHandle.set(takeLookUserEmpNo+takeLookStr,jsonArray);
  }else if (redisHandle.exists(takeLookUserEmpNo+takeLookStr) && param.getSelOrAddOrRemove() == 3){
   //物理清除缓存
   redisHandle.remove(takeLookUserEmpNo+takeLookStr);
   jsonObject = new JSONObject();
   jsonObject.put("code",ErrorCode.SUCCESS.getCode());
   jsonObject.put("msg",ErrorCode.SUCCESS.getMsg());
  }else {
   jsonObject = new JSONObject();
   jsonObject.put("code",ErrorCode.SUCCESS.getCode());
   jsonObject.put("msg",ErrorCode.SUCCESS.getMsg());
  }
  return jsonObject;
 }

补充:java按照关键字指定的key删除redis(支持模糊删除)

pom依赖:

 <dependency>
   <groupId>redis.clients</groupId>
   <artifactId>jedis</artifactId>
   <version>2.5.0</version>
 </dependency>

代码直接可用:

import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import redis.clients.jedis.Jedis;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class TestRedis {
 private Jedis jedis;
 @BeforeClass
 public void setup() {
  //连接redis服务器,ip
  jedis = new Jedis("ip", 6379);
  //权限认证
  jedis.auth("123456");
 }
 /**
  * 删除数据
  *
  *
  * @param key:要删除数据的key
  * @return:返回boolean值,表示是否删除成功
  */
 public boolean delete(String key) {
  if (jedis.exists(key)) {
   if (jedis.del(key) == 1) {
    System.out.println("删除数据成功");
    return true;
   } else {
    System.out.println("删除数据失败");
    return false;
   }
  } else {
   System.out.println(key + "不存在");
   return false;
  }
 }
 @Test
 public void test() {
  delete("age");
 }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • 在Java中使用redisTemplate操作缓存的方法示例

    背景 在最近的项目中,有一个需求是对一个很大的数据库进行查询,数据量大概在几千万条.但同时对查询速度的要求也比较高. 这个数据库之前在没有使用Presto的情况下,使用的是Hive,使用Hive进行一个简单的查询,速度可能在几分钟.当然几分钟也并不完全是跑SQL的时间,这里面包含发请求,查询数据并且返回数据的时间的总和.但是即使这样,这样的速度明显不能满足交互式的查询需求. 我们的下一个解决方案就是Presto,在使用了Presto之后,查询速度降到了秒级.但是对于一个前端查询界面的交互式查询来

  • 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);

  • 如何在 Java 中实现一个 redis 缓存服务

    缓存服务的意义 为什么要使用缓存?说到底是为了提高系统的运行速度.将用户频繁访问的内容存放在离用户最近,访问速度最快的地方,提高用户的响应速度.一个 web 应用的简单结构如下图. web 应用典型架构 在这个结构中,用户的请求通过用户层来到业务层,业务层在从数据层获取数据,返回给用户层.在用户量小,数据量不太大的情况下,这个系统运行得很顺畅.但是随着用户量越来越大,数据库中的数据越来越多,系统的用户响应速度就越来越慢.系统的瓶颈一般都在数据库访问上.这个时候可能会将上面的架构改成下面的来缓解数

  • java操作Redis缓存设置过期时间的方法

    关于Redis的概念和应用本文就不再详解了,说一下怎么在java应用中设置过期时间. 在应用中我们会需要使用redis设置过期时间,比如单点登录中我们需要随机生成一个token作为key,将用户的信息转为json串作为value保存在redis中,通常做法是: //生成token String token = UUID.randomUUID().toString(); //把用户信息写入redis jedisClient.set(REDIS_USER_SESSION_KEY + ":"

  • 详解Java在redis中进行对象的缓存

    Java在redis中进行对象的缓存一般有两种方法,这里介绍序列化的方法,个人感觉比较方便,不需要转来转去. 一.首先,在存储的对象上实现序列化的接口 package com.cy.example.entity.system; import java.util.List; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; im

  • 详解在Java程序中运用Redis缓存对象的方法

    这段时间一直有人问如何在Redis中缓存Java中的List 集合数据,其实很简单,常用的方式有两种: 1. 利用序列化,把对象序列化成二进制格式,Redis 提供了 相关API方法存储二进制,取数据时再反序列化回来,转换成对象. 2. 利用 Json与java对象之间可以相互转换的方式进行存值和取值. 正面针对这两种方法,特意写了一个工具类,来实现数据的存取功能. 1. 首页在Spring框架中配置 JedisPool 连接池对象,此对象可以创建 Redis的连接 Jedis对象.当然,必须导

  • java中redis增删查以及清理缓存的案例

    我就废话不多说了,大家还是直接看代码吧~ Controller @ApiOperation(value = "获取信息放入Redis中") @RequestMapping(value = "/getPropertyTakeLookShoppingDetailRedis",method = RequestMethod.POST) public JsonResult getPropertyTakeLookShoppingDetailRedis(@RequestBody

  • Java Mybatis框架增删查改与核心配置详解流程与用法

    目录 Mybatis简介 Mybatis开发步骤: Mybatis的映射文件概述 Mybatis的增删改查操作 MyBatis的核心配置文件概述 MyBatis核心配置文件层级关系 MyBatis常用配置解析 Mybatis相应API 原始JDBC操作 原始jdbc操作(查询数据) 原始jdbc操作(插入数据) 原始jdbc操作的分析原始jdbc开发存在的问题如下: ①数据库连接创建.释放频繁造成系统资源浪费从而影响系统性能 ②sql 语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可

  • Java中redis的基本类型

    redis存储数据的基本类型有:string(字符串类型).hash(散列类型).list(列表类型).set(集合类型).zset(有序集合类型). redis中的每个对象都由一个redisObject结构来表示: /*  * Redis 对象  */ typedef struct redisObject {     // 类型     unsigned type:4;             // 不使用(对齐位)     unsigned notused:2;     // 编码方式  

  • Java中Optional类及orElse方法详解

    目录 引言 Java 中的 Optional 类 ofNullable() 方法 orElse() 方法 案例 orElseGet() 方法 案例 orElse() 与 orElseGet() 之间的区别 引言 为了让我更快的熟悉代码,前段时间组长交代了一个小任务,大致就是让我整理一下某个模块中涉及的 sql,也是方便我有目的的看代码,也是以后方便他们查问题(因为这个模块,涉及的判断很多,所以之前如果 sql 出错了,查问题比较繁琐). 昨天算是基本完成了,然后今天组长就让给我看一个该模块的缺陷

  • java中对Redis的缓存进行操作的示例代码

    Redis 是一个NoSQL数据库,也是一个高性能的key-value数据库.一般我们在做Java项目的时候,通常会了加快查询效率,减少和数据库的连接次数,我们都会在代码中加入缓存功能.Redis的高效缓存功能给我们解决了难题.下面我主要讲讲在Java项目中怎么去连接Redis服务器以及需要注意的事项. 1.导入必须的Jar包 使用Java操作Redis需要两个必须的Jar包:jedis-2.5.1.jar 和  commons-pool2-2.0.jar .每个版本可以不一样,根据你自己下载的

  • Java操作redis实现增删查改功能的方法示例

    本文实例讲述了Java操作redis实现增删查改功能的方法.分享给大家供大家参考,具体如下: 首先,我们需要在windows下配置一个redis环境,具体配置教程请看:http://www.jb51.net/article/96230.htm 然后需要导入:jedis-2.7.3.jar这个包,看如下代码: package redis.main; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; imp

  • Java中常用缓存Cache机制的实现

    缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例.这样做可以减少系统开销,提高系统效率. 缓存主要可分为二大类: 一.通过文件缓存,顾名思义文件缓存是指把数据存储在磁盘上,不管你是以XML格式,序列化文件DAT格式还是其它文件格式: 二.内存缓存,也就是实现一个类中静态Map,对这个Map进行常规的增删查. import java.util.*; //Description: 管理缓存 //可扩展的功能:当chche到内存溢出时必须清除掉最早

  • Java中如何保证缓存一致性问题

    目录 前言: 方案分析 方案一:更新缓存,更新数据库 方案二:更新数据库,更新缓存 方案三:删除缓存,更新数据库 方案四:更新数据库,删除缓存 方案对比 总结 推荐方案 延迟双删 实际场景 写缓存策略 读缓存策略 注意 前言: 一道之前的面试题: 如何保证缓存和数据库的一致性? 下面介绍几种方案(大家回答的时候最好根据自己的业务,结合下面的方案) 方案分析 更新缓存策略方式常见的有下面几种: 先更新缓存,再更新数据库 先更新数据库,再更新缓存 先删除缓存,再更新数据库 先更新数据库,再删除缓存

随机推荐