03-NoSQL之Redis配置与优化

news2024/10/8 15:03:01

一、redis与memcache总体对比

1.性能

Redis:只使用单核,平均每一个核上Redis在存储小数据时比Memcached性能更高。

Memcached:可以使用多核,而在100k以上的数据中,Memcached性能要高于Redis。

2.内存使用效率

MemCached:使用简单的key-value存储,Memcached的内存利用率更高。

Redis:如果采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。

3.内存空间和数据量大小

MemCached:可以修改最大内存,采用LRU算法。Memcached单个key-value大小有限,一个value最大只支持1MB。

Redis:增加了VM的特性,突破了物理内存的限制。Redis单个key-value大小最大支持512MB 。

4.数据结构支持

MemCached:数据结构单一,仅用来缓存数据。

Redis:支持更加丰富的数据类型,Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

可以在服务器端直接对数据进行丰富的操作,这样可以减少网络IO次数和数据体积。

5.可靠性

Memcached:只是个内存缓存,对可靠性要求低。MemCached不支持数据持久化,断电或重启后数据消失,但稳定性是有保证的。

Redis:对可靠性要求高,支持数据持久化和数据恢复,允许单点故障,同时也会影响部分性能。支持数据的备份,即master-slave模式的数据备份。Redis支持数据的持久化,可以将内存中的数据保存到磁盘中,重启的时候可以再次加载进行使用。

6.应用场景

Memcached:动态系统中减轻数据库负载,提升性能;做缓存,适合多读少写,大数据量场景。

Redis:适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统。

2.实验案例

1.redis的安装

先把防火墙关掉

先把防火墙关掉
systemctl stop firewalld
set setenforce 0

[root@localhost ~]# yum -y install gcc* zlib-devel
解压 redis包
[root@localhost ~]# tar xvzf redis-4.0.9.tar.gz 
[root@localhost ~]# cd redis-4.0.9/ 

 make

2:查看进程
[root@localhost utils]# netstat -anpt | grep redis

3:redis服务控制
[root@localhost ~]#/etc/init.d/redis_6379 stop 
[root@localhost ~]#/etc/init.d/redis_6379 start 
[root@localhost ~]#/etc/init.d/redis_6379 restart 
[root@localhost ~]#/etc/init.d/redis_6379 status 

4.配置参数的修改
[root@localhost ~]#vim /etc/redis/6379.conf 
bind 127.0.0.1 192.168.10.101   	//监听的主机地址 
port 6379 		//端口 
daemonize yes 	//启用守护进程 
pidfile /var/run/redis_6379.pid 	//指定 PID 文件 
loglevel notice 	//日志级别 
logfile /var/log/redis_6379.log 	//指定日志文件 

[root@localhost~]#/etc/init.d/redis_6379 restart 
[root@localhost utils]# netstat -anpt | grep redis

二:Redis 命令工具
 redis-server:用于启动 Redis 的工具; 
 redis-benchmark:用于检测 Redis 在本机的运行效率; 
 redis-check-aof:修复 AOF 持久化文件; 
 redis-check-rdb:修复 RDB 持久化文件; 
 redis-cli:Redis 命令行工具。

redis常用命令:

set         创建
get         查看
keys *   查看所有
rename (会覆盖) 
renamenx (检查有没有同名,然后再决定是否执行 rename 命令,)
del        (命令可以删除当前数据库的指定 key)
exists    (命令可以判断键值是否存在)
type      (使用 type 命令可以获取 key 对应的 value 值类型)
select    (切换数据库)
move    (移动数据)
flushdb (清空当前数据库数据)
flushall  (清空所有数据库的数据)

 -p:指定服务器端口; 
 -s:指定服务器 socket; 
 -c:指定并发连接数; 
 -n:指定请求数; 
 -d:以字节的形式指定 SET/GET 值的数据大小; 
 -k:1=keep alive 0=reconnect; 
 -r:SET/GET/INCR 使用随机 key, SADD 使用随机值; 
 -P:通过管道传输<numreq>请求; 
 -q:强制退出 redis。仅显示 query/sec 值; 
 --csv:以 CSV 格式输出;
 -l:生成循环,永久执行测试; 
 -t:仅运行以逗号分隔的测试命令列表; 
 -I:Idle 模式。仅打开 N 个 idle 连接并等待。

五:Redis 持久化

Redis 的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为半持久化模式”);也可以把每一次数据变化都写入到一个 append only file(aof)里面(这称为全持久化模式”)

由于 Redis 的数据都存放在内存中,如果没有配置持久化,Redis 重启后数据就全丢失了。所以,需要开启 Redis 的持久化功能,将数据保存到磁盘上,当 Redis 重启后,可以从磁盘中恢复数据。Redis 提供两种方式进行持久化,一种是 RDBRedis DataBase 持久化(原理是将 Reids在内存中的数据库记录定时 dump 到磁盘上的 RDB 持久化),另外一种是 AOFappend only file持久化(原理是将 Reids 的操作日志以追加的方式写入文件)。

1:RDB 和 AOF 的区别

(1)RDB是什么?

默认采用的方法

RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。

触发机制:手动触发分别对应为save和bgsave命令

save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较多的实例会造成时间阻塞。线上环境不建议使用。

bgsave命令:Redis进程执行fork(用于创建进程的函数)操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束。阻塞只发生在fork阶段。

(2)RDB的优缺点:

RDB的优点:

RDB是一个紧凑压缩的二进制文件,代表Redis在某一个时间点上的数据快照。非常适用于备份,全量复制等场景。比如每6小时执行bgsave备份,并把RDB文件拷贝到远程机器或者文件系统中,用于灾难恢复。

Redis加载RDB恢复数据远远快于AOF方式。

RDB的缺点:

RDB方式数据没办法做到实时持久化/秒级持久化。因为bgsave每次运行都有执行fork操作创建子进程,属于重量级操作,频繁执行成本过高。

RDB文件使用特定二进制格式保存,Redis版本演进过程中有多个格式的RDB版本,存在老版本Redis服务无法兼容新版RDB格式的问题。

二、AOF是什么

AOF(append only file)持久化:以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中命令达到恢复数据的目的。AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流

二者选择的标准:

牺牲一些性能,换取更高的缓存一致性(AOF),

写操作频繁的时候,不启用备份来换取更高的性能,待手动运行 save 的时候,再做备份(RDB

备注:

如果redies重启之后,需要加载一个持久化文件,有限会选择AOF文件。

如果先开启了RDB,再开启AOF,RDB先执行了持久化,那么RDB文件中的内容会被AOF覆盖掉。

3:Redis 持久化配置

(1)RDB 持久化配置

[root@localhost ~]# vim /etc/redis/6379.conf

打开 6379.conf 文件之后,搜索 save,可以看到如下所示配置信息。

  •  save 900 1:在 900 秒(15 分钟)之后,如果至少有 1 个 key 发生变化,则 dump内存快照。
  •  save 300 10:在 300 秒(5 分钟)之后,如果至少有 10 个 key 发生变化,则 dump内存快照。
  •  save 60 10000:在 60 秒(1 分钟)之后,如果至少有 10000 个 key 发生变化,则dump 内存快照。
  • dbfilename dump.rdb :RDB文件名称           ##254行
  • dir /var/lib/redis/6379 :RDB文件路径          ##264行
  • rdbcompression yes :是否进行压缩               ##242行

(2)AOF 持久化配置

Redis 的配置文件中存在三种同步方式,它们分别是:

  • appendonly yes  :开启AOF持久化(默认为no)                ##673行
  • appendfilename "appendonly.aof "  :AOF文件名称            ##677行
  • # appendfsync always
  • appendfsync everysec
  • # appendfsync no

always:同步持久化,每次发生数据变化会立刻写入磁盘

everysec:默认推荐,每秒异步记录一次(默认值)

no:不同步,交给操作系统决定如何同步

  • aof-load-truncated yes          ##769行

忽略最后一条可能存在问题的指令

[root@localhost ~]#/etc/init.d/redis_6379 restart

(2)AOF重写

为了解决 AOF 文件体积不断增大的问题,用户可以向 Redis 发送 BGREWRITEAOF命令。BGREWRITEAOF 命令会通过移除 AOF 文件中的冗余命令来重写(rewriteAOF文件,使 AOF 文件的体积尽可能地变小。

127.0.0.1:6379> bgrewriteaof

Background append only file rewriting started

# 在日志进行BGREWRITEAOF时,如果no-appendfsync-on-rewrite设置为yes表示新写操作不进行同步fsync,只是暂存在缓冲区里,避免造成磁盘IO操作冲突,等重写完成后再写入。Redis中默认为no

no-appendfsync-on-rewrite no 

# 当前AOF文件大小是上次日志重写时AOF文件大小两倍时,发生BGREWRITEAOF操作

auto-aof-rewrite-percentage 100 

备注:

100指的是aof文件增长比例,指当前aof文件比上次重写的增长比例大小100为两倍

#当前AOF文件执行BGREWRITEAOF命令的最小值,避免刚开始启动Reids时由于文件尺寸较小导致频繁的BGREWRITEAOF

auto-aof-rewrite-min-size 64mb

六:性能管理

1:查看内存信息

192.168.9.236:7001> info memory

used_memory:1210776 #已经内存使用的大小,以字节为单位
used_memory_human:1.15M # 带单位展示,以M为单位
used_memory_rss:7802880 # 从操作系统角度看redis内存占用多少
used_memory_rss_human:7.44M # 带单位展示
maxmemory:1073741824 # 最大内存大小
maxmemory_human:1.00G # 带单位展示

2:回收策略

maxmemory-policy:回收策略

Ø volatile-lru:它允许 Redis 从整个数据集中挑选最近最少使用的 key 进行删除

Ø volatile-ttl按照key的过期时间进行淘汰

Ø volatile-random:从已设置过期时间的数据集合中随机挑选数据淘汰;

Ø allkeys-lru:使用 LRU 算法从所有数据集合中淘汰数据;

Ø allkeys-random:从数据集合中任意选择数据淘汰;

Ø noeviction:禁止淘汰数据(默认值)

备注:

设置key的过期时间

expire v1 10

v1的过期时间为10秒

备注:

Redis 由于内存压力需要回收一个 key 时,Redis 首先考虑的不是回收最旧的数据,而是在最近最少使用的 key 或即将过期的 key 中随机选择一个 key,从数据集中删除

redis设置密码

  一、设置方法

  方法一:通过配置文件redis.conf设置密码

  找到requirepass关键字,后面就是跟的密码,默认情况下是注释掉的,即默认不需要密码,如下:

  

   打开注释,设置为自己的密码,重启即可

  方法二:通过命名设置密码

  使用redis-cli连接上redis,执行如下命令

config set requirepass 123456

  执行完毕,无需重启,退出客户端,重新登录就需要输入密码了

  二、连接方法

  1、连接时输入密码

[root@localhost bin]# ./redis-cli -a 123456

  2、先连接再输入密码

[root@localhost bin]# ./redis-cli127.0.0.1:6379> auth 123456

  三、关闭方法

[root@localhost bin]# ./redis-cli -a 123456 shutdown

  四、区别

  1)修改配置文件设置的密码永久生效;使用命令设置的密码临时生效,重启后失效

  2)修改配置文件设置的密码,需要重启生效;使用命令设置的密码,退出后再登录生效,重启后失效

  3)命令的优先级高于配置文件的优先级

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1917695.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑数据恢复篇:如何从电脑中恢复已删除的照片

按下 Shift Delete 后后悔了&#xff1f;想要恢复已删除的照片&#xff1f;好吧&#xff0c;如果是这样的话&#xff0c;你来对地方了。在本文中&#xff0c;我们将讨论如何从 PC 中恢复已删除的文件。 自从摄影的概念被提出以来&#xff0c;人们就对它着迷。以前&#xff0c…

Windows下载及安装OpenSSL

文章目录 前言一、OpenSSL下载二、OpenSSL安装1.双击下载好的安装包2.选择【I accept the agreement】→ 点击【Next】3.选择OpenSSL安装的位置 → 点击【Next】4.点击【Next】5.点击【Next】6.点击【Install】安装OpenSSL7.等待安装8.取消勾选 → 点击【Finish】完成安装 三、…

优思学院|流水线生产为什么不是最高效的?

谈到工厂的生产模式&#xff0c;人们印象中可能会浮现出长长的流水线和密集的作业人员。在传统的大规模生产装配线上确实如此&#xff0c;强调的是标准化大规模生产&#xff0c;采用专职分工方式&#xff0c;生产线上的作业人员只做同一个简单的动作&#xff0c;以达到降低成本…

SSL 证书错误:如何修复以及错误发生的原因

SSL证书可以提升网站的可信度。然而&#xff0c;如果您的SSL证书出现错误&#xff0c;您可能会得到一个“不安全”的标签&#xff0c;这可能会导致访问者失去对您网站的信任并转向竞争对手。 本文将介绍SSL证书错误的原因及其对用户的潜在影响。随后&#xff0c;我们将提供详细…

实验7 数据查询(2)

一、实验目的 学习SQL语言的定义、操纵功能熟悉通过SQL语言对数据库进行查询操作&#xff0c;包括单表查询、多表查询、嵌套查询、集合查询 二、实验软件 MySQL三、实验内容和要求 给定四个关联表&#xff0c;其定义和数据加载如下&#xff1a; 学生表 Student create tab…

【信创国产化】Nacos 2.3.2连接达梦数据库

JeecgBoot 目前提供的nacos版本号 2.3.2已经支持与达梦数据库对接。 jeecg-boot/jeecg-server-cloud/jeecg-cloud-nacos项目默认加入了达梦驱动和yml配置。如果你是老代码&#xff0c;可以参考下面的步骤手工集成 项目地址&#xff1a;https://github.com/jeecgboot/JeecgBoot…

【文科类cpci/cnki会议,主题广泛】第九届现代管理、教育与社会科学国际学术会议(MMET2024)

会议信息 点击跳转会议官网&#xff08;更多会议信息可添加会议官网下方负责老师-杨老师&#xff09; 大会时间&#xff1a;2024年09月20-22日 大会地点&#xff1a;中国-厦门 提交检索&#xff1a;CPCI&#xff0c;CNKI (知网检索快速稳定) 点击一键投稿 点击一键参会&a…

各向异性含水层中地下水三维流基本微分方程的推导(二)

各向异性含水层中地下水三维流基本微分方程的推导 参考文献&#xff1a; [1] 刘欣怡,付小莉.论连续性方程的推导及几种形式转换的方法[J].力学与实践,2023,45(02):469-474. 书接上回&#xff1a; 我们能得到三个方向的流入流出平衡方程&#xff1a; ∂ ρ u x ∂ x d x d y d…

入门PHP就来我这(高级)22 ~ 七天免登录案例

有胆量你就来跟着路老师卷起来&#xff01; -- 纯干货&#xff0c;技术知识分享 路老师给大家分享PHP语言的知识了&#xff0c;旨在想让大家入门PHP&#xff0c;并深入了解PHP语言。 上文讲述了cookie的概念&#xff0c;创建&#xff0c;获取&#xff0c;销毁以及生命周期后&am…

java设计模式(十五)命令模式(Command Pattern)

1、模式介绍&#xff1a; 命令模式&#xff08;Command Pattern&#xff09;是一种行为设计模式&#xff0c;其主要目的是将请求封装成一个对象&#xff0c;从而允许使用不同的请求、队列或者日志来参数化其他对象。这种模式使得命令的请求者和实现者解耦。 2、应用场景&…

王道计算机数据结构+插入排序、冒泡排序、希尔排序、快速排序、简单选择排序

本内容是基于王道计算机数据结构的插入排序、冒泡排序、希尔排序、快速排序、简单选择排序整理。 文章目录 插入排序算法性能代码 冒泡排序算法性能代码 希尔排序算法性能代码 快速排序算法性能代码 简单选择排序算法性能代码 插入排序 算法 算法思想&#xff1a;每次将一个…

谷歌报告显示:2023 年 50% 的0day漏洞利用背后都是间谍软件供应商

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 导 读 谷歌威胁分析小组 (TAG) 和谷歌子公司 Mandiant 表示&#xff0c;他们观察到 2023 年攻击中利用的0day漏洞…

骑行耳机有哪些品牌值得入手?盘点5大品质与口碑兼顾的耳机推荐!

骨传导耳机凭借卓越的骑行兼容性&#xff0c;赢得了众多骑行爱好者的青睐&#xff0c;然而&#xff0c;关于骨传导耳机导致佩戴不适或影响骑行安全的反馈却屡见不鲜。这一看似矛盾的现象&#xff0c;实则源于市场被众多非专业骨传导耳机品牌充斥&#xff0c;尤其是一些标榜专为…

LLMs可以进行任务规划吗?如果不行,LLMs+GNN可以吗?

深度图学习与大模型LLM(小编): 大家好,今天向大家介绍一篇最新发布的研究论文&#xff08;20240530&#xff09;。这篇论文探讨了如何通过引入GNN来提高大模型在任务规划(task planning)中的性能。*论文分析了LLMs在任务规划上的局限性,并提出了一种简单而有效的解决方案。* 1.…

【面试题】防火墙的部署模式有哪些?

防火墙的部署模式多种多样&#xff0c;每种模式都有其特定的应用场景和优缺点。以下是防火墙的主要部署模式&#xff1a; 一、按工作模式分类 路由模式 定义&#xff1a;当防火墙位于内部网络和外部网络之间时&#xff0c;需要将防火墙与内部网络、外部网络以及DMZ&#xff0…

昇思学习打卡-17-热门LLM及其他AI应用/基于MobileNetv2的垃圾分类

文章目录 网络介绍读取数据集训练训练策略模型保存损失函数优化器模型训练 网络介绍 MobileNetv2专注于移动端、嵌入式或IoT设备的轻量级CNN网络。MobileNet网络使用深度可分离卷积&#xff08;Depthwise Separable Convolution&#xff09;的思想在准确率小幅度降低的前提下&…

九.核心动画 - 显式动画

引言 本篇博客紧接着上一篇的隐式动画开始介绍显式动画。隐式动画是创建动态页面的一种简单的直接的方式&#xff0c;也是UIKit的动画机制基础。但是它并不能涵盖所有的动画类型。 显式动画 接下来我们就来研究另外一种动画显式动画&#xff0c;它能够对一些属性做指定的动画…

北斗GPS天线使用技巧与性能对比

北斗GPS天线使用中注意的问题 多系统兼容性&#xff1a;确保天线不仅能接收北斗信号&#xff0c;还能同时接收其他GNSS系统&#xff08;如GPS、GLONASS、Galileo&#xff09;的信号&#xff0c;以提高定位精度和可靠性。 信号频率选择&#xff1a;根据应用需求选择合适的信号…

【RHCE】实验(HTTP,DNS,SELinux,firewalld的运用)

一、题目 二、主服务器配置 1.下载HTTP服务&#xff0c;DNS服务 [rootlocalhost ~]# yum install -y httpd bind 2.开启防火墙&#xff0c;放行服务 # 开启防火墙 [rootlocalhost ~]# systemctl start firewalld # 放行服务 [rootlocalhost ~]# firewall-cmd --add-service…

【linux服务器】大语言模型实战教程:LLMS大模型快速部署到个人服务器

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言 说到大语言模型相信大家都不会陌生&#xff0c;大型语言模型(LLMs)是人工智能文本处理的主要类型,也现在最流行的人工智能…