Redis入门(三)

news2024/9/20 18:43:04

第5章 Redis的相关配置(redis.conf)

1)计量单位说明,大小写不敏感

# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
# units are case insensitive so 1GB 1Gb 1gB are all the same.

2)bind
默认情况bind=127.0.0.1只能接受本机的访问请求
不写的情况下,无限制接受任何ip地址的访问,产环境肯定要写你应用服务器的地址
如果开启了protected-mode,那么在没有设定bind ip且没有设密码的情况下,Redis只允许接受本机的请求

#bind 127.0.0.1
protected-mode no

3)port 服务端口号

port 6379

4)daemonize
是否为后台进程

daemonize yes

5)pidfile
存放pid文件的位置,每个实例会产生一个不同的pid文件

pidfile /var/run/redis_6379.pid

6)log file
日志文件存储位置
logfile “”
7)database
设定库的数量 默认16

databases 16

8)requirepass
设置密码

requirepass 123456

127.0.0.1:6379> set k1 v1

(error) NOAUTH Authentication required.
127.0.0.1:6379> auth "123456"
OK
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> get k1 
"v1"

9)maxmemory
设置Redis可以使用的内存量。一 旦到达内存使用上限,Redis将会试图移除内部数据,移除规则可以通过maxmemory-policy来指定。如果Redis无法根据移除规则来移除内存中的数据,或者设置了“不允许移除”,
那么Redis则会针对那些需要申请内存的指令返回错误信息,比如SET、LPUSH等。

# maxmemory <bytes>

10)maxmemory-policy
移除策略

# maxmemory-policy noeviction 

#volatile-lru:使用LRU算法移除key,只对设置了过期时间的键运算
#allkeys-lru:使用LRU算法移除key
#volatile-lfu :使用LFU策略移除key,只对设置了过期时间的键运算.
#allkeys-lfu :使用LFU策略移除key
#volatile-random:在过期集合中移除随机的key,只对设置了过期时间的键运算
#allkeys-random:移除随机的key
#volatile-ttl:移除那些TTL值最小的key,即那些最近要过期的key
#noeviction:不进行移除。针对写操作,只是返回错误信息
11)Maxmemory-samples
设置样本数量,LRU算法和最小TTL算法都并非是精确的算法,而是估算值,所以你可以设置样本的大小。一般设置3到7的数字,数值越小样本越不准确,但是性能消耗也越小。

# maxmemory-samples 5

第6章 Jedis

Jedis是Redis的Java客户端,可以通过Java代码的方式操作Redis

6.1 环境准备

1)添加依赖

redis.clients jedis 3.3.0 ## 6.2 基本测试 1)测试连通
public class JedisDemo
{

    public static void main(String[] args) {

        //创建一个客户端对象, 连接服务端
        Jedis jedis = new Jedis("hadoop102", 6379);

        //向服务端发送命令
        String res = jedis.ping();

        //如果是读操作,解析返回的结果
        System.out.println(res);

        //关闭客户端
        jedis.close();

    }
}

在这里插入图片描述
hadoop102开启服务
在这里插入图片描述
2)连接池
连接池主要用来节省每次连接redis服务带来的连接消耗,将连接好的实例反复利用

public class JedisPoolDemo
{

    public static void main(String[] args) {

        //创建一个存放客户端连接的池子
        JedisPool jedisPool = new JedisPool("hadoop102", 6379);

        //从池子中借一个连接
        Jedis jedis = jedisPool.getResource();

        //向服务端发送命令
        String res = jedis.ping();

        //如果是读操作,解析返回的结果
        System.out.println(res);

        //将连接还回池子
        //如果连接是从池中借来的,自动还回池子,如果不是借的,是直接new的,那么就关闭
        jedis.close();

    }
}

第7章 Redis 持久化

7.1 两种方式

Redis提供了2个不同形式的持久化方式 RDB 和 AOF。
RDB为全量快照备份,会在备份时将内存中的所有数据持久化到磁盘的一个文件中。(适合数据量小,数据量大很消耗资源)
AOF为增量日志备份,会将所有写操作命令不但追加记录在一个日志文件中。

7.2 RDB(Redis Database)

7.2.1 是什么

在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是在Redis服务启动时,将指定位置的快照文件直接读到内存里。

7.2.2 备份配置

RDB备份默认为自动开启,无需手动开启。当不使用时,只需要配置dbfilename后的值为空白即可。
1)RDB保存的文件
在redis.conf中配置文件名称,默认为dump.rdb

 dbfilename dump.rdb

2)RDB文件的保存路径
默认为Redis启动时命令行所在的目录下,也可以修改, redis 服务命令在哪个路径下执行的就是保存到哪个路径的!

dir ./

7.2.3 RDB自动保存策略

#   save <seconds> <changes>

#   Will save the DB if both the given number of seconds and the given
#   number of write operations against the DB occurred.
#
#   In the example below the behaviour will be to save:
#   after 900 sec (15 min) if at least 1 key changed
#   after 300 sec (5 min) if at least 10 keys changed
#   after 60 sec if at least 10000 keys changed
#   Note: you can disable saving completely by commenting out all "save" lines.
save 900 1
save 300 10
save 60 10000

7.2.4 RDB手动保存

(1)save: 在执行时,server端会阻塞客户端的读写。全力备份。
(2)bgsave: 在执行时,server端不阻塞客户端的读写,一边备份一边服务,速度慢。
(3)shutdown时服务会立刻执行备份后再关闭
(4)flushall时会将清空后的数据备份
7.2.5 RDB其他配置
1)进行rdb保存时,将文件压缩
rdbcompression yes
2)文件校验
在存储快照后,还可以让Redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能
rdbchecksum yes

7.2.6 RDB优缺点

1)优点:
相比AOF,节省磁盘空间,恢复速度快。适合容灾恢复(从磁盘到云端恢复数据的一种方式)。
2)缺点:
虽然Redis在fork时使用了写时拷贝技术,但是如果数据庞大时还是比较消耗性能。
在备份周期在一定间隔时间做一次备份,所以如果Redis意外down掉的话,就会丢失最后一次快照后的所有修改。
7.3 AOF(Append Only File)
7.3.1 是什么
以日志(文本文件 不会保存额外的信息)的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,Redis启动之初会读取该文件重新构建数据,换言之,Redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
7.3.2 开启AOF
1)AOF默认不开启,需要手动在配置文件中配置
appendonly yes
2)AOF文件
appendfilename “appendonly.aof”
3)AOF文件保存的位置,与RDB的路径一致
dir RDB的路径

7.3.3 AOF备份策略

# no: don't fsync, just let the OS flush the data when it wants. Faster.
# always: fsync after every write to the append only log. Slow, Safest.
# everysec: fsync only one time every second. Compromise.

appendfsync everysec

7.3.4 AOF文件损坏恢复

redis-check-aof --fix appendonly.aof

7.3.5 Rewrite

AOF采用文件追加方式,文件会越来越大为避免出现此种情况,新增了重写机制,当AOF文件的大小超过所设定的阈值时,Redis就会启动AOF文件的重写,只保留可以恢复数据的最小指令集.可以使用命令bgrewriteaof手动开始重写。
重写虽然可以节约大量磁盘空间,减少恢复时间。但是每次重写还是有一定的负担的,因此设定Redis要满足一定条件才会进行重写。
系统载入时或者上次重写完毕时,Redis会记录此时AOF大小,设为base_size,如果Redis的AOF当前大小>= base_size +base_size*100% (默认)且当前大小>=64mb(默认)的情况下,Redis会对AOF进行重写。
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

7.3.6 AOF的优缺点

1)优点:
(1)备份机制更稳健,丢失数据概率更低。默认只丢1秒的数据,极限情况只丢失最后一次操作的数据。
(2)可读的日志文本,通过操作AOF文件,可以处理误操作。
2)缺点:
(1)比起RDB占用更多的磁盘空间
(2)恢复备份速度要慢
(3)每次写都同步的话,有一定的性能压力
(4)存在个别bug,造成恢复不能

7.4 持久化的优先级

AOF的优先级大于RDB,如果同时开启了AOF和RDB,Redis服务启动时恢复数据以AOF为准.
7.5 RDB和AOF用哪个好
(1)官方推荐两个都启用。
(2)如果对数据不敏感,可以选单独用RDB
(3)不建议单独用 AOF,因为可能会出现Bug。
(4)如果只是做纯内存缓存,可以都不用

看场景:做缓存用,就可以不开启
如果要做数据库用,那么最好的情况都会丢失一条数据,要做数据库,就要允许有这种丢数据的风险!

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

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

相关文章

如何安装Apache服务

目录 什么是Apache 第一步 关闭防火墙和安全机制 第二步 系​统​上​定​义 SELinux 最​高​级​别 第三步 导入对应的依赖包并解包 第四步 安装依赖环境 第五步 移动相关文件 第六步 编译安装 第七步 编译 第八步 备份配置文件 第九步 优化执行路径 第十步 添加…

S32K324芯片学习笔记-实时控制系统-eMIOS

文章目录 Enhanced Modular IO Subsystem (eMIOS)eMISO配置通道类型通道配置BCTU Interface 简介功能框图Unified channels (UC)Buffered modesUC control and datapath diagramUC modesGPIO模式SAIC (Single Action Input Capture)模式Single Action Output Capture (SAOC) mo…

AI自动写代码:GitHub copilot插件在Idea的安装和使用教程

GitHub Copilot 是微软与OpenAI共同推出的一款AI编程工具&#xff0c;基于GitHub及其他网站的源代码&#xff0c;根据上文提示为程序员自动编写下文代码&#xff0c;可以极大地提高编写代码的效率。 先看看ChatGpt是怎么回答Copilot的功能特点&#xff1a; 给大家简单提取一…

【go】新手go module 踩坑入门rc_server

go1.3 后废弃了GOPATH 但是gomodule 要自己设置 :go env -w GO111MODULE=auto Microsoft Windows [版本 10.0.22621.1848] © Microsoft Corporation。保留所有权利。 C:\Users\zhangbin>adb connect 127.0.0.1:7555 connected to 127.0.0.1:7555 C:\Users\zhangbin&…

【计算机通识】未来的计算机

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、未来的计算机 2.1、光子计算机 2.2、生物计算机 2.3、量子计算机 3、总结 1、缘起 自然界中的一切事物都是处…

3d重建+神经渲染

3d重建 基于深度相机(结构光、TOF、双目摄像头)的三维重建基于图像的三维重建&#xff1a;深度学习基于视觉几何的传统三维重建&#xff1a;这种三维重建方法研究时间比较久远&#xff0c;技术相对成熟。主要通过多视角图像对采集数据的相机位置进行估计&#xff0c;再通过图像…

经典同步问题之哲学家就餐

文章目录 一&#xff1a;问题描述方案一&#xff1a;方案二&#xff1a;方案三&#xff1a; 一&#xff1a;问题描述 五个哲学家共用一张圆桌&#xff0c;分别坐在周围的五张椅子上&#xff0c;在圆桌上有五个碗和五只筷子&#xff0c;他们的生活方式是交替的进行思考和进餐。…

2023年测试岗前景?为什么要做自动化测试?8年测试总结...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 自动化测试是把以…

Web网页制作期末复习(2)——常用文本标签、列表标签、表格标签、Form表单、块元素与行内元素(内联元素)

目录 常用文本标签 列表标签 有序列表 无序列表 定义列表 表格标签 表格组成与特点 表格标签 表格属性 ​​​合并表格单元格 Form表单 属性说明 表单元素 文本框 密码框 提交按钮 块元素与行内元素&#xff08;内联元素&#xff09; 内联元素和块级元素…

3、DuiLib了解xml的使用和布局

文章目录 1、了解 XML 使用和布局2、VerticalLayout和HorizontalLayout3、TabLayout4、TileLayout5、Container6、ChildLayout 1、了解 XML 使用和布局 本节主要介绍 DuiLib 中 XML 关键字的使用和一些特性&#xff0c;通过构建一个简单的带标题栏和简单结构的窗口&#xff0c…

模型分享---登陆注册界面

目录 模型---登陆注册界面 验证码的生成&#xff1a; CheckCodeUtil.java&#xff1a; Servlet: 普通用户登陆&#xff1a; css: jsp: 运行结果&#xff1a; 管理员登陆&#xff1a; 运行结果&#xff1a; 注册&#xff1a; 普通用户&#xff1a; css: jsp: 运行…

FreeRTOS实时操作系统(三)任务挂起与恢复

系列文章目录 FreeRTOS实时操作系统&#xff08;一&#xff09;RTOS的基本概念 FreeRTOS实时操作系统&#xff08;二&#xff09;任务创建与任务删除&#xff08;HAL库&#xff09; 文章目录 系列文章目录前言任务挂起与恢复普通挂起恢复实例中断恢复实例 前言 继续跟着正点…

记录--封装一个通过js调用的全局vue组件

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前言 在使用vue项目编写的时候&#xff0c;不可避免的会碰到需要时js api来调用组件进行显示的情况 例如饿了么element ui 的 Notification 通知、Message 消息提示等组件 虽然已经提供了&#xff0c;…

postman和jmete接口测试的用法与区别

目录 前言 接口测试的目的 接口测试怎么测&#xff1a; 1.创建接口用例集&#xff08;没区别&#xff09; 2.步骤的实现&#xff08;有区别&#xff09; 3数据用例的实现 4断言的实现 5执行 6其他 总结&#xff1a; 前言 前阶段做了一个小调查&#xff0c;发现软件测…

DETR 系列有了新发现?DETRs with Hybrid Matching 论文阅读笔记

DETR 系列有了新发现&#xff1f;DETRs with Hybrid Matching 论文阅读笔记 一、Abstract二、引言三、相关工作目标检测中的 DETR其它视觉任务中的 DETR标签赋值 四、方法4.1 基础知识通用的 DETR 框架通用的可变形 Deformable-DETR 框架 4.2 混合匹配4.2.1 混合分支计划一对一…

client-go的Indexer三部曲之三:源码阅读

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 《client-go的Indexer三部曲》全部链接 基本功能性能测试源码阅读 本篇概览 本文是《client-go的Indexer三部曲》系列的终篇&#xff0c;主要任务是阅读和…

Vue全家桶(四):Vue Router 路由

目录 Vue Router1. 相关理解1.1 Vue Router的理解1.2 对SPA应用的理解1.3 路由的理解 2. 基本路由2.1 vue-router使用步骤2.2 几个注意点2.3 触发路由2.4 嵌套路由2.5 路由传递参数方式2.5.1 params 方式2.5.2 Query的方式 2.6 命名路由2.7 路由的props配置2.8 路由跳转的repla…

H3C-HCL模拟器-VLAN划分实验

一、实验拓扑结构图&#xff1a; 二、实验需求&#xff1a; 1. 按图示为PC配置IP地址 2. SW1和SW2上分别创建vlan10和vlan20&#xff0c;要求PC3和PC5属于vlan10&#xff0c;PC4和PV6属于vlan20 3. SW1和SW2相连的接口配置为trunk类型&#xff0c;允许vlan10和vlan20通过 4…

AI工程化的“基座能力”?—— 聊聊GPT Function Calling

点击↑上方↑蓝色“编了个程”关注我~ 这是Yasin的第 94 篇原创文章 最近AI大模型火出了圈&#xff0c;很多人惊叹它的智能程度。但大多数人都以为它的能力主要在“聊天”、“写文案”这方面。然而实际它能做的远远更多。 Chat GPT是当今世界上最智能的模型&#xff0c;它前段时…

【Linux】—— 详解进程PCB和进程状态

前言&#xff1a; 在上篇我们已经对有关体系结构的基本知识进行了详细的介绍&#xff0c;接下来我们将进入网络编程的第一个大块—— 有关进程相关的知识&#xff01;&#xff01;&#xff01; 目录 前言 &#xff08;一&#xff09; 基本概念 1、描述进程-PCB 2、查看进程…