Redis的配置和优化

一.Redis介绍

Redis数据库是一个非关系型数据库

1.关系型数据库和非关系型数据库的区别、

(1)关系型数据库

关系型数据库是一个结构化的数据库,创建在关系模型基础上, 一般面向于记录。它借 助于集合代数等数学概念和方法来处理数据库中的数据。关系模型就是指二维表格模型,因 而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。

主流的关系型数据库包括Oracle MySQL SQL Server Microsoft Access DB2等。

(2)非关系型数据库

NoSQL(NoSQL=Not  Only  SQL),意思是“不仅仅是SQL ”,是非关系型数据库的总称。 主流的NoSQL数据库有RedisMongBDHbaseCouhDB等等。以上这些非关系型数  据库,他们的存储方式、存储结构以及使用的场景都是完全不同的。所以我们认为它是一个  非关系型数据库的集合,而不是像关系型数据库一样,是一个统称。换言之,除了主流的关  系型数据库以外的数据库,都可以认为是非关系型的

2.非关系型数据库产生的背景

(1)   High performance          对数据库高并发读写需求

(2) Huge  Storage——对海量数据高效存储与访问需求

(3) HighScalability &&High Availability— 对数据库高可扩展性与高可用性需求

二.Redis基础

1.redis简介

Redis(RemoteDictionaryServer,       远程字典型)是一个开源的、使用C 语言编写的NoSQL 数据库。Redis 基于内存运行并支持持久化,采用key-value(键值对)的存储形式,、是目前分布式架构中不可或缺的一环。

Redis 服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个Redis进程,  Redis 的实际处理速度则是完全依靠于主进程的执行效率。若在服务器上只运行一个 Redis  进程,当多个客户端同时访问时,服务器的处理能力是会有一定程度的下降;若在同 一台服务器上开启多个 Redis 进程,Redis   在提高并发处理能力的同时会给服务器的CPU  造成很大压力。

2.Redis的优点

具有极高的数据读写速度,数据读取的速度最高可达到110000 /s,  数据写入速度最

高可达到81000 次/s。

支持丰富的数据类型,不仅仅支持简单的 key-value 类型的数据,还支持Strings,Lists,

Hashes,Sets    Ordered Sets 等数据类型操作。

支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

原子性,Redis 所有操作都是原子性的。

支持数据备份,即master-salve模式的数据备份。

三.Redis的安装与部署

1.redis的安装

systemctl  stop  firewalld

setenforce  0

yum -y install  gcc*   zlib-devel     

tar  zxvf  redis-4.0.9.tar.gz      //解压

cd  redis-4.0.9

make      //编译

make  PROFIX=/usr/local/redis    install

ln  -s  /usr/local/redis/bin/*     /usr/local/bin

./Install_server.sh          //启动

netstat  -anpt  |  grep  

备注:

Config file : /etc/redis/6379.conf    //配置文件路径

Log file : /var/log/redis_6379.log    //日志文件路径

Data dir : /var/lib/redis/6379    //数据文件路径

Executable : /usr/local/redis/bin/redis-server    //可执行文件路径

Cli Executable : /usr/local/redis/bin/redis-cli    //客户端命令行工具

部署

服务控制

[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 //指定日志文件

/etc/init.d/redis_6379  restart

netstat  -anpt  |  grep   redis

5.Redis命令工具

redis-server:用于启动 Redis 的工具;

Ø redis-benchmark:用于检测 Redis 在本机的运行效率;

Ø redis-check-aof:修复 AOF 持久化文件;

Ø redis-check-rdb:修复 RDB 持久化文件;

Ø redis-cli:Redis 命令行工具。

(1)连接本机redis

[root@localhost ~]# redis-cli

127.0.0.1:6379>

(2)测试redis服务是否启动

127.0.0.1:6379> ping

PONG

(3)远程连接

[root@localhost ~]#redis-cli -h 192.168.10.101 -p 6379

(4)获取帮助

help @<group>:获取<group>中的命令列表;

Ø help <command>:获取某个命令的帮助;

Ø help <tab>:获取可能帮助的主题列表。

(1)查看所有与 List 数据类型的相关命令

127.0.0.1:6379>help @list

(2)查看 set 命令的命令帮助

127.0.0.1:6379>help set

3:redis-benchmark 测试工具

redis-benchmark 是官方自带的 Redis 性能测试工具,可以有效的测试 Redis 服务的性能。

Ø -h:指定服务器主机名;

Ø -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 连接并等待。

(1)测试请求性能

[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -c 100 -n 100000

备注:

Ø -h:指定服务器主机名;

Ø -p:指定服务器端口;

Ø -c:指定并发连接数;

Ø -n:指定请求数;

(2)测试存取性能

[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -q -d 100

备注:

Ø -h:指定服务器主机名;

Ø -p:指定服务器端口;

Ø -d:以字节的形式指定 SET/GET 值的数据大小;

Ø -q:强制退出 redis。仅显示 query/sec 值;

(3)set 与 lpush 操作性能

[root@localhost ~]# redis-benchmark -t set,lpush -n 100000 -q

备注:

Ø -n:指定请求数;

Ø -q:强制退出 redis。仅显示 query/sec 值;

Ø -t:仅运行以逗号分隔的测试命令列表;

三.Redis数据库的常用命令

Ø set:存放数据,基本的命令格式为 set key value

Ø get:获取数据,基本的命令格式为 get key

1key 相关命令

Redis 数据库中,与 key 相关的命令主要包含以下几种。

1)添加键值对

使用 keys 命令可以取符合规则的键值列表,通常情况可以结合*、?等选项来使用。

127.0.0.1:6379>set k1 1

OK

127.0.0.1:6379>set k2 2

OK

127.0.0.1:6379>set k3 3

OK

127.0.0.1:6379>set v1 4

OK

127.0.0.1:6379>set v5 5

OK

(2)查看当前数据库中所有键

127.0.0.1:6379>KEYS  *  

1) "teacher"

2) "k1"

3) "k2"

4) "k3"

5) "v1"

6) "v5"

127.0.0.1:6379>set v22 5

OK

(3)查看当前数据库中以 v 开头的数据

127.0.0.1:6379>KEYS v*    

1) "v1"

2) "v5"

3) "v22"

(4)查看当前数据库中以 v 开头后面包含任意一位的数据

127.0.0.1:6379>KEYS v?   

1) "v1"

2) "v5"

(5)查看当前数据库中以 v 开头 v 开头后面包含任意两位的数据

127.0.0.1:6379>KEYS v??   

1) "v22"

2:exists

exists 命令可以判断键值是否存在

127.0.0.1:6379>exists teacher

(integer) 1

结果为1,表示 teacher 键是存在

127.0.0.1:6379>exists tea

(integer) 0

结果为0,表示 tea 键不存在

3:del

del 命令可以删除当前数据库的指定 key

127.0.0.1:6379>keys *

1) "teacher"

2) "v1"

3) "v22"

4) "k3"

5) "k1"

6) "k2"

7) "v5"

127.0.0.1:6379> del v5

(integer) 1

127.0.0.1:6379>get v5

(nil)

4:type

使用 type 命令可以获取 key 对应的 value 值类型

127.0.0.1:6379>type k1

string

备注:

redis支持的数据类型

  • String:最简单的类型,就是普通的set和get,作key value缓存。 
  • Hash:类似map的一种结构,一般就是可以将结构化的数据,比如一个对象给缓存在redis里
  • List:List是有序列表,可以通过list存储一些列表型的数据结构,类似粉丝列表、文章的评论列表之类的东西
  • Set:Set是无序集合,自动去重。
  • Sorted Set:Sorted Set是排序的set,去重但可以排序,写进去的时候给一个分数,自动根据分数排序。

5:rename

rename 命令是对已有 key 进行重命名

在实际使用过程中,建议先用 exists 命令查看目标 key 是否存在,然后再决定是否执行 rename 命令,以避免覆盖重要数据

127.0.0.1:6379>keys v*

1) "v1"

2) "v22"

127.0.0.1:6379>rename v22 v2

OK

127.0.0.1:6379>keys v*

1) "v1"

2) "v2"

127.0.0.1:6379>get v1

"4"

127.0.0.1:6379>get v2

"5"

127.0.0.1:6379>rename v1 v2

OK

127.0.0.1:6379>get v1

(nil)

127.0.0.1:6379>get v2

"4"

6:renamenx

renamenx 命令的作用是对已有 key 进行重命名,并检测新名是否存在。

使用renamenx 命令进行重命名时,如果目标 key 存在则不进行重命名。

127.0.0.1:6379>keys *

1) "teacher"

2) "k3"

3) "k1"

4) "k2"

5) "v2"

127.0.0.1:6379>get teacher

"zhanglong"

127.0.0.1:6379>get v2

"4"

127.0.0.1:6379>renamenx v2 teacher

(integer) 0

127.0.0.1:6379>keys *

1) "teacher"

2) "k3"

3) "k1"

4) "k2"

5) "v2"

127.0.0.1:6379>get teacher

"zhanglong"

127.0.0.1:6379>get v2

"4

7:dbsize

dbsize 命令的作用是查看当前数据库中 key 的数目。

127.0.0.1:6379> dbsize

(integer) 5

四:多数据库常用命令

1:多数据库间切换

Redis 在没有任何改动的情况下默认包含 16 个数据库,数据库名称是用数字 0-15 来依次命名的

(1)切换至序号为 10 的数据库

127.0.0.1:6379>select 10

OK

(2)切换至序号为 15 的数据库

127.0.0.1:6379[10]>select 15

OK

(3)切换至序号为 0 的数据库

127.0.0.1:6379[15]>select 0

2:多数据库间移动数据

Redis 的多数据库在一定程度上是相对独立的,例如在数据库 0 上面存放 k1 的数据,在其它 1-15 的数据库上是无法查看到的。

127.0.0.1:6379>set k1 100

OK

127.0.0.1:6379>get k1

"100"

127.0.0.1:6379>select 1

OK

127.0.0.1:6379[1]>get k1

(nil)

127.0.0.1:6379[1]>select 0 //切换至目标数据库 0

OK

127.0.0.1:6379>get k1 //查看目标数据是否存在

"100"

127.0.0.1:6379>move k1 1 //将数据库 0 k1 移动到数据库 1

(integer) 1

127.0.0.1:6379>select 1 //切换至目标数据库 1

OK

127.0.0.1:6379[1]>get k1 //查看被移动数据

"100"

127.0.0.1:6379[1]> select 0

OK

127.0.0.1:6379> get k1 //在数据库 0 中无法查看到 k1 的值

(nil)

3:清除数据库内数据

清空当前数据库数据,使用 FLUSHDB

命令实现;清空所有数据库的数据,使用 FLUSHALL 命令实现

五: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秒

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

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

相关文章

第1章 初识 Express

1.1 什么是 Express Express 是一个简洁而灵活的 Node.js Web 应用框架&#xff0c;提供了一系列强大的特性用于开发 Web 和移动应用。它基于 Node.js 构建&#xff0c;并且与 Node.js 的非阻塞 I/O 模型无缝集成&#xff0c;使其非常适合于构建高性能的 Web 应用。 主要特点…

【办公软件】PPT使用轮子动画做圈动作

在实际的PPT制作中&#xff0c;我们可能会用到画圈的动作来强调重点。如下所示为最基础的画圈动作。 那么如何来做一个这样的动作呢&#xff1f; 首先在PPT中选择插入&#xff0c;选择形状椭圆 然后按Shift画图&#xff0c;即可画出一个正圆 然后使用绘图工具&#xff0c;将开关…

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【密钥证明介绍及算法规格】

密钥证明介绍及算法规格 HUKS为密钥提供合法性证明能力&#xff0c;主要应用于非对称密钥的公钥的证明。 基于PKI证书链技术&#xff0c;HUKS可以为存储在HUKS中的非对称密钥对的公钥签发证书&#xff0c;证明其公钥的合法性。业务可以通过系统提供的根CA证书&#xff0c;逐级…

Photoshop套索工具使用指南:解锁自由选区的艺术

在Adobe Photoshop的强大工具箱中&#xff0c;套索工具组是每位图像处理爱好者与专业人士的得力助手。这组工具&#xff0c;包括套索工具、多边形套索工具和磁性套索工具&#xff0c;为用户提供了高度灵活的选择区域方式&#xff0c;无论是处理复杂的图像边缘还是进行精细的抠图…

VMware安装Ubuntu以及利用vscode远程Ubuntu

一、VMware安装Ubuntu &#xff08;1&#xff09;VMware安装Ubuntu主要参考此文VMware虚拟机安装Ubuntu22.04图文教程&#xff08;超详细&#xff01;&#xff01;&#xff01;&#xff09;。 &#xff08;2&#xff09;VMware密钥参考此文24年VMware 17密钥(附下载链接&#…

SpringBoot中JPA方法命名规则

Spring Data JPA 提供了一种基于方法名的查询创建机制&#xff0c;允许通过定义 Repository 接口中的方法名称来自动创建对应的数据库查询语句。 这种方法避免了硬编码 SQL 语句&#xff0c;提高了开发效率和代码的可读性。 以下是 Spring Data JPA 方法命名规则的一些关键点…

Android Settings应用 PreferenceScreen 条目隐藏实现和简单分析

Android Settings应用 PreferenceScreen 条目隐藏实现和简单分析 文章目录 Android Settings应用 PreferenceScreen 条目隐藏实现和简单分析一、前言二、隐藏实现1、xml 文件中隐藏PreferenceScreen 的某个条目2、普通Preference条目的隐藏的Java代码实现3、SwitchPreference条…

栈(Stack)与队列(Queue,Deque)

前言&#xff1a; 栈与队列在数据结构中用法都相对比较简单&#xff0c;是数据结构中经常用到的两种。 1.栈&#xff08;Stack&#xff09; &#xff08;1&#xff09;特点&#xff1a; 先入后出&#xff0c;后入先出。栈的底层就是一个数组&#xff08;java原生库中&#x…

在PyQt中为自己开发的软件实现远程文件“一机一码”授权管理实例

在使用PyQt搞软件开发时&#xff0c;开发者往往想要给自己的软件添加一个授权机制&#xff0c;只有当客户提供了授权码并且开发者将授权码放在授权管理系统的时候&#xff0c;客户端才能正常启动。这几天小陶就在捣鼓这个事&#xff0c;发现确实是可行的。 如果没有进行授权&a…

品牌传播策略中的智能内容推荐系统研究分析报告

品牌传播策略中的智能内容推荐系统研究分析报告 一、引言 随着信息技术的快速发展和互联网应用的普及,品牌传播策略正面临前所未有的变革。智能内容推荐系统作为这一变革的重要工具,正逐渐成为品牌传播的核心策略之一。本报告旨在深入研究智能内容推荐系统在品牌传播中的应…

【Linux 基础】df -h 的输出信息解读

df -h 的输出信息 xxx:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 16G 0 16G 0% /dev tmpfs 3.2G 792K 3.2G 1% /run /dev/sda1 32G 1.7G 30G 6% / tmpfs 16G 0 16G 0% /dev/shm tmp…

Ajax从零到实战

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

深入理解 Java 中的 `Socket` 类

在网络编程中&#xff0c;Socket 类是一个关键工具&#xff0c;用于实现客户端与服务器之间的通信。它为开发者提供了底层的网络通信能力&#xff0c;使得在不同机器之间传输数据变得简单而高效。本文将深入探讨 Java 中的 Socket 类&#xff0c;涵盖其基本概念、使用方法、应用…

VR头显如何低延迟播放8K的RTSP|RTMP流

技术背景 我们在做Unity平台RTSP、RTMP播放器的时候&#xff0c;有公司提出来这样的技术需求&#xff0c;希望在头显播放全景的8K RTSP|RTMP直播流&#xff0c;8K的数据&#xff0c;对头显和播放器&#xff0c;都提出了新的要求&#xff0c;我们从几个方面&#xff0c;探讨下V…

SpringAOP的坑

AOP中几种常见的通知类型及其基本作用&#xff1a; Before&#xff1a;前置通知&#xff0c;在目标方法执行之前执行。After&#xff1a;后置通知&#xff0c;无论方法执行结果如何&#xff08;包括异常&#xff09;&#xff0c;都会在目标方法执行之后执行。AfterReturning&a…

Elasticsearch 更新指定字段

Elasticsearch 更新指定字段 准备条件查询数据更新指定字段更新子级字段 准备条件 以下查询操作都基于索引crm_clue来操作&#xff0c;索引已经建过了&#xff0c;本文主要讲Elasticsearch更新指定字段语句&#xff0c;下面开始写更新语句执行更新啦&#xff01; 查询数据 查…

MacOS 通过Docker安装宝塔面板搭建PHP开发环境

1、docker拉取ubuntu系统 docker pull ubuntu2、运行容器 docker run -i -t -d --name bt -p 20:20 -p 21:21 -p 80:80 -p 443:443 -p 888:888 -p 8888:8888 -p 3306:3306 -p 6379:6379 --privilegedtrue -v /Users/oi/Sites:/www/wwwroot ubuntu-v 后的 /Users/oi/Sites 代表…

【电子通识】什么是无源元件的认证用可靠性试验标准AEC-Q200?

目前电动汽车已经是一个大趋势&#xff0c;汽车上安装有由多个电子零部件构成的ECU&#xff08;电子控制单元&#xff09;。即使汽车在恶劣的环境下行驶&#xff0c;电子零部件也必须不出故障地正常工作。因此&#xff0c;车载电子零部件与消费类电子相比&#xff0c;要求其达到…

力扣71.简化路径

力扣71.简化路径 根据双斜杠 求出每一组夹在里面的字符串 处理有意义的字符串 将所有路径存在字符串数组中最后用所有剩余的路径名称 变为答案 class Solution {public:string simplifyPath(string path) {vector<string> res;string ans;string cnt"";int …

Yarn标签调度--HDP测试

hadoop版本从2.7.2版本开始 新增标签调度功能。 标签调度功能&#xff1a;可以给节点设置标签 让作业任务调度到这个设置的标签节点。 列入&#xff1a; 某个任务需要用到gpu资源&#xff0c;而gpu并非在每个节点上都有&#xff0c;通过对节点设置标签&#xff0c;可以使作业…