实现本地缓存,存储容器肯定是 key/value 形式的数据结构,在 Java 中,也就是我们常用的 Map 集合。Map 中有 HashMap、Hashtable、ConcurrentHashMap 几种供我们选择,oa信用盘源码搭建修复(测试bbs.yasewl.com)如果不考虑高并发情况下数据安全问题,我们可以选择HashMap,如果考虑高并发情况下数据安全问题,我们可以选择 Hashtable、ConcurrentHashMap 中的一种集合,但是我们优先选择 ConcurrentHashMap,因为 ConcurrentHashMap 的性能比 Hashtable 要好。
2、过期缓存处理
因为缓存直接存储在内存中,如果我们不处理过期缓存,内存将被大量无效缓存占用,这不是我们想要的,所以我们需要清理这些失效的缓存。过期缓存处理可以参考 Redis 的策略来实现,Redis 采用的是定期删除 + 懒惰淘汰策略。
定期删除策略
定期删除策略是每隔一段时间检测已过期的缓存,并且降之删除。这个策略的优点是能够确保过期的缓存都会被删除。同时也存在着缺点,过期的缓存不一定能够及时的被删除,这跟我们设置的定时频率有关系,另一个缺点是如果缓存数据较多时,每次检测也会给 cup 带来不小的压力。
懒惰淘汰策略
懒惰淘汰策略是在使用缓存时,先判断缓存是否过期,如果过期将它删除,并且返回空。这个策略的优点是只有在查找的时候,才判断是否过期,对 CUP 影响较。同时这种策略有致命的缺点,当存入了大量的缓存,这些缓存都没有被使用并且已过期,都将成为无效缓存,这些无效的缓存将占用你大量的内存空间,最后导致服务器内存溢出。
我们简单的了解了一下 Redis 的两种过期缓存处理策略,每种策略都存在自己的优缺点。所以我们在使用过程中,可以将两种策略组合起来,结合效果还是非常理想的。
3、缓存淘汰策略
缓存淘汰跟过期缓存处理要区别开来,缓存淘汰是指当我们的缓存个数达到我们指定的缓存个数时,毕竟我们的内存不是无限的。如果我们需要继续添加缓存的话,我们就需要在现有的缓存中根据某种策略淘汰一些缓存,给新添加的缓存腾出位置,下面一起来认识几种常用的缓存淘汰策略。
先进先出策略
最先进入缓存的数据在缓存空间不够的情况下会被优先被清除掉,以腾出新的空间接受新的数据。该策略主要比较缓存元素的创建时间。在一些对数据实效性要求比较高的场景下,可考虑选择该类策略,优先保障最新数据可用。
最少使用策略
无论是否过期,根据元素的被使用次数判断,清除使用次数较少的元素释放空间。该策略主要比较元素的hitCount(命中次数),在保证高频数据有效性场景下,可选择这类策略。
最近最少使用策略
无论是否过期,根据元素最后一次被使用的时间戳,清除最远使用时间戳的元素释放空间。该策略主要比较缓存最近一次被get使用时间。在热点数据场景下较适用,优先保证热点数据的有效性。
随机淘汰策略
无论是否过期,随机淘汰某个缓存,如果对缓存数据没有任何要求,可以考虑使用该策略。
不淘汰策略
当缓存达到指定值之后,不淘汰任何缓存,而是不能新增缓存,直到有缓存淘汰时,才能继续添加缓存。
上面是实现本地缓存需要考虑的三个点,看完我们应该知该如何实现一个本地缓存了,不妨我们一起来实现一个本地缓存。
分享到:
相关推荐
封装redis常用基本命令.zip封装redis常用基本命令.zip封装redis常用基本命令.zip封装redis常用基本命令.zip封装redis常用基本命令.zip封装redis常用基本命令.zip封装redis常用基本命令.zip封装redis常用基本命令.zip...
本文将深入探讨Redis的基础使用和命令,帮助初学者快速入门。 首先,安装Redis。Windows用户可以下载预编译的Redis二进制文件,解压后启动`redis-server.exe`来启动服务。同时,Redis提供了`redis-cli.exe`客户端,...
使用redis构建简单的社交网站使用redis构建简单的社交网站项目源码.zip使用redis构建简单的社交网站项目源码.zip使用redis构建简单的社交网站项目源码.zip使用redis构建简单的社交网站项目源码.zip使用redis构建简单...
本地安装redis,通过安装目录下的redis客户端程序可以连接任意Redis服务(只要服务端是启动着的),命令 redis-cli -h ip -p port。如果服务端要求认证资格,可能还要输入用户名密码等参数。 Redis命令十分丰富,...
使用以下命令安装Redis: ``` sudo apt install redis-server ``` 4. **配置Redis**: 配置文件位于`/etc/redis/redis.conf`。根据需求修改配置,例如设置密码认证、绑定IP等。注意保存修改。 5. **启动Redis...
然后,使用`make`命令编译源码,配置时可能需要修改`src/Makefile`以适应Windows环境。编译完成后,将生成可执行文件`redis-server.exe`。 4. Windows服务化: 在Windows下运行Redis,可以将其注册为系统服务以...
Redis(Remote Dictionary Server),即远程字典服务,是一个开源的、高性能的、基于内存的Key-Value数据库,它使用ANSI C语言编写,支持网络,并提供了多种语言的API。Redis以其丰富的数据结构、高性能、持久化特性...
SpringBoot+VUE+Redis+nginx 网上拍卖平台源码 SpringBoot+VUE+Redis+nginx 网上拍卖平台源码 SpringBoot+VUE+Redis+nginx 网上拍卖平台源码 SpringBoot+VUE+Redis+nginx 网上拍卖平台源码 SpringBoot+...
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 附件里面包括redis源码,phpredis源码,redis指令及文档
本压缩包包含的"Redis参考手册.CHM"是Redis命令的中文完整版手册,对于学习和使用Redis的开发者来说,是一份极其实用的资料。 一、Redis数据类型 Redis支持五种基本数据类型:字符串(String)、哈希(Hash)、...
"docker 实现redis集群搭建" 一、Redis Cluster 概念 Redis Cluster 是 Redis 的分布式解决方案,旨在解决 Redis 单机中心...使用 Docker 容器化技术,可以轻松地搭建和管理 Redis 集群,提高开发效率和系统稳定性。
命令参考手册是了解和使用Redis功能的关键途径,能够帮助开发者快速掌握Redis的使用方法。 1. DEL命令:DEL命令用于删除给定的一个或多个key。对于字符串类型的key,删除操作的时间复杂度为O(1),而对于列表、集合...
可以使用`redis-server`命令指定配置文件: ```sh redis-server /path/to/redis.conf --port 6379 redis-server /path/to/redis.conf --port 6380 redis-server /path/to/redis.conf --port 6381 ``` 步骤3:创建...
本文档主要介绍了使用Docker搭建Redis主从复制和哨兵模式集群的步骤。下面是详细的知识点总结: 一、Docker安装 * 下载Docker二进制文件(离线安装包),使用wget命令下载 * 上传到服务器,使用MobaXterm等工具 * ...
使用`src/redis-server`命令启动Redis: ``` src/redis-server /path/to/redis.conf ``` 6. **测试连接** 使用`src/redis-cli`进行连接和测试: ``` src/redis-cli ping ``` **二、Redis配置详解** - `...
进入Redis的源代码目录,使用`make PREFIX=/usr/local/soft/redis_ install`命令将Redis安装到你之前创建的目录下。 安装完成后,你需要将Redis的可执行文件`redis-sentinel`复制到`bin`目录下,以便后续使用。执行...
本指南将详细讲解如何完整地搭建一个 Redis Cluster,同时推荐配合网页教程进行操作以获得最佳体验。 ### 1. 预备知识 在开始之前,确保你已经了解了 Redis 的基本概念,如数据类型、命令等。此外,你需要以下工具...
源码分析是学习开源软件核心技术的重要途径,通过对Redis源码的学习,我们可以更深入地掌握其内部机制。 1. **Redis数据结构** Redis中的数据结构设计独特且高效,包括字符串(String)、哈希表(Hash)、列表...
"java源码:使用Redis存放Session RedisManager.zip"就是一个实例,展示了如何通过Java代码实现这一功能。 首先,Redis是一个开源、高性能的键值存储系统,适合存储字符串、哈希、列表、集合等多种数据结构,特别...