首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏golang

    每日一库之 go-cache 单机缓存

    go-cache 是一个 golang 的缓存库, 用于缓存 k, v 对, 缓存时间过期后存储的值会失效, 底层是一个 map, 过期后内部 Item 是不会自动清除, 需要手动调用DeleteExpired 方法清除过期项 安装 go get github.com/patrickmn/go-cache 使用方法 // 创建Cache对象, 第一个参数为缓存时间, 第二个参数为清理缓存项的时间间隔 // 底层是一个 map, 键是 string, 值是 Item mu是互斥锁, 用于保护items的并发访问 onEvicted是删除缓存项时的回调函数, 当缓存项过期时, 会调用该函数 janitor是清理缓存项的定时器 c.mu.Unlock() } 设置写锁,防止多个 goroutine 同时修改一个 item, 然后设置过期时间 这就是 go-cache 库, 主要用于单机缓存,底层是一个 map, 使用RWMutex 锁控制读写和time.Now().Add(d).UnixNano()设置过期时间, 基于本地内存 , 如果需要分布式缓存, 可以考虑使用 redis 等其他缓存

    42811编辑于 2025-07-04
  • 来自专栏非著名运维

    企业实战(4) Nacos单机部署与使用

    PATH [root@localhost ~]# source /etc/profile [root@localhost ~]# systemctl stop firewalld //停止防火墙 单机模式启动

    89510编辑于 2022-06-22
  • 来自专栏NetCore 从壹开始

    【BlogBook书】4、Cache:缓存

    框架已经将缓存集成到了官方的IDistributedCache分布式缓存接口,可以直接使用内存缓存和分布式缓存。 默认使用内存缓存,开启Redis开关以后,使用分布式缓存。 一、相关的依赖注入配置 builder.Services.AddCacheSetup(); 相关参数设置 "Redis": { "Enable": false,//是否开启redis缓存 "ConnectionString": "127.0.0.1:6379",//可以配置密码 "InstanceName": "" //前缀 }, 两种缓存机制统一封装,并二次封装到了ICache ///

    /// 统一注册缓存 /// /// <param name="services"></param> public static void AddCacheSetup caching; public CacheManageController(ICaching caching) { _caching = caching; } /// /// 获取全部缓存

    41310编辑于 2024-01-15
  • 来自专栏千里行走

    pulsar-4单机部署pulsar单节点集群

    目录: (1).准备工作 (2).部署zookeeper (3).初始化集群元数据 (4).部署bookeeper单节点 (5).部署broker单节点 (6).pulsar-cient连接集群 (7) :6651 对应的删除元数据命令是: bin/pulsar delete-cluster-metadata --cluster pulsar-cluster --zookeeper ip:2181 (4)

    3.3K30发布于 2021-11-10
  • 来自专栏人人都是架构师

    Go每日一库之81:go-cache(单机缓存库)

    go-cache https://github.com/patrickmn/go-cache 一句话描述 基于内存的 K/V 存储/缓存 : (类似于Memcached),适用于单机应用程序 简介 go-cache 基于内存的 K/V 存储/缓存 : (类似于Memcached),适用于单机应用程序 ,支持删除,过期,默认Cache共享锁, 大量key的情况下会造成锁竞争严重 为什么选择go-cache? 可以存储任何对象(在给定的持续时间内或永久存储),并且可以由多个goroutine安全地使用缓存。 int64 // 过期时间:设置时间+缓存时长 } // Cache 整体缓存 type Cache struct { *cache } // cache 整体缓存 type cache struct } // janitor 定时清空缓存的结构 type janitor struct { Interval time.Duration // 多长时间扫描一次缓存 stop chan

    5.6K40编辑于 2023-09-30
  • 来自专栏漫漫架构路

    MyBatis设计思想(4)——缓存模块

    MyBatis设计思想(4)——缓存模块 一. 缓存概述 相信大家对于缓存都不陌生,MyBatis也提供了缓存的功能,在执行查询语句时首先尝试从缓存获取,避免频繁与数据库交互,大大提升了查询效率。 MyBatis有所谓的一级缓存和二级缓存,这个会在后面的核心流程中详细阐述,这里仅讨论缓存的内部实现。 void clear(); //获取缓存大小 int getSize(); } 我们知道,缓存的本质其实就是一个Map,MyBatis的缓存最基础的实现PerpetualCache,也是使用了一个 512,淘汰策略是LRU,每60s清空,且缓存为空时通过阻塞式从DB中查询数据,避免大量缓存击穿。 CacheKey的设计 既然说到了缓存,就不得不提缓存Key的设计问题。

    80120发布于 2020-09-03
  • 来自专栏张善友的专栏

    Enterprise Library 4 缓存快速入门

    this.primitivesCache = CacheFactory.GetCacheManager(); 4. 创建要添加到缓存中的条目。下列代码创建了一个 Product 类型的条目。 主动加载缓存 可以主动缓存数据以获取应用程序和进程所需要的所有状态,通常在应用程序或者进程启动时,可以在应用程序或者进程的整个生命周期内缓存数据。  主动加载缓存 1. cache = CacheFactory.GetCacheManager("Loading Scenario Cache Manager"); 4. 从 XML 文件中加载完整的数据集到缓存中。 cache = CacheFactory.GetCacheManager("Loading Scenario Cache Manager"); 4. 如果在主数据修改之前条目已经在缓存中,并在修改后从缓存中获取它,从缓存中获取的数据将与主数据源中的数据不匹配。

    1.4K90发布于 2018-01-19
  • 来自专栏爱可生开源社区

    技术分享 | OceanBase 4.X 最小化单机部署

    ---我们知道,OceanBase 3.X 版本部署单机架构(一个ZONE,一台SERVER)需要耗费较多硬件资源才能正常使用。 OceanBase 4.X 版本发布后,在资源占用这块做了很多优化,官方宣称4.X 版本是单机分布式一体化的架构,单台OB SERVER对数据的处理与单机数据库相比性能相当。 比如对于 OceanBase 3.X 版本,就算是单机部署,对多个分区的数据更新依然需要两阶段提交来保证其原子性;对于OceanBase 4.X 单机部署,对多分区的数据更新不再需要两阶段提交来保证其原子性 接下来,我们来体验下 OceanBase 4.X 版本的最小化单机部署。下面是通过 OBD 部署的配置文件: 主要是以下几个参数memory_limit 设置为4G,这个是所有租户的总内存容量。 实际租户可使用内存是4G - 1G=3G。由于系统租户默认内存为2G,所以最后预留给业务租户的内存只有1G。当然也可以减少系统租户内存容量为1G,不过不建议这么做。

    1.4K10编辑于 2023-01-17
  • 来自专栏IMWeb前端团队

    Webpack 4 如何优雅打包缓存文件

    本文作者:IMWeb 结一 原文出处:IMWeb社区 未经同意,禁止转载 一般来说,对于静态资源,我们都希望浏览器能够进行缓存,那样以后进入页面就可以直接使用缓存资源,页面直接直逼火箭速度打开 当然浏览器缓存方法有很多种,这里只简单讨论下 webpack 利用 hash 方式修改文件名,以达到缓存目的。 实战 hash 基础的配置文件如下(基于webpack 4,入口文件分别为 index 和 detail,其中每个文件中引入了一个图片): module.exports = { mode: 'none 为了解决这个不稳定的因素,webpack 4 提供了一个配置可以直接把 boilerplate 给单独抽离出来,配置如下: optimization: { runtimeChunk: 'single 于是我们也需要把数字改掉就好,webpack 4 在 optimization 新增了一个 namedChunks 配置,该配置开发环境为 true,生产环境为 false,所以在生产环境的时候我们为了构建稳定的

    1.3K10发布于 2019-12-03
  • 来自专栏pangguoming

    Ubuntu 下 Neo4j单机安装和集群环境安装

    Neo4j简介 Neo4j是一个用Java实现的、高性能的、NoSQL图形数据库。Neo4j 使用图(graph)相关的概念来描述数据模型,通过图中的节点和节点的关系来建模。 2 neo4j版本介绍 neo4j版本种类比较多,有开源的社区版本,也有企业版本。其中社区版本包括了很多neo4j的基本特性,但是貌似只支持单机不支持集群化,而企 业版本才支持集群化等特性。 单机版安装 单机安装十分简单: 1)将neo4j的community版本下载完毕后,进行解压,运行的命令是:tar –zvxf neo4j-community-2.0.1.tar.gz 2)修改conf /neo4j-server.properties配置文件,将org.neo4j.server.webserver.address=0.0.0.0注释字符去掉 3)最后进入bin目录,启动neo4j的服务即可 4) 输入 http://ip:7474/webadmin 即可进入neo4j控制台 ?

    2.6K100发布于 2018-03-08
  • 来自专栏修己xj

    使用 Docker Compose 部署单机版 Redis:简单高效的数据缓存与存储

    今天我们来介绍如何使用 docker-compose 部署单机版 Redis,这是一个简单高效的数据缓存与存储解决方案,广泛应用于Web应用、移动应用以及各类数据处理场景。 Redis(Remote Dictionary Server的缩写)是一个开源的内存数据存储系统,它可以用作数据库、缓存和消息中间件。 分布式:虽然本文介绍的是单机版 Redis,但 Redis 本身支持分布式部署,能够满足大规模应用的需求。 现在你已经成功地使用 Docker Compose 部署了单机版 Redis。你可以使用 Redis 的各种命令来进行数据的读写、存储、删除等操作。比如: 存储数据: set xj "修己!" Redis 作为一个简单高效的数据缓存与存储解决方案,适用于各种不同规模的应用场景。 希望本文对你理解并使用 Redis 与 Docker Compose 有所帮助。

    9.5K40编辑于 2023-08-25
  • 来自专栏For XX - 专注于技术本身

    TiDB单机、集群环境安装,单机急速体验

    TiDB分布式关系型数据库单机安装,急速体验,只适合测试环境 简介 TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical 官网:https://pingcap.com/docs-cn/ 单机环境安装 wget http://download.pingcap.org/tidb-latest-linux-amd64.tar.gz

    1.4K10编辑于 2022-06-09
  • 来自专栏用户9379088的专栏

    如果不知道这4缓存模式,敢说懂缓存吗?

    概述在系统架构中,缓存可谓提供系统性能的最简单方法之一,稍微有点开发经验的同学必然会与缓存打过交道,最起码也实践过。如果使用得当,缓存可以减少响应时间、减少数据库负载以及节省成本。 在这里,为大家系统地讲解4缓存模式以及它们的使用场景、流程以及优缺点。缓存策略的选择本质上来讲,缓存策略取决于数据和数据访问模式。换句话说,数据是如何写和读的。例如:系统是写多读少的吗? Write Behind Pattern:又叫Write Back,异步缓存写入模式上述缓存策略的划分是基于对数据的读写流程来区分的,有的缓存策略下是应用程序仅和缓存交互,有的缓存策略下应用程序同时与缓存和数据库进行交互 也就是说,当应用从缓存中查询某条数据时,如果数据不存在则由缓存来完成数据的加载,最后再由缓存返回数据结果给应用程序。 甚至有效的缓存数据被无效的缓存数据给清除掉。Write-BehindWrite-Behind和Write-Through在”程序只和缓存交互且只能通过缓存写数据“这方面很相似。

    1.7K20编辑于 2023-04-25
  • 来自专栏trick时间

    单机事务(-)

    【给点个赞如果觉得有帮助,我会做的更好】 最近想梳理下基础知识,又回顾了下单机事务内容。大家可作为一个参考。 读-》写-》写:事务单元2/事务单元3 共享资源A 读 4.继续提高并发,因为之前读会阻塞写,那么引入写锁,读写并行。

    67340发布于 2020-02-21
  • 来自专栏丑胖侠

    如果不知道这4缓存模式,敢说懂缓存吗?

    在这里,为大家系统地讲解4缓存模式以及它们的使用场景、流程以及优缺点。 缓存策略的选择 本质上来讲,缓存策略取决于数据和数据访问模式。换句话说,数据是如何写和读的。 例如: 系统是写多读少的吗? ,有的缓存策略下应用程序同时与缓存和数据库进行交互。 而缓存中的数据从哪里来是由缓存决定的。 Cache Aside是由调用方负责把数据加载入缓存,而Read Through则用缓存服务自己来加载,从而对应用方是透明的。 也就是说,当应用从缓存中查询某条数据时,如果数据不存在则由缓存来完成数据的加载,最后再由缓存返回数据结果给应用程序。 甚至有效的缓存数据被无效的缓存数据给清除掉。 Write-Behind Write-Behind和Write-Through在”程序只和缓存交互且只能通过缓存写数据“这方面很相似。

    93220编辑于 2022-07-29
  • 来自专栏用户9378866的专栏

    如果不知道这4缓存模式,敢说懂缓存吗?

    概述在系统架构中,缓存可谓提供系统性能的最简单方法之一,稍微有点开发经验的同学必然会与缓存打过交道,最起码也实践过。如果使用得当,缓存可以减少响应时间、减少数据库负载以及节省成本。 在这里,为大家系统地讲解4缓存模式以及它们的使用场景、流程以及优缺点。缓存策略的选择本质上来讲,缓存策略取决于数据和数据访问模式。换句话说,数据是如何写和读的。例如:系统是写多读少的吗? Write Behind Pattern:又叫Write Back,异步缓存写入模式上述缓存策略的划分是基于对数据的读写流程来区分的,有的缓存策略下是应用程序仅和缓存交互,有的缓存策略下应用程序同时与缓存和数据库进行交互 也就是说,当应用从缓存中查询某条数据时,如果数据不存在则由缓存来完成数据的加载,最后再由缓存返回数据结果给应用程序。 甚至有效的缓存数据被无效的缓存数据给清除掉。Write-BehindWrite-Behind和Write-Through在”程序只和缓存交互且只能通过缓存写数据“这方面很相似。

    43910编辑于 2023-05-24
  • 来自专栏Postgresql源码分析

    innodb与ext4缓存交互分析

    innodb与ext4缓存交互分析 一般来说对一个文件的写入操作包括两部分,对数据本身的写入操作,以及对文件属性(metadata元数据)的写入操作(这里的文件属性包括目录,inode等)。 (可通过设置磁盘控制器参数绕过) 这里我们使用术语“缓冲”(一般为buffer)来表示对数据写的暂存,使用术语“缓存”(一般为cache)来表示对数据读的暂存。 缓存主要是在内存中暂“存”从磁盘读到的数据,以便接下来对这些数据的访问不用再次访问慢速的底层存储设备。 cache能加快写入速度,当然是极好的东西,但磁盘一般会对cache内缓存数据排序使之最优刷新到磁盘,这样就可能导致要刷新的实际数据和journal顺序错乱。 data=ordered ext4 支持根据用户需求采用多种模式的日志记录。

    1.5K40编辑于 2022-05-12
  • 来自专栏从零开始的linux

    storm单机安装

    下载 wget https://archive.apache.org/dist/storm/apache-storm-1.1.0/apache-storm-1.1.0.tar.gz 配置 tar xf apache-storm-1.1.0.tar.gz cd apache-storm-1.1.0 vim conf/storm.yaml storm.zookeeper.servers: - "alex" nimbus.seeds: ["alex"] supervisor.slots.ports:

    1K50发布于 2018-04-25
  • 来自专栏运维学习交流

    RabbitMQ单机安装

    2.Centos7上安装RabbitMQ(单机) 官方文档: https://www.rabbitmq.com/install-rpm.html 2.1 安装erlang [root@linux- d28dx6y1hfq314.cloudfront.net/828/1039/el/7/x86_64/repodata/b52156a6708c0cfc469ea0e158e7bb8917beb3ce5f4bbca173a718f7d9d99373 00:00:00 inet_gethost 4 rabbitmq 7670 7669 0 23:02 ? 00:00:00 inet_gethost 4 root 7688 7021 0 23:02 pts/0 00:00:00 grep --color=auto rabbit 2.4 (4) 普通管理者(management) 仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。

    2.3K10发布于 2020-11-24
  • 来自专栏DevOps

    Spark 单机部署

    SPARK_HOME/bin:$PATH export PATH=$SPARK_HOME/sbin:$PATH source /etc/profile #以上配置生效 4.

    40910编辑于 2024-03-29
领券