Redis简介,设置redis内存大小,设置redis淘汰机制,查看内存占用情况,内存占用分析

news/2024/11/16 21:28:09/

为什么使用Redis缓存数据库

我们日常的开发,无非是对数据的处理。程序的定义也可以这样狭义的解释:算法+数据。可见数据库是多么重要的工具。但是关系型数据库的读写能力在200-1000次/秒不等,服务器好点可能更多,这导致在高并发的情况下,我们需要访问的数据可能会被锁住,使得响应速度变得异常的慢,体验很差。同时,如果数据很多,我们在做一些比较重的筛选查询时,可能会非常的慢。

什么是Redis

上述的问题,无非是因为磁盘的读写过低,那么有没有办法将将数据库放进内存呐。所以就有了Redis,Redis是一款nosql的数据库,也是一种键值对数据库。相比传统的关系型数据库,跑在内存里的Redis,无疑是非常快速的,读写数据也达到了30万次/秒,这无非是巨大的提升。同时Redis提供了持久化的支持,数据会同时写进磁盘,使得Redis可以完全代替关系型数据库。

官方定义:redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

在这里插入图片描述

如何持久化

https://blog.csdn.net/qq_39569480/article/details/125603603

内存管理

redis是个基于内存的缓存数据库,既然是基于内存的,那肯定就会有存满的时候,虽然可以限制redis使用内存的大小,但如果真的存满了,再有新的数据过来肯定就存不进去了,此时redis会执行既定的一些淘汰策略,下面一块看一下设置redis占用内存大小和redis几种种淘汰策略。

1.首先来看一下设置Redis最大占用内存

这里我使用的是win版redis找到安装目录下的redis.windows.conf文件(保存文件退出,重启redis服务),设置maxmemory参数,maxmemory是bytes字节类型,注意转换。修改如下所示
默认是没有限制内存大小的也就是无限制。

获取当前设置内存占用大小

config get maxmemory

设置最大内存限制

config set maxmemory 2GB

在这里插入图片描述
设置maxmemory参数,maxmemory是bytes字节类型,注意转换。
这里我设置了2G=214789585byte
在这里插入图片描述
设置好以上参数后,那么当redis占用内存达到2G时 就无法继续写入新的数据了,这时需要淘汰掉一些内存数据。那么接下来继续往下看。

redis内存淘汰机制

当Redis的内存使用达到设置的maxmemory上限时,Redis会根据所配置的eviction policy(淘汰策略)来决定如何处理新的写入操作。以下是几种常见的淘汰策略:

1.noeviction(默认):当内存使用达到上限时,新的写入操作会被禁止,客户端会收到错误信息。

2.allkeys-lru:当内存使用达到上限时,Redis会尝试淘汰最近最少使用的键(Key),以便为新的写入操作腾出空间。

3.allkeys-random:当内存使用达到上限时,Redis会随机选择一些键进行淘汰,以便为新的写入操作腾出空间。

4.volatile-lru:当内存使用达到上限时,Redis会尝试淘汰设置了过期时间的键中,最近最少使用的键(Key),以便为新的写入操作腾出空间。

5.volatile-random:当内存使用达到上限时,Redis会随机选择一些设置了过期时间的键进行淘汰,以便为新的写入操作腾出空间。

获取当前内存淘汰策略

 config get maxmemory-policy

命令方式修改

config set maxmemory-policy allkeys-lru  //通过命令修改淘汰策略

配置文件直接添加(保存文件退出,重启redis服务)
在这里插入图片描述

查看当前内存占用情况

当我们想查看当前内存占用了多少时,可使用redis.cli客户端查看
首先通过auth pwd通过验证
然后使用info memory查看内存占用的详细信息

used_memory和used_memory_human代表当前内存占用大小

used_memory_peak和used_memory_peak_human表示使用内存最大时的占用量
在这里插入图片描述

当然也可以直接使用 info 查看更详细的信息
在这里插入图片描述


http://www.ppmy.cn/news/989062.html

相关文章

draw up a plan

爱情是美好的,却不是唯一的。爱情只是属于个人化的感情。 推荐一篇关于爱情的美文: 在一个小镇上,有一家以制作精美巧克力而闻名的手工巧克力店,名叫“甜蜜之爱”。这家巧克力店是由一位名叫艾玛的年轻女性经营的,她对…

第19节:医学分析,分析轨迹数据以了解视频游戏对人类短期和长期记忆的影响

分析轨迹数据以了解视频游戏对人类短期和长期记忆的影响 1.简介 1.1背景和动机 这些数据是在一项关于探索新奇事物对儿童学习成功的影响的研究中记录的。 研究组由患有不同类型多动症的儿童和对照组组成。 在实验中,两组(患有多动症和对照组)都必须在不同的三天参加研究。…

JAVASE---数据类型与变量

1. 字面常量 常量即程序运行期间,固定不变的量称为常量,比如:一个礼拜七天,一年12个月等。 public class Demo{ public static void main(String[] args){ System.Out.println("hello world!"); System.Out.println(…

第十三章 类继承3

抽象基类 抽象基类的概念 抽象基类是一种特殊的类, 他不能被实例化, 只能被用作其他类的基类, 抽象基类必须包含一个或以上的纯虚函数, 这些函数没有实现(可以被定义), 需要在派生类中进行实现. class A { private:int x; public:void func1() 0; // 纯虚函数 } 继承和动态…

区间预测 | MATLAB实现VAR向量自回归时间序列区间预测

区间预测 | MATLAB实现VAR向量自回归时间序列区间预测 目录 区间预测 | MATLAB实现VAR向量自回归时间序列区间预测预测效果基本介绍程序设计参考资料预测效果 基本介绍 区间预测 | MATLAB实现VAR向量自回归时间序列区间预测 VAR(Vector Autoregression)模型是一种广泛应用于时…

git撤销上一次的commit

一行命令 git reset --soft HEAD^如果在vscode上面,就可以

开源快速开发平台:做好数据管理,实现流程化办公!

做好数据管理,可以提升企业的办公协作效率,实现数字化转型。开源快速开发平台是深受企业喜爱的低代码开发平台,拥有多项典型功能,是可以打造自主可控快速开发平台,实现一对一框架定制的软件平台。在快节奏的社会中&…

WIZnet W5100S-EVB-Pico DHCP 配置教程(三)

DHCP协议介绍 什么是DHCP? 动态主机配置协议DHCP(Dynamic Host Configuration Protocol)是一种网络管理协议,用于集中对用户IP地址进行动态管理和配置。 DHCP于1993年10月成为标准协议,其前身是BOOTP协议。DHCP协议由…