一、NoSQL

NoSQL = Not Only SQL(不仅仅是 SQL) ,也解释为 non-relational(非关系型数据库)。在 NoSQL 数据库中数据之间是无联系的,无关系的。数据的结构是松散的,可变的。

1. MySQL的瓶颈

  1. 无法应对每秒上万次的读写请求, 无法处理大量集中的高并发操作。关系型数据的是 IO 密集的应用。 硬盘 IO 也变为性能瓶颈
  2. 无法简单地通过增加硬件、服务节点来提高系统性能。数据整个存储在一个数据库中的。多个服务器没有很好的解决办法,来复制这些数据。
  3. 关系型数据库大多是收费的,对硬件的要求较高。软件和硬件的成本花费比重较大。

2. NoSQL的优势

  1. 大数据量,高性能
    NoSQL 数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。 关系型数据库(例如 MySQL)使用查询缓存。这种查询缓存在更新数据后,缓存就是失效了。在频繁的数据读写交互应用中。缓存的性能不高。NoSQL 的缓存性能要高的多。
  2. 灵活的数据模型
    NoSQL 无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦。 尤其在快速变化的市场环境中,用户的需求总是在不断变化的。
  3. 高可用
    NoSQL 在不太影响性能的情况,就可以方便的实现高可用的架构。NoSQL 能很好的解决关系型数据库扩展性差的问题。 弥补了关系数据(比如 MySQL)在某些方面的不足,在某些方面能极大的节省开发成本和维护成本。MySQL 和 NoSQL 都有各自的特点和使用的应用场景,两者结合使用。让关系数据库关注在关系上, NoSQL 关注在存储上。
  4. 低成本
    这是大多数分布式数据库共有的特点,因为主要都是开源软件,没有昂贵的 License 成本

3. NoSQL 的劣势

  1. 不支持标准的 SQL,没有公认的 NoSQL 标准
  2. 没有关系型数据库的约束,大多数也没有索引的概念
  3. 没有事务,不能依靠事务实现 ACID
  4. 没有丰富的数据类型(数值,日期,字符,二进制,大文本等)

更详细的介绍请戳这里(https://www.cnblogs.com/xrq730/p/11039384.html)

二、Redis安装

Remote Dictionary Server(Redis)是一个开源的使用 C 语言编写、支持网络、可基于内存亦可持久化的 Key-Value 数据库。Key 字符类型, 其值(value)可以是字符串(String),哈希(Map),列表(list),集合(sets) 和有序集合(sorted sets)等类型, 每种数据类型有自己的专属命令。 所以它通常也被称为数据结构服务器。

1. 解压

  1. 上传 redis-4.0.13.tar.gz 到 linux 系统。使用 Xftp 工具
  2. 解压 redis-4.0.13.tar.gz 到/usr/local 目录

2. 编译Redis源文件

Redis 是使用 c 语言编写的。 使用源文件安装方式,需要编译 c 源文件, 会使用 gcc 编译器。gcc 是 GNU compiler collection 的缩写,它是 Linux 下一个编译器集合(相当于 javac ), 是c 或 c++程序的编译器。

  1. 使用yum进行安装gcc 。
    执行命令:
    yum -y install gcc
    
  2. 编译 redis 源文件
    在解压后的 Redis 目录下执行(cd /usr/local/redis-4.0.13) make 命令:
    make
    
    如果 make 命令执行过程中出现错误:error: jemalloc/jemalloc.h: No such file or directory
    解决方式执行下面的命令:
    make MALLOC=libc
    
  3. 编译成功的标志
    在这里插入图片描述
  4. 查看make的编译结果
    查看Redis的src目录:
    在这里插入图片描述

3. 启动和关闭Redis服务

  1. 后台启动Redis:
    在src目录下执行:./redis-server redis.conf配置文件路径 &
    ./redis-server ../redis.conf &
    
    在这里插入图片描述
    此时 ctrl + c 关闭窗口后,查看redis进程,依然存在。
  2. 关闭 Redis
    使用 redis 客户端关闭,向服务器发出关闭命令
    切换到 redis-4.0.13/src/ 目录,执行:
     ./redis-cli shutdown
    
    推荐使用这种方式, redis 先完成数据操作,然后再关闭。

4. Redis客户端

(1)命令行客户端

在 redis 安装目录/src下执行:

命令 说明 示例
./redis-cli -h IP地址 -p 端口号 指定 IP 和端口连接 redis ./redis-cli -h 127.0.0.1 -p 6379
./redis-cli 直接连接 redis (默认 ip127.0.0.1,端口 6379) ./redis-cli

(2)远程连接Redis

连接Linux的Reids之前需要修改Redis服务器的配置信息。 Redis服务器有安全保护措施,默认只有本机(安装Redis的那台机器)能够访问。
修改redis主目录下的redis.conf配置文件:(vim中使用 / 进行搜索)

  1. bind ip 绑定ip此行注释
  2. protected-mode yes 保护模式改为 no
    在这里插入图片描述
    注意:修改完之后要重启Redis服务,并且记得关闭防火墙

三、Redis基础命令

1. 查看Redis服务是否正常 ping

返回PONG,表示 redis 服务运行正常

2. 查看当前数据库中 key 的数目 dbsize

3. Redis的默认库

Redis 默认使用 16 个库, 从 0 到 15。 对数据库个数的修改,在 redis.conf 文件中修改databases 16
默认打开的是第0个数据库

4. 切换库命令 select

使用其他数据库, 命令是 select index

5. 删除当前库的数据 flushdb

6. 删除所有库的数据 flushall

7. 退出当前 redis 连接 exit/quit

8. 关闭redis服务 shutdown

四、Redis的Key操作

1. 查看匹配的key keys

语法: keys pattern
作用:查找当前库中所有符合模式 pattern 的 key. pattern 可以使用通配符。
通配符:

  • *:表示 0 - 多个字符,例如: keys * 查询所有的 key。
  • ?:表示单个字符,例如: wo?d , 匹配 word , wood

2. 判断 key 是否存在 exists

语法: exists key [key…]
作用:判断 key 是否存在
返回值:整数,存在 key 返回 1,其他返回 0。使用多个 key,返回存在的 key 的数量。

3. 设置 key 的生存时间 expire

语法: expire key seconds
作用:设置 key 的生存时间, 超过时间, key 自动删除。单位是秒。
返回值:设置成功返回数字 1,其他情况是 0 。

4. 查看key的剩余生存时间 ttl

语法: ttl key
作用:以秒为单位,返回 key 的剩余生存时间(ttl: time to live)
返回值:

  • -1 :没有设置 key 的生存时间, key 永不过期。
  • -2: key 不存在
  • 数字: key 的剩余时间,秒为单位

5. 查看 key 所存储值的数据类型 type

语法: type key
作用:查看 key 所存储值的数据类型
返回值:字符串表示的数据类型

  • none (key 不存在)
  • string (字符串)
  • hash (哈希表)
  • list (列表)
  • set (集合)
  • zset (有序集)

6. 删除存在的key del

语法: del key [key…]
作用:删除存在的 key,不存在的 key 忽略。
返回值:数字,删除的 key 的数量。

五、字符串类型

字符串类型(string)是 Redis 中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据,序列化后的数据, JSON 格式数据。

1. 基本命令 (set/get/incr/decr/append)

命令 说明 返回值
set key value 将字符串值 value 设置到 key 中
向已经存在的 key 设置新的 value,会覆盖原来的值
OK
get key 获取 key 中设置的字符串值 返回value值
incr key 将 key 中储存的数字值加 1(只能对数字类型的数据操作)
如果 key 不存在,则 key 的值先被初始化为 0 再执行incr 操作
返回修改后的值
decr key 将 key 中储存的数字值减1,其它与incr相同 返回修改后的值
append key value 如果 key 存在,则将 value 追加到 key 原来旧值的末尾
如果 key 不存在,则将 key 设置值为 value
追加字符串之后的总长度

2. key 所储存的字符串值的长度 strlen

语法: strlen key
说明: 返回 key 所储存的字符串值的长度
返回值:

  • 如果key存在,返回字符串值的长度
  • key不存在,返回

3. 截取字符串 getrange

语法: getrange key start end
作用: 获取 key 中字符串值从 start 开始到 end 结束的子字符串,包括 start 和 end,负数表示从字符串的末尾开始, -1 表示最后一个字符,超出字符串范围的截取, 获取合理的子串

返回值: 截取的子字符串。
使用的字符串 key: school, value: bjpowernode

4. 替换 setrange

语法: setrange key offset value
说明: 用 value 覆盖(替换) key 的存储的值,key中的值从 offset 开始的value长度的字符串被替换,不存在的 key 当做空白字符串。
返回值: 修改后的字符串的长度

5. 批量设置 mset

语法: mset key value [key value…]
说明: 同时设置一个或多个 key-value 对
返回值: OK

6. 批量取值 mget

语法: mget key [key …]
作用: 获取所有(一个或多个)给定 key 的值
返回值: 包含所有 key 的列表,不存在返回nil

六、哈希类型 hash

redis hash 是一个 string 类型的 field 和 value 的映射表, hash 特别适合用于存储对象。

1. 设定值 hset

语法: hset hash表的key field value
作用: 将哈希表 key 中的域 field 的值设为 value, 如果 key 不存在, 则新建 hash 表,执行赋值,如果有 field,则覆盖值。
返回值:

  • 如果 field 是 hash 表中新 field,且设置值成功,返回 1
  • 如果 field 已经存在,新值覆盖旧值,返回 0

2. 获取值 hget

语法: hget key field
作用: 获取哈希表 key 中给定域 field 的值
返回值: field 域的值,如果 key 不存在或者 field 不存在返回 nil

3. 批量设置域 hmset

语法: hmset key field value [field value…]
说明: 同时将多个 field-value (域-值)设置到哈希表 key 中,此命令会覆盖已经存在的 field,hash 表 key 不存在,创建空的 hash 表,执行 hmset.
返回值:设置成功返回 ok,如果失败返回一个错误

4. 批量获取域 hmget

语法: hmget key field [field…]
作用:获取哈希表 key 中一个或多个给定域的值
返回值:返回和 field 顺序对应的值,如果 field 不存在,返回 nil

5. 获取所有域和值 hgetall

语法: hgetall key
作用: 获取哈希表 key 中所有的域和值
返回值:以列表形式返回 hash 中域和域的值, key 不存在,返回空 hash

6. 删除一个或多个域 hdel

语法: hdel key field [field…]
作用: 删除哈希表 key 中的一个或多个指定域 field,不存在 field 直接忽略
返回值:成功删除的 field 的数量

7. 查看所有的域的field hkeys

语法: hkeys key
作用:查看哈希表 key 中的所有 field 域
返回值:包含所有 field 的列表, key 不存在返回空列表

8. 查看所有域的值 hvals

语法: hvals key
作用: 返回哈希表中所有域的值
返回值:包含哈希表所有域值的列表, key 不存在返回空列表

9. 查看给定域 field 是否存在 hexists

语法: hexists key field
作用: 查看哈希表 key 中,给定域 field 是否存在
返回值:如果 field 存在,返回 1,其他返回 0

七、列表 list

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)

1. 插入多个值 lpush

语法: lpush key value [value…]
作用: 将一个或多个值 value 插入到列表 key 的表头(最左边),从左边开始加入值, 从左到右的顺序依次插入到表头
返回值: 数字, 新列表的长度

2. 获取多个值 rpush

语法: rpush key value [value…]
作用: 将一个或多个值 value 插入到列表 key 的表尾(最右边), 各个 value 值按从左到右的顺序依次插入到表尾
返回值:数字,新列表的长度

3. 获取区间内的值 lrange

语法: lrange key start stop
作用: 获取列表 key 中指定区间内的元素, 0 表示列表的第一个元素,以 1 表示列表的第二个元素; start , stop 是列表的下标值,也可以负数的下标, -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。 start , stop 超出列表的范围不会出现错误。
返回值: 指定区间的列表

4. 获取指定下标的元素 lindex

语法: lindex key index
作用: 获取列表 key 中下标为指定 index 的元素, 列表元素不删除, 只是查询。 0 表示列表的第一个元素,以 1 表示列表的第二个元素; start , stop 是列表的下标值,也可以负数的下标, -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
返回值:指定下标的元素; index 不在列表范围,返回 nil

5. 获取列表的长度 llen

语法: llen key
作用: 获取列表 key 的长度
返回值: 数值,列表的长度; key 不存在返回 0

6. 删除元素 lrem

语法: lrem key count value
作用: 根据参数 count 的值,移除列表中与参数 value 相等的元素, count >0 , 从列表的左侧向右开始移除; count < 0 从列表的尾部开始移除; count = 0 移除表中所有与 value 相等的值。
返回值: 数值,移除的元素个数

7. 根据下标修改值 lset

语法: lset key index value
作用: 将列表 key 下标为 index 的元素的值设置为 value。
返回值:设置成功返回 ok;key 不存在或者 index 超出范围返回错误信息

8. 插入 linsert

语法: linsert key BEFORE|AFTER pivot value
作用: 将值 value 插入到列表 key 当中位于值 pivot 之前或之后的位置。 key 不存在, pivot不在列表中,不执行任何操作。
返回值: 命令执行成功,返回新列表的长度。没有找到 pivot 返回 -1, key 不存在返回 0。

八、集合类型 set

redis 的 Set 是 string 类型的无序集合,集合成员是唯一的,即集合中不能出现重复的数据

1. 增 sadd

语法: sadd key member [member…]
作用: 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略, 不会再加入。
返回值:加入到集合的新元素的个数。不包括被忽略的元素。

2. 查 smembers

语法: smembers key
作用: 获取集合 key 中的所有成员元素,不存在的 key 视为空集合

3. 判断是否存在 sismember

语法: sismember key member
作用: 判断 member 元素是否是集合 key 的成员
返回值: member 是集合成员返回 1,其他返回 0 。

4. 获取个数 scard

语法: scard key
作用: 获取集合里面的元素个数
返回值:数字, key 的元素个数。其他情况返回 0 。

5. 删除 srem

语法: srem key member [member…]
作用: 删除集合 key 中的一个或多个 member 元素,不存在的元素被忽略。
返回值:数字,成功删除的元素个数, 不包括被忽略的元素。

6. 随机返回一个元素 srandmember

语法: srandmember key [count]
作用:只提供 key,随机返回集合中一个元素,元素不删除,依然在集合中;提供了 count 时, count 正数, 返回包含 count 个数元素集合,集合元素各不相同。 count 是负数,返回一个 count 绝对值的长度的集合,集合中元素可能会重复多次。
返回值:一个元素;多个元素的集合

7. 随机删除一个元素 spop

语法: spop key [count]
作用: 随机从集合中删除一个元素, count 是删除的元素个数。
返回值:被删除的元素, key 不存在或空集合返回 nil

九、有序集合类型 zset (sorted set)

redis 有序集合zset和集合set一样也是string类型元素的集合,且不允许重复的成员。不同的是 zset 的每个元素都会关联一个分数(分数可以重复), redis 通过分数来为集合中的成员进行从小到大的排序。

1. 添加 zadd

语法: zadd key score member [score member…]
作用: 将一个或多个 member 元素及其 score 值加入到有序集合 key 中,如果 member存在集合中,则更新值; score 可以是整数或浮点数
返回值: 数字, 新添加的元素个数

2. 区间查询,升序 zrange

语法: zrange key start stop [WITHSCORES]
作用:查询有序集合,指定区间的内的元素。 集合成员按 score 值从小到大来排序。 start, stop 都是从 0 开始。 0 是第一个元素, 1 是第二个元素,依次类推。 以 -1 表示最后一个成员, -2 表示倒数第二个成员。 WITHSCORES 选项让 score 和 value 一同返回。
返回值:自定区间的成员集合

3. 区间查询,降序 zrevrange

语法: zrevrange key start stop [WITHSCORES]
作用: 返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递减(从大到小)来排列。 其它同 zrange 命令。
返回值:自定区间的成员集合

4. 删除 zrem

语法: zrem key member [member…]
作用: 删除有序集合 key 中的一个或多个成员,不存在的成员被忽略
返回值:被成功删除的成员数量,不包括被忽略的成员。

5. 获取成员个数 zcard

语法: zcard key
作用: 获取有序集 key 的元素成员的个数
返回值: key 存在返回集合元素的个数, key 不存在,返回 0

6. 根据分数范围获取元素(升序) zrangebyscore

语法: zrangebyscore key min max [WITHSCORES ] [LIMIT offset count]
作用: 获取有序集 key 中,所有 score 值介于 min 和 max 之间(包括 min 和 max) 的成员,有序成员是按递增(从小到大)排序。
min ,max 是包括在内,使用符号( 表示不包括。 min, max 可以使用 -inf , +inf 表示最小和最大 limit 用来限制返回结果的数量和区间。
withscores 显示 score 和 value
返回值: 指定区间的集合数据

7. 根据分数范围获取元素(降序) zrevrangebyscore

语法: zrevrangebyscore key max min [WITHSCORES ] [LIMIT offset count]
作用: 返回有序集 key 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的所有的成员。有序集成员按 score 值递减(从大到小)的次序排列。 其他同 zrangebyscore

8. 根据分数范围获取元素数量 zcount

语法: zcount key min max
作用: 返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量

十、事务

事务是指一系列操作步骤,这一系列的操作步骤,要么完全地执行,要么完全地不执行。Redis 中的事务(transaction)是一组命令的集合,至少是两个或两个以上的命令, redis事务保证这些命令被执行时中间不会被任何其他操作打断。

1. 开启事务 multi

语法: multi
作用: 标记一个事务的开始。事务内的多条命令会按照先后顺序被放进一个队列当中。
返回值: 总是返回 ok

2. 执行 exec

语法: exec
作用: 执行所有事务块内的命令
返回值: 事务内的所有执行语句内容,事务被打断, 返回 nil

3. 放弃 discard

语法: discard
作用: 取消事务,放弃执行事务块内的所有命令
返回值:总是返回 ok

4. watch

语法: watch key [key …]
作用: 在开启事务之前,监视一个(或多个) key ,如果在事务执行(exec)之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
返回值: 总是返回 ok
WATCH 机制: 使用 WATCH 监视一个或多个 key , 跟踪 key 的 value 修改情况,如果有 key的 value 值在事务 EXEC 执行之前被修改了,整个事务被取消。 EXEC 返回提示信息, 表示事务已经失败

5. unwatch

语法: unwatch
作用:取消 WATCH 命令对所有 key 的监视。如果在执行 WATCH 命令之后, EXEC 命令或 DISCARD 命令先被执行了的话,那么就不需要再执行 UNWATCH 了
返回值:总是返回 ok

6. 事务中出错

  • 事务执行 exec 之前, 入队命令错误(语法错误;严重错误导致服务器不能正常工作( 例如内存不足)),放弃事务。
  • 事务执行 exec 命令后,命令执行错误,在 exec 执行后的所产生的错误,即使事务中有某个/某些命令在执行时产生了错误,事务中的其他命令仍然会继续执行。

十一、持久化

1. RDB

Redis Database(RDB),就是在指定的时间间隔内将内存中的数据集快照写入磁盘,数据恢复时将快照文件直接再读到内存。

RDB 保存了在某个时间点的数据集(全部数据)。存储在一个二进制文件中,只有一个文件。默认是 dump.rdb。 RDB 技术非常适合做备份,可以保存最近一个小时,一天,一个月的全部数据。保存数据是在单独的进程中写文件,不影响 Redis 的正常使用。 RDB 恢复数据时比其他 AOF 速度快。

(1)配置redis.conf

  1. 配置执行 RDB 生成快照文件的时间策略。
    对 Redis 进行设置,让它在“ N 秒内数据集至少有 M 个 key 改动”这一条件被满足时,自动保存一次数据集。
    配置格式: save <seconds> <changes>
    save 900 1
    save 300 10
    save 60 10000
  2. dbfilename:设置 RDB 的文件名,默认文件名为 dump.rdb
  3. dir:指定 RDB 文件的存储位置,默认是 ./ 当前目录

(2)注意点

dump.rdb文件中存放的是二进制文件。

(3)总结

优点:由于存储的是数据快照文件,恢复数据很方便,也比较快
缺点:

  1. 会丢失最后一次快照以后更改的数据。 如果你的应用能容忍一定数据的丢失,那么使用 rdb 是不错的选择; 如果你不能容忍一定数据的丢失,使用 rdb 就不是一个很好的选择。
  2. 由于需要经常操作磁盘, RDB 会分出一个子进程。如果你的 redis 数据库很大的话,子进程占用比较多的时间,并且可能会影响 Redis 暂停服务一段时间(millisecond 级别),如果你的数据库超级大并且你的服务器 CPU 比较弱,有可能是会达到一秒。

2. AOF

Append-only File(AOF), Redis 每次接收到一条改变数据的命令时,它将把该命令写到一个 AOF 文件中(只记录写操作,读操作不记录),当 Redis 重启时,它通过执行 AOF 文件中所有的命令来恢复数据。

(1)配置redis.conf

AOF 方式的数据持久化,仅需在 redis.conf 文件中配置即可
配置项:

  • appendonly:默认是 no,改成 yes 即开启了 aof 持久化
  • appendfilename:指定 AOF 文件名,默认文件名为 appendonly.aof
  • dir:指定 RDB 和 AOF 文件存放的目录,默认是 ./
  • appendfsync:配置向 aof 文件写命令数据的策略:
    • no:不主动进行同步操作,而是完全交由操作系统来做(即每 30 秒一次),比较快但不是很安全。
    • always:每次执行写入都会执行同步,慢一些但是比较安全。
    • everysec:每秒执行一次同步操作,比较平衡,介于速度和安全之间。这是默认项。
  • auto-aof-rewrite-min-size:允许重写的最小 AOF 文件大小,默认是 64M 。当 aof 文件大于 64M 时,开始整理 aof 文件,去掉无用的操作命令。缩小 aop 文件。

(2)注意点

  1. AOF文件中存放的命令的字符,可以打开看。

(3)总结

  1. append-only 文件是另一个可以提供完全数据保障的方案;
  2. AOF 文件会在操作过程中变得越来越大。比如,如果你做一百次加法计算,最后你只会在数据库里面得到最终的数值,但是在你的 AOF 里面会存在 100 次记录,其中 99 条记录对最终的结果是无用的;但 Redis 支持在不影响服务的前提下在后台重构 AOF 文件,让文件得以整理变小
  3. 可以同时使用这两种方式,redis默认优先加载 aof文件(aof数据最完整);

十二、主从复制

1. 主从配置(master/salve)

修改配置文件,启动时,服务器读取配置文件,并自动成为指定服务器的从服务器,从而构成主从复制的关系

编辑 Master 的配置文件:

  • daemonize:yes 后台启动应用,相当于 ./redis-server & 的作用。
  • pidfile:自定义的文件,表示当前程序的 pid,进程 id。示例: pidfile /var/run/redis_6379.pid
  • logfile:日志文件名

编辑 Slave 配置文件,除了配置与Master相同的那几项外,还要额外配置一项:

  • slaveof :表示当前 Redis 是谁的从。当前是 127.0.0.0 端口 6379 这个 Master 的从。示例:slaveof 127.0.0.1 6379

2. 手动实现主从复制

(1)查看信息

在客户端中执行:info replication

Master可以读数据和写数据,而Slave只能读数据

Master的信息:
在这里插入图片描述
Slave的信息:
在这里插入图片描述

(2)容灾处理

当master挂掉的时候,要提升某slave为master,并将其它slave挂载到新的master上

  1. 在一台Slave服务器上执行slaveof no one:将一台 slave 服务器提升为 Master (提升某 slave 为 master)
  2. 在其它服务器上执行slaveof master的ip master的端口 将 slave 挂至新的 master 上

(3)总结

  1. 不配置启动默认都是主
  2. 一个 master 可以有多个 slave
  3. slave 下线,读请求的处理性能下降
  4. master 下线,写请求无法执行
  5. 当 master 发生故障,需手动将其中一台 slave 使用 slaveof no one 命令提升为 master,其它 slave 执行 slaveof 命令指向这个新的 master,从新的 master 处同步数据
  6. 主从复制模式的故障转移需要手动操作,要实现自动化处理,这就需要 Sentinel 哨兵,实现故障自动转移。

3. 高可用 Sentinel 哨兵

Sentinel 哨兵是 redis 官方提供的高可用方案,可以用它来监控多个 Redis 服务实例的运行情况。Redis Sentinel 是一个运行在特殊模式下的 Redis 服务器。Redis Sentinel 是在多个Sentinel 进程环境下互相协作工作的。
Sentinel 系统有三个主要任务:

  1. 监控:Sentinel 不断的检查主服务和从服务器是否按照预期正常工作。
  2. 提醒:被监控的 Redis 出现问题时,Sentinel 会通知管理员或其他应用程序。
  3. 自动故障转移:监控的主 Redis 不能正常工作,Sentinel 会开始进行故障迁移操作。将一个从服务器升级新的主服务器。让其他从服务器挂到新的主服务器。同时向客户端提供新的主服务器地址。
    在这里插入图片描述

(1)配置参数

sentinel.conf中主要的配置参数:

  • port:设置Sentinel的端口号,系统默认 port 是 26379
  • sentinel monitor <name> <masterIP> <masterPort> <Quorum 投票数>:修改监控的 master 地址
    在这里插入图片描述

(2)启动哨兵

在Redis的src目录下,有一个redis-sentinel程序文件,通过redis-sentinel来启动哨兵,可以在一个redis中运行多个sentinel进程。
语法:./redis-sentinel sentinel配置文件

在 Master 执行 shutdown 后,稍微等一会 Sentinel 要进行投票计算,从可用的 Slave 选举新的 Master。查看 Sentinel 日志,三个 Sentinel 窗口的日志是一样的。

(3)监控

  1. Sentinel 会不断检查 Master 和 Slave 是否正常
  2. 如果 Sentinel 挂了,就无法监控,所以需要多个哨兵,组成 Sentinel 网络,一个健康的Sentinel 至少有 3 个 Sentinel 应用。彼此在独立的物理机器或虚拟机。
  3. 监控同一个 Master 的 Sentinel 会自动连接,组成一个分布式的 Sentinel 网络,互相通信并交换彼此关于被监控服务器的信息
  4. 当一个 Sentinel 认为被监控的服务器已经下线时,它会向网络中的其它 Sentinel 进行确认,判断该服务器是否真的已经下线
  5. 如果下线的服务器为主服务器,那么 Sentinel 网络将对下线主服务器进行自动故障转移,通过将下线主服务器的某个从服务器提升为新的主服务器,并让其从服务器转移到新的主服务器下,以此来让系统重新回到正常状态
  6. 下线的旧主服务器重新上线,Sentinel 会让它成为从,挂到新的主服务器下

(4)总结

主从复制,解决了读请求的分担,从节点下线,会使得读请求能力有所下降,Master 下线,写请求无法执行

Sentinel 会在 Master 下线后自动执行故障转移操作,提升一台 Slave 为 Master,并让其它Slave 成为新 Master 的 Slave

十三、其它设置

1. 设置密码

redis.conf中设置:
找到requirepass 所在的行,去掉注释,requirepass 空格后就是密码。

访问有密码的 Redis 两种方式:

  • 在连接到客户端后,使用命令 auth 密码,命令执行成功后,可以正常使用 Redis。
  • 在连接客户端时使用 -a 密码。例如 ./redis-cli -h ip -p port -a password

2. 导入别的配置文件

在配置文件中使用include参数
include :包含原来的配置文件内容。
示例:include /usr/local/redis-4.0.13/redis.conf

十四、Jedis

1. 加入依赖

Maven仓库中查找Jedis:https://mvnrepository.com/
Jedis 对象并不是线程安全的,在多线程下使用同一个 Jedis 对象会出现并发问题。为了避免每次使用 Jedis 对象时都需要重新构建,Jedis 提供了 JedisPool。JedisPool 是基于Commons Pool 2 实现的一个线程安全的连接池,在Maven仓库中查找"commons pool"或者直接使用下面的依赖:

<!--Jedis依赖-->
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.3</version></dependency><!--Commons Pool 2依赖-->
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.6.0</version>
</dependency>

2. 创建连接池

public class RedisUtils {//定义连接池对象private static JedisPool pool = null;//创建连接池public static JedisPool open(String host, int port) {if (pool == null) {//创建连接池配置对象JedisPoolConfig config = new JedisPoolConfig();//最大Jedis实例数(默认值为8)config.setMaxTotal(10);//最大空闲连接数,设置这个可以保留足够的连接,快速获取连接config.setMaxIdle(3);//提前检查Jedis连接,取值true表示获取的Jedis连接一定是可用的config.setTestOnBorrow(true);//创建Jedis连接池,Redis没有访问密码时的使用方式pool = new JedisPool(config, host, port);//创建Jedis连接池,Redis有访问密码时的使用方式//参数:Jedis配置对象,ip,端口号,连接超时时间,访问密码//pool = new JedisPool(config,host,port,6*1000,"123456");}return pool;}//关闭连接池public static void close() {if (pool != null) {pool.close();}}
}

3. 简单使用连接池

关键方法:

  • 创建连接池:JedisPool jp = RedisUtils.open("192.168.29.128", 6379);
  • 从连接池中获取jedis对象:Jedis jedis = jp.getResource();
  • 对jedis操作是通过方法实现的,方法的名称与redis的命令一样。
  • 不使用连接池,则直接new出一个Jedis对象
public static void main(String[] args) {try {//创建连接池JedisPool jp = RedisUtils.open("192.168.29.128", 6379);//从连接池中获取jedis对象Jedis jedis = jp.getResource();jedis.flushDB();jedis.hset("hset1", "str1", "aaa");String hget = jedis.hget("hset1", "str1");Map<String,String>  map = new HashMap<>();map.put("id", "A0001");map.put("name", "zs");map.put("age", "23");jedis.hmset("student", map);List<String> list = jedis.hmget("student", "id", "name", "age");System.out.println(list);System.out.println(hget);System.out.println(jedis);} catch (Exception e) {e.printStackTrace();} finally {RedisUtils.close();}
}

4. 事务

事务使用的是Transaction对象,然后使用该对象对redis数据库进行操作,提交之后返回List,里面存放着是否执行成功(OK/报错)

public static void main(String[] args) {try {JedisPool jp = RedisUtils.open("192.168.29.128", 6379);Jedis jedis = jp.getResource();jedis.flushDB();Transaction tran = jedis.multi();tran.set("str1", "aaa1");tran.set("str2", "bbb2");List<Object> lis = tran.exec();for (Object li : lis) {System.out.println(li);//OK, OK}} catch (Exception e) {e.printStackTrace();} finally {RedisUtils.close();}
}
ljf8838
发布了41 篇原创文章 · 获赞 17 · 访问量 712
私信关注
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 浅谈lambda表达式最通俗易懂的讲解

    Java8发布已经有一段时间了,这次发布的改动比较大,很多人将这次改动与Java5的升级相提并论。Java8其中一个很重要的新特性就是lambda表达式,允许我们将行为传到函数中。想想看,在Java8 之前我们想要将行为传入函数,仅有的选择就是匿名内部类。Java8发布以后,lambda表达式…...

    2024/4/19 5:36:15
  2. java注解详解

    注解: * 概念:说明程序的。给计算机看的 * 注释:用文字描述程序的。给程序员看的* 定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数…...

    2024/4/20 7:32:34
  3. 记一次对DM数据库的优化过程

    某年某月某日的一个下午,接收到监控服务器的一条告警短信: 尊敬的运维工程师 XX,你好: “192.168.136.200”数据库服务器 CPU 异常,CPU 使用率 98.7%,请尽快处理。 看到这个消息浑身一紧,赶紧掐灭手中的烟,跑回办公室。 以上段子纯属捏造,如有雷同,我反正是不改。 言…...

    2024/4/7 21:52:12
  4. 解决SSLHandshakeException :sun.security.validator.ValidatorException: PKIX path building failed:

    详细分析Java中访问https请求exception(SSLHandshakeException, SSLPeerUnverifiedException)的原因及解决方法。 1、现象 用JAVA测试程序访问下面两个链接。 https链接一:web服务器为jetty,后台语言为java。 https链接二:web服务器为nginx,后台语言为php。 链接一能正常访…...

    2024/4/8 0:27:34
  5. Java 中 Arrays 类的用法

    点赞收藏分享文章举报粉胖胖发布了6 篇原创文章 获赞 0 访问量 2364私信关注...

    2024/4/18 7:48:53
  6. Windows、Linux、ARM、Android、iOS全平台支持的RTMP推流组件EasyRTMP- iOS进入预览界面系统直接崩溃的原因分析

    EasyRTMP是一套调用简单、功能完善、运行高效稳定的RTMP推流功能组件,支持RTMP推送断线重连、环形缓冲、智能丢帧、网络事件回调,支持Windows、Linux、ARM、Android、iOS平台,支持市面上绝大部分的RTMP流媒体服务器,能够完美应用于各种行业的直播需求,手机直播、桌面直播、…...

    2024/4/19 15:52:09
  7. PHP版抖音解析接口,抖音视频API解析接口,2019年12月亲测

    这里说的解析抖音无水印视频是通过调用第三方(www.videoparse.cn)接口来完成的,这个第三方平台支持主流短视频平台的去水印解析。 接口调用很简单,接口地址: https://api-sv.videoparse.cn/api/video/normalParse?appid=平台appid&appsecret=平台appsecret&url=需要…...

    2024/3/30 9:30:39
  8. Lucene介绍与使用

    1、了解搜索技术 1.1 什么是搜索 简单的说,搜索就是搜寻、查找,在IT行业中就是指用户输入关键字,通过相应的算法,查询并返回用户所需要的信息。 1.2 普通的数据库搜索 类似:select * from 表名 where 字段名 like ‘%关键字%’ 例如:select * from article where conten…...

    2024/3/29 10:23:30
  9. 同余方程和线性丢番图方程

    点赞收藏分享文章举报想飞的小菜鸡发布了7 篇原创文章 获赞 3 访问量 2064私信关注...

    2024/3/28 19:44:58
  10. Java 中 foreach 的用法

    点赞收藏分享文章举报粉胖胖发布了6 篇原创文章 获赞 0 访问量 2363私信关注...

    2024/4/20 7:43:11
  11. _09_面向对象之继承、多态

    四. 继承概念 继承是从已有的类中派生出新的类,新的类能吸收已有类的属性和行为,并能扩展新的属性和行为。 1.1 Java继承特点 1)Java是单继承的,不支持多继承。这样使得Java的继承关系很简单,一个类只能有一个父类,易于管理程序。同时一个类可以实现多个接口,从而克服单继…...

    2024/3/29 10:23:27
  12. 什么是 Java?

    一、什么是Java经过了多年的发展,Java早已由一门单纯的计算机编程语言,演变为了一套强大的技术体系。是的,什么是Java,我想技术体系四个字应该是最好的概括了吧。Java设计者们将Java划分为3种结构独立但却彼此依赖的技术体系分支,它们分别对应着不同的规范集合和组件:Jav…...

    2024/4/17 15:24:23
  13. _10_面向对象之抽象类与接口

    六. 抽象类与接口抽象类 1.1概念 抽象类往往用来表示设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。 比如:动物,它只是一个抽象的概念,并没有一个 “东西”叫做 “动物”。所以,它并不能代表一个实体,这种情况下,我们就适合把它定义成抽…...

    2024/4/18 17:18:09
  14. js三级联动

    原生js实现省市区三级联动 html部分代码<select name="" id="p">   <option value="0">请选择省</option> </select> <select name="" id="c">   <option value="0"&…...

    2024/4/10 3:28:00
  15. Heartrate:一个牛逼的工具,Python执行实时可视化

    实时堆栈追踪(stacktrace)Heartate——如监测心率般追踪程序运行项目地址:https://github.com/alexmojaki/heartrateHeartrate 是一个 Python 的工具库,可以实时可视化 Python 程序的执行过程。监控运行中的 Python 程序如图:如图所示,左侧数字表示每行代码被触发的次数。…...

    2024/3/29 10:23:23
  16. EasyRTMP+EasyDSS实现一套完整的紧急视频回传直播与存储回放方案之EasyRTMP-iOS的AACEncoder.m文件实现音频的硬编码功能

    音视频流媒体硬解码是指不使用CPU进行编码,使用显卡GPU,专用的DSP、FPGA、ASIC芯片等硬件进行编码。编码框架Video ToolBox和AudioToolbox。EasyRTMP是结合了多种音视频缓存及网络技术的一个rtmp直播推流端,包括:圆形缓冲区(circular buffer)、智能丢帧、自动重连、rtmp协议…...

    2024/4/13 13:43:39
  17. 单点登陆

    点赞收藏分享文章举报tian31233发布了44 篇原创文章 获赞 45 访问量 13万+私信关注...

    2024/3/28 17:24:07
  18. vim重复操作的宏录制

    在编辑某个文件的时候,可能会出现需要对某种特定的操作进行许多次的情况,以编辑下面的文件为例:;===================================================================================== ;This is a sample configuration file when upgrading XXX using InstallShield. …...

    2024/4/7 21:33:19
  19. SpringBoot创建工程

    一、SpringBoot简介 1.1 原有Spring优缺点分析 1.1.1 Spring的优点分析 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切…...

    2024/4/7 16:28:18
  20. fastJson与jackson性能对比

    最近项目用到fastJson和jackson,为了决定到底弃用哪个,随手写了个测试看看到底谁的性能更胜一筹。看到过很多对比的帖子,大多数结果是fastJson性能高于jackson,可偏偏像SpringMVC这样成熟的框架默认也采用的jsckson,这就引起了我的怀疑,决定自己动手试试1、开始测试,用一…...

    2024/4/7 21:55:20

最新文章

  1. Ubuntu24.04之软件源修改

    注意事项 Ubuntu24.04的软件源从/etc/apt/sources.list改为/etc/apt/sources.list.d/ubuntu.sources 修改步骤 #备份软件源 sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak #更换软件源&#xff08;更换为中科大源&#xff0…...

    2024/4/20 14:07:53
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 数据库相关知识总结

    一、数据库三级模式 三个抽象层次&#xff1a; 1. 视图层&#xff1a;最高层次的抽象&#xff0c;描述整个数据库的某个部分的数据 2. 逻辑层&#xff1a;描述数据库中存储的数据以及这些数据存在的关联 3. 物理层&#xff1a;最低层次的抽象&#xff0c;描述数据在存储器中时如…...

    2024/4/12 17:07:52
  4. CSS3 高级- 复杂选择器、内容生成、变形(transform)、过渡(transition)、动画(animation)

    文章目录 一、复杂选择器兄弟选择器:选择平级元素的唯一办法属性选择器:1、通用:基本用不着,太泛了2、自定义:4种伪类选择器:1、目标伪类:2、结构伪类:3、元素状态伪类:4、伪元素选择器:应用于文字,使网页看起来想杂志5、否定伪类:选择器:not([本选择器的条件]) /*…...

    2024/4/19 3:27:56
  5. 权限提升-Linux系统权限提升篇VulnhubRbash绕过DockerLXD容器History泄漏shell交互

    知识点 1、普通用户到Linux-泄漏-History 2、普通用户到Linux-限制-Rbash绕过 3、普通用户到Linux-容器-LXD&Docker 4.Linux系统提权-web/普通用户-docker逃逸&提权&shell交互 章节点&#xff1a; 1、Web权限提升及转移 2、系统权限提升及转移 3、宿主权限提升及…...

    2024/4/20 0:54:36
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/19 14:24:02
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/19 18:20:22
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/19 11:57:31
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/19 11:57:31
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/19 11:57:52
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/19 11:57:53
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/19 11:58:14
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/19 11:58:20
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/20 7:40:48
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/19 11:58:39
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/19 11:58:51
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/20 3:12:02
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/19 11:59:15
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/19 11:59:23
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/19 11:59:44
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/19 11:59:48
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/19 12:00:06
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/19 16:57:22
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/19 12:00:25
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/19 12:00:40
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57