java模拟数据库缓存

实现缓存一些数据到本地,避免重复查询数据库,对数据库造成压力,代码如下:

package threadLock;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;

public class CatheDemo {

    private Map<String, Object> map = new HashMap<String, Object>();

    private ReadWriteLock rwl = new ReentrantReadWriteLock(); //定义读写锁

    public Object getData(String key){
        rwl.readLock().lock();
        Object value = null;
        try {
            value = map.get(key);
            if (value ==  null) {
                rwl.readLock().unlock();
                rwl.writeLock().lock();
                try {
                    if(value == null)
                        value = "dqwdwqd"; //从数据库中查找数据
                } catch (Exception e) {
                    e.printStackTrace();
                }finally{
                    rwl.writeLock().unlock();
                    rwl.readLock().lock();
                }

            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            rwl.readLock().unlock();
        }
        return value;
    }
}
时间: 2024-10-15 13:51:19

java模拟数据库缓存的相关文章

使用Redis和Java进行数据库缓存

使用Redis和Java探索数据库缓存,并查看一些不同的缓存策略.最近在优锐课学习收获颇多,记录下来大家一起进步! 为什么数据库缓存如此重要? 你在数据库中拥有的信息越多,随着时间的推移它将变得越慢. 即使是经过精心设计以支持许多并发请求的数据库管理系统,最终也会达到其极限. 数据库缓存是处理这些性能问题的最常见策略之一.缓存涉及将数据库查询的结果保存在更快,更易于访问的位置.正确完成缓存后,缓存将减少查询响应时间,减少数据库负载并降低成本. 但是,缓存也需要谨慎处理,因为它们实际上是在单独的位

Java环境配置 数据库 缓存Redis Nosql MongoDB 安装

系统选择 centos 7.0 1.java安装篇 rpm -qa |grep java 检测是否java yum remove java-1.7.0-openjdk 使用命令删除java 到oracle官方下载java安装包 rpm -ivh jdk-7u60-linux-x64.rpm ->安装jdk 2.Tomcat 安装篇 在apache官方下载tomcat wget http://apache.fayea.com/apache-mirror/tomcat/tomcat-7/v7.0.5

Java 高并发缓存与Guava Cache

一.背景 缓存是我们在开发中为了提高系统的性能,把经常的访问业务的数据第一次把处理结果先放到缓存中,第二次就不用在对相同的业务数据在重新处理一遍,这样就提高了系统的性能.缓存分好几种: (1)本地缓存. (2)数据库缓存. (3)分布式缓存. 分布式缓存比较常用的有memcached等,memcached是高性能的分布式内存缓存服务器,缓存业务处理结果,减少数据库访问次数和相同复杂逻辑处理的时间,以提高动态Web应用的速度. 提高可扩展性. 二.本地缓存在高并发下的问题以及解决 今天我们介绍的是

java模拟而一个电话本操作

哈哈,大家平时都在使用电话本,下面使用java来模拟而一个简单的电话本吧... 首先给出联系人的抽象类 package net.itaem.po; /** * * 电话人的信息 * */ public class User { private String name; private String phoneNumber; private String companyName; private String email; private String address; private Strin

java模拟手动Telnet过程之需求说明和功能点说明

一.需求 (一)每五分钟查询一次交换机的连接情况: (二)每2.5分钟更新每栋楼的连接情况. 二.功能点 序号 功能点说明 待定 完成 未完成 完成时间 预计用时(min) 实际用时(min) 备注 1 登录口令加密以及解密         60     2 表的创建和IP以及口令写入数据库         10     3 java模拟手动Telnet交换机         90     4 获取目标字符串         30     5 表的创建与当前目标数据的写入         10

两大数据库缓存系统实现对比

和redis,作为近些年最常用的缓存服务器,相信大家对它们再熟悉不过了.前两年还在学校时,我曾经读过它们的主要源码,如今写篇笔记从个人角度简单对比一下它们的实现方式,权当做复习,有理解错误之处,欢迎指正. 两大数据库缓存系统实现对比两大数据库缓存系统实现对比一. 综述读一个软件的源码,首先要弄懂软件是用作干什么的,那memcached和redis是干啥的?众所周知,数据一般会放在数据库中,但是查询数据会相对比较慢,特别是用户很多时,频繁的查询,需要耗费大量的时间.怎么办呢?数据放在哪里查询快?那

Java访问数据库Mysql

一.概述 本文主要介绍Java接连数据库的基本方法和步骤,并对其中的几个要点进行简要说明. 二.数据库访问步骤 在Java中连接数据库进行的访问主要有以下几个步骤: 加载数据库驱动 注册数据库驱动 建立到数据库的连接 访问数据库 首先,要调用Class.ForName()加载并注册mysql驱动程序类,加载驱动程序驱动类后,需要注册驱动程序类的一个实例,DriverManager类负责管理驱动程序,这个类提供了registerDriver()方法来注册驱动程序类的实例,并且我们不需要亲自调用这个

JavaEE学习之Spring Security3.x——模拟数据库实现用户,权限,资源的管理

一.引言 因项目需要最近研究了下Spring Security3.x,并模拟数据库实现用户,权限,资源的管理. 二.准备 1.了解一些Spring MVC相关知识: 2.了解一些AOP相关知识: 3.了解Spring: 4.了解Maven,并安装. 三.实现步骤 本示例中使用的版本是Spring Security3.2.2.通过数据库实现Spring Security认证授权大致需要以下几个步骤: 1.新建maven web project(因为本示例使用的是maven来构建的),项目结构如下,

java模拟post请求发送json

java模拟post请求发送json,用两种方式实现,第一种是HttpURLConnection发送post请求,第二种是使用httpclient模拟post请求, 方法一: 1 package main.utils; 2 3 import java.io.*; 4 import java.net.HttpURLConnection; 5 import java.net.URL; 6 7 public class HttpUtilTest { 8 Log log = new Log(this.g