dw php网站开发/企业策划方案怎么做
1.Redis是什么
Redis是互联网技术领域使用最为广泛的存储中间件,它是Remote Dictionary Service的首字母缩写,也就是远程字典服务。
2.Redis的用途?
2.1 计数器
2.2 缓存
2.3 分布式锁
2.4 消息中间件
3.Redis的数据类型
3.1 string(字符串)
Redis的字符串是动态字符串,是可以修改的字符串,采用预分配冗余空间的方式 来减少内存的频繁分配。当字符串长度小于1M时,扩容都是加倍扩容,当超过1M时,每次扩容时增加1M的空间【字符串最大长度为 512M】 。
基本命令: set 、 get 、 exists 、 del
批量命令: mset 、 mget
其他命令: expire 、 setex 、 setnx 、 incr 、 incrby 【自增的最大值是signed long】
3.2 list(列表)
Redis的列表相当于Java语言里面的 LinkedList ,底层是链表实现。插入和删除操作非常快,时间复杂度为 O(1),但是索引定位很慢,时间复杂度为 O(n)。当列表弹出了最后一个元素之后,该数据结构自动被删除,内存被回收。
常用命令: rpush 、 lpush 、 rpop 、 lpop
查询命令: llen 、 lrange 、 lindex 、 ltirm
3.3 hash(哈希)
Redis 的字典相当于 Java 语言里面的 HashMap ,它是无序字典。内部实现结构上同 Java 的 HashMap 也是一致的,同样的数组 + 链表二维结构。当 hash 移除了最后一个元素之后,该数据结构自动被删除,内存被回收
常用命令: hset 、 hget 、 hgetall 、 hlen 、 hmet
其他命令: hincr 、 hincrbu
3.4 set(集合)
Redis 的集合相当于 Java 语言里面的 HashSet ,它内部的键值对是无序的唯一的。当集合中最后一个元素移除之后,数据结构自动删除,内存被回收。
常用命令: sadd 、 smembers 、 sismember 、 scard 、 spop
3.5 zset(有序集合)
Redis 的Zset 类似Java 的 SortedSet 和 HashMap 的结合体,一方面它是一个 set ,保证了内部 value 的唯一性,另一方面它可以给每个 value 赋予一个 score ,代表这个 value 的排序权 重。它的内部实现用的是一种叫着「 跳跃列表 」的数据结构。zset 中最后一个 value 被移除后,数据结构自动删除,内存被回收。
常用命令: sadd 、 smembers 、 sismember 、 scard 、 spop
3.6 公共操作
3.6.1 删除操作
del key [key …]
3.6.2 有效期
expire key second [单位] 设置key的有效期
ttl key 查看key的有效期 【-1 永久有效 -2 已失效 正整数 有效期】
已设置有效期的字符串重新set key value后有效期失效。
4.Redis数据持久方案
4.1 RDB
是一种快照式的数据存储,它会周期性的保存当前时间点Redis所有的数据到磁盘中。
当Redis需要进行快照操作时,它会fork出一个子进程,负责将快照写入磁盘,而父进程则继续处理请求。由于Redis使用了写时复制(COW)的技术,所以子进程只需要复制到父进程中发生过改变的数据页,而不是复制整个Redis进程的内存空间。因此,这个过程不会对父进程的性能造成较大的影响。
Redis会将数据集的快照dump到dump.rdb文件中。此外,我们也可以通过配置文件来修改Redis服务器dump快照的频率,在打开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内存快照。
优点:RDB持久化文件,速度比较快,而且存储的是一个二进制文件,传输起来很方便。
缺点:RDB无法保证数据的绝对安全,有时候就是1s也会有很大的数据丢失。
4.2 AOF
是一种追加式的存储方式,会实时的记录Redis的写操作到磁盘中。
在Redis的配置文件中存在三种同步方式,它们分别是:
vim /etc/redis/6379.conf
● appendfsync always:
命令写入aof_ buf后立即调用系统fsync操作同步到AOF文件,fsync完成后线程返回。这种情况下,每次有写命令都要同步到AOF文件,硬盘IO成为性能瓶颈,Redis只能支持大约几百TPS写入,严重降低了Redis的性能;即便是使用固态硬盘(SSD),每秒大约也只能处理几万个命令,而且会大大降低SSD的寿命。
● appendfsync no:
命令写入aof_ buf后调用系统write操作,不对AOF文件做fsync同步;同步由操作系统负责,通常同步周期为30秒。这种情况下,文件同步的时间不可控,且缓冲区中堆积的数据会很多,数据安全性无法保证。
● appendfsync everysec:
命令写入aof_ buf后调用系统write操作,write完成后线程返回; fsync同步文件操作由专门的线程每秒调用一次。everysec是前述两种策略的折中,是性能和数据安全性的平衡,因此是Redis的默认配置,也是我们推荐的配置。
AOF执行流程:
命令追加(append): 将Redis的写命令追加到缓冲区aof_buf;【避免硬盘IO成为Redis的瓶颈】
文件(write)和(sync):根据不同的同步策略将aof_buf中的内容同步到硬盘;【丢失数据】
文件重写(rewrite): 定期重写AOF文件,达到压缩的目的。AOF文件重写:
子进程执行【避免Redis无法正常使用】新增一个AOF文件,子进程开启时增加了一个AOF重写缓存,Redis服务器主进程在执行完写命令之后,会同时将这个写命令追加到AOF缓冲区和AOF重写缓冲区 。AOF重写文件写完之后会将AOF重写缓存中的数据写入AOF重写文件【主线程阻塞】,写入完成后将AOF重写文件重命名为覆盖原有文件【主线程阻塞】。
AOF文件重写触发条件:
1.没有BGSAVE命令(RDB持久化)/AOF持久化在执行;
2.没有BGREWRITEAOF在进行;
3.当前AOF文件大小要大于server.aof_rewrite_min_size(默认为1MB),或者在redis.conf配置了auto-aof-rewrite-min-size大小;
4.当前AOF文件大小和最后一次重写后的大小之间的比率等于或者等于指定的增长百分比(在配置文件设置了auto-aof-rewrite-percentage参数,不设置默认为100%)
5.如果前面三个条件都满足,并且当前AOF文件大小比最后一次AOF重写时的大小要大于指定的百分比,那么触发自动AOF重写。
优点:AOF相对RDB更加安全,一般不会有数据的丢失或者很少。
缺点:AOF相对RDB持久化的速度更慢,存储的是一个文本文件,到了后期文件会比较大,传输困难。
官方推荐同时开启AOF和RDB。
5.Redis集群模式
5.1 Codis
Codis是基于Redis Cluster的代理工具,可以通过代理实现数据的分片和负载均衡。Codis具有配置简单、扩展性好等特点。
5.2 Redis Sentinel
Redis Sentinel是Redis官方提供的高可用方案,可以通过自动故障检测、自动主从切换等功能,实现Redis的高可用。
5.3 Redisson
Redisson是一个开源的Redis客户端,支持分布式锁、分布式集合、分布式对象等功能,可以将多个Redis实例组成一个集群来提供高并发服务。
5.4 Twemproxy
Twemproxy是一个代理工具,支持多个Redis实例之间的分片和负载均衡,可以通过配置实现数据的分片和负载均衡
6.RedisAP模式
6.1 高可用性
Redis在分布式模式下采用AP模型,可以在节点故障的情况下,保证整个系统的高可用性,不会影响用户使用和数据的完整性。Redis采用主从复制和哨兵模式来保证系统在节点故障时的高可用性。
6.2 数据一致性
Redis为了保证数据一致性,对于主从复制中的主节点和从节点进行数据同步,采用异步复制方式,保证了高性能。Redis同时采用哨兵模式,负责监控所有的Redis节点,一旦某个节点故障,哨兵会自动发现新的主节点,保证数据的一致性和可用性。
6.3 高扩展性
Redis采用AP模型,可以实现分布式的节点扩展,保证系统的高扩展性。Redis的节点之间采用无中心化的结构,各个节点之间相互独立,通过分片的方式来进行数据存储与同步,简单易上手,非常容易实现扩展。
7.内存淘汰策略
7.1 拒绝淘汰
noeviction 拒绝写入操作。【3.0+默认策略,保证业务数据的安全性】
7.2 允许淘汰
7.2.1全量数据范围淘汰
allkeys-random:随机淘汰任意键值。【数据集较大,保持数据的随机性要求】
allkeys-lru:淘汰整个键值中最久未使用的键值。【数据集小,侧重当前热度。】
allkeys-lfu:淘汰整个键值中最少使用的键值。【数据集小,侧重整体热度。4.0+】
7.2.2设置过期时间数据淘汰
volatile-random:随机淘汰设置了过期时间的任意键值。【数据集较大,保持数据的随机性要求】
volatile-ttl:优先淘汰更早过期的键值。【数据集小,侧重数据的及时更新】
volatile-lru:淘汰所有设置了过期时间的键值中,最久未使用的键值。【数据集小,侧重当前热度。3.0-默认策略】
volatile-lfu:淘汰所有设置了过期时间的键值中,最少使用的键值。【数据集小,侧重整体热度。4.0+】
相关文章:

Redis 工作总结
1.Redis是什么 Redis是互联网技术领域使用最为广泛的存储中间件,它是Remote Dictionary Service的首字母缩写,也就是远程字典服务。 2.Redis的用途? 2.1 计数器 2.2 缓存 2.3 分布式锁 2.4 消息中间件 3.Redis的数据类型 3.1 string&am…...

GO学习之 数据库(Redis)
GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…...

谈一谈浏览器与Node.js中的JavaScript事件循环,宏任务与微任务机制
JavaScript中的异步代码 JavaScript是一个单线程非阻塞的脚本语言。这代表代码是执行在一个主线程上面的。但是JavaScript中有很多耗时的异步操作,例如AJAX,setTimeout等等;也有很多事件,例如用户触发的点击事件,鼠标…...

User Java bean的命名规范
Java Bean 是一种用于表示简单的、可重用的组件的规范。它是一个符合特定命名和约定的 Java 类,通常用于封装数据和提供访问方法。以下是关于 Java Bean 命名规范的一些准则: 类名: 类名应该使用驼峰命名法(Camel Case)…...

ajax和fetch的区别
ajax 和 fetch的相同点和区别是什么? 以前我们都用ajax去做请求, 但是原生的ajax不好用,我们会用$.ajax或者axios插件去请求,他们都是ajax的封装 最近出来个fetch是什么? 问到这里的时候,你就已经入坑了&am…...

java+springboot+mysql村务档案管理系统
项目介绍: 使用javaspringbootmysql开发的村务档案管理系统,系统包含超级管理员、工作人员角色,功能如下: 超级管理员:系统用户管理(工作人员管理);公开资料;会议记录&…...

windows查看/删除DNS缓存
一、查看DNS缓存 打开CMD,输入ipconfig/displaydns 二、删除DNS缓存 打开CMD,输入ipconfig/flushdns...

自动化测试之Junit
Junit引入注解参数化单参数多参数方法传参 测试用例执行顺序断言测试套件 Junit引入 Junit来编写和组织自动化测试用例,使用Selenium来实际模拟用户与Web应用程序的交互。也就是使用JUnit的测试功能来管理和运行Selenium测试。常见的做法是,使用JUnit作…...

Spring Boot 整合MyBatis-Plus
😀前言 本篇博文是关于Spring Boot 整合MyBatis-Plus的,希望你能够喜欢😊 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的…...

CC++ 常用技巧
C 中的C C 是面向过程的是把整个大程序分为一个个的子函数;C 是面向对象的是把整个程序划分为一个个的类。C 是完全兼容C 的,C 是C 的子集,C 是C 的超集。C 又对C 做了很多补充和提升,因此使用C 会比使用纯C 更方便。混用C和C&am…...

【AndroidStudio】屏蔽小米打印
使用小米手机调试时,会一直有notifyQueue load error的打印 在过滤器重添加过滤条件即可 -message:notifyQueue...

Tomcat的安装与介绍
首先我们先了解一下什么是服务器?什么是服务器软件? 什么是服务器?安装了服务器软件的计算机。 什么是服务器软件? 服务器软件是一种运行在服务器操作系统上,用于接收和处理客户端请求,并提供相应服务和资…...

说点大实话丨知名技术博主 Kirito 测评云原生网关
作者:徐靖峰 关注了阿里云云原生公众号,经常能看到 MSE-Higress 相关的推文,恰逢这次阿里云产品举办了一个 MSE-Higress 云原生网关的测评活动,借此机会体验了一把云原生网关的功能。 购买流程体验 购买网关时,页面明…...

时序预测 | MATLAB实现SO-CNN-BiLSTM蛇群算法优化卷积双向长短期记忆神经网络时间序列预测
时序预测 | MATLAB实现SO-CNN-BiLSTM蛇群算法优化卷积双向长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现SO-CNN-BiLSTM蛇群算法优化卷积双向长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 | MATLAB实现SO-CNN-BiL…...

简述docker的网络模式
Docker 提供了多种网络模式,用于控制容器之间以及容器与主机之间的网络通信。以下是 Docker 的一些常见网络模式 briage模式: docker容器启动时默认就是该模式,在该模式下,docker容器会连接到一个名为docker0的虚拟以太网桥上,通…...

MySql-8.0.34 CentOS 安装命令记录
1、执行以下命令获取 glibc 版本,根据版本下载相应的MySQL安装包。 ldd --version 2、下载MySQL。 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.34-linux-glibc2.17-x86_64.tar.gz 3、解压 tar -xzvf mysql-8.0.34-linux-glibc2.17-x86_64.t…...

开发电子木鱼功德+1需要多少钱
冥想木鱼小程序是一种结合了冥想和科技的应用形式,为用户提供了随时随地进行冥想的便捷方式。开发一款高质量的冥想木鱼小程序需要综合考虑技术实现、冥想专业性和用户体验等多个方面。本文将详细介绍冥想木鱼小程序的开发过程,并探讨其中的专业性与思考…...

批处理中扩展解释%~的相关知识和用法,并给出示例和实际运行结果展示
批处理中扩展解释%~的相关知识和用法,并给出示例和实际运行结果展示 在批处理脚本中,%~是一个特殊的前缀,用于对参数和变量进行字符串处理。这个前缀后面可以跟着不同的字符,用于执行不同的操作。下面是一些常见的用法:…...

LA@向量组间的表示关系
文章目录 2个向量组间的表示关系向量组的相互表出向量组用另一个向量组表示👺线性表示的系数矩阵矩阵乘法与线性表出列向量组线性表示行向量组线性表示 向量组等价👺向量组等价的性质推论 等价矩阵与向量组等价的关系行等价矩阵的行向量组等价列等价矩阵…...

Mybatis与Spring集成
目录 一.Spring整合Mybatis 1.什么是Spring整合Mybatis 新建一个ssm 编辑 导入pom依赖 导入generatorConfig.xml 导入Spring-context.xml文件 导入Spring-mybatis.xml文件 自动生成Bookmapper.xml和Bookmapper文件 编写接口类:Bookbiz 编写接口实现类 …...

AMBA总线协议(0)——目录与传送门
一、AMBA总线协议 Arm高级微控制器总线架构(Advanced Microcontroller Bus Architecture,AMBA)是一种开放式标准片上互联规范,用于连接和管理片上系统(System on Chip,Soc)中的功能块。 AMBA是一种广泛用于…...

R语言快速生成三线表(1)
R语言的优势在于批量处理,常使用到循环和函数,三线表是科研文章中必备的内容。利用函数实现自动判断数据类型和计算。使用R包(table1)。 # 创建连续性变量 continuous_var1 <- c(1.2, 2.5, 3.7, 4.8, 5.9) continuous_var2 &l…...

【动手学深度学习】--20.目标检测和边界框
文章目录 目标检测和边界框1.目标检测2.边界框 目标检测和边界框 学习视频:物体检测和数据集【动手学深度学习v2】 官方笔记:目标检测和边界框 在图像分类任务中,我们假设图像中只有一个主要物体对象,我们只关注如何识别其类别…...

实验八 网卡驱动移植
【实验目的】 掌握 Linux 内核配置的基本方法,完成对网卡驱动、NFS 等相关功能的配置 【实验环境】 ubuntu 14.04 发行版FS4412 实验平台交叉编译工具:arm-none-linux-gnueabi- 【注意事项】 实验步骤中以“$”开头的命令表示在 ubuntu 环境下执行&…...

Linux的Man Page知识记录
Man(short for manual) Page是Unix和Linux操作系统中的一个重要文档,提供命令、函数、系统调用等的详细介绍和使用说明。它是以纯文本的形式出现,通常在终端(terminal)中使用man命令访问。Man Page按照章节…...

RTSP/Onvif视频服务器EasyNVR安防视频云服务调用接口录像会被自动删除的问题解决方案
EasyNVR安防视频云服务是基于RTSP/Onvif协议接入的视频平台,可支持将接入的视频流进行全平台、全终端的分发,分发的视频流包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等。平台丰富灵活的视频能力,可应用在智慧校园、智慧工厂、智慧水利等…...

几个nlp的小项目(文本分类)
几个nlp的小项目(文本分类) 导入加载数据类、评测类查看数据集精确展示数据测评方法设置参数tokenizer,token化的解释对数据集进行预处理加载预训练模型进行训练设置训练模型的参数一个根据任务名获取,测评方法的函数创建预训练模型开始训练本项目的工作完成了什么任务?导…...

MFC——base编码和json数据
目录 1. JSON是什么 2. base64是什么 Base64是一种编解码算法 1. JSON是什么 JSON 是一种数据格式。采用完全独立于语言的文本格式, 因为易读, 易写, 易解析的特性成为理想的数据交换语言。主要有三种类型的值:简单值(字符串, 数字, 布尔, null), 对象, 数组。 长这样的数…...

SQL Server、MySQL和Oracle数据库分页查询的区别与联系
摘要:本文将通过一个现实例子,详细解释SQL Server、MySQL和Oracle这三种常见关系型数据库在分页查询方面的区别与联系。我们将提供具体场景下的SQL语句示例,并解释每个数据库的分页查询用法以及优化方法,帮助读者更好地选择适合自…...

Qt跨平台无边框窗口探索记录
一、前言 实现的效果为:通过黑色矩形框预操作,鼠标释放时更新窗口。效果图如下: 1.功能 1.1 已实现功能 8个方向的缩放标题栏拖动标题栏双击最大化/正常窗口窗口最小尺寸预操作框颜色与背景色互补多屏幕默认标题栏 1.2 待开发功能 拖动到…...