Linux系统(Centos 7)redis

2023-11-10

1、redis背景

1.1 什么是NOSQL?

nosql(not only sql)不仅仅是sql。NoSQL,泛指非关系型的数据库。非关系型的数据库则由于其本身的特点得到了非常迅速的发展。

 非关系数据库和关系型数据库之间的区别:

RDBMS---关系型数据
- 高度组织化结构化数据。
- 结构化查询语言(SQL) select
- 数据和关系都存储在单独的表中。
- 数据操纵语言DML,数据定义语言DDL
- 严格的一致性. 事务 ACID 
- 基于事务
NoSQL--非关系型数据库---缓存数据
- 代表着不仅仅是SQL
- 没有声明性查询语言  
- 键 - 值对存储 key value 
- 非结构化和不可预知的数据  
- 高性能,高可用性和可伸缩性。 适合搭建集群。

 NOSQL的产品

 Mongodb:

redis:

Hbase:针对大数据

 2、redis

Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。Redis提供数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,地理空间索引和流。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。

 redis的优点

1.Redis读取的速度是110000次/s,写的速度是81000次/s2.原子 。Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。3.支持多种数据结构:string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合)4.持久化--磁盘,主从复制(集群)5.官方不支持window系统,但是又第三方版本。 linux系统。---

 3、安装redis

在虚拟机中在线安装

安装redis的依赖。
yum install -y gc-c++

 解压redis安装包

tar -zxvf redis安装包

 进入redis解压目录

cd /usr/local/redis解压目录

make 编译c语言
make install 安装redis

 启动redis

redis-server  redis.conf

 连接redis要修改redis.conf配置文件中的内容

(1)修改redis后台启动--在309行

(2)修改端口号--在138行

  (3)设置远程连接--在87行

 (4)关闭保护模式--在111行

 4、redis一些常用的命令

redis命令手册:

redis命令手册/

Redis 命令参考 — Redis 命令参考/

4.1 对key操作的命令

1. 查看所有的key  [keys *]
2. 为指定的key设置过期时间。 [expire key  seconds]
3. 查看key的剩余存活时间 ttl key   返回-1表示永远存在 -2不存在该key  
4. 删除指定的key  delete key...  返回结果为删除的个数
5. 判断指定的key是否存在  exists key

4.2 对redis数据库的操作

默认redis中由16库。可以通过修改redis配置文件更改数量。

 select n: 切换redis库。n[0~databases-1]
flushdb: 清空当前所在的库。
flushall: 清空所有库的内容。

4.3 redis支持的数据类型

Strings、Lists、Sets、Hashes、Sort Sets、Bitmaps and HyperLogLogs、Streams、

Geospatial indexes

使用频率最高是: Strings字符串类型,Lists列表类型,Sets集合类型,Hashes哈希类型,Sorted Sets 有序集合。这里所谓的类型,就是value的类型。

4.3.1 String类型

set key value: 存储指定key和value的值。
get key: 获取指定key的value值。
mset key value key value...:存储多个key和value的值
mget key key ...:获取多个key对应的value。
setnx key value: 如果指定的key存在,则不存入。如果不存在,则存入。
setex key second value: 存储指定的key和value并设置过期时间。
incr key: 对指定key的value递增。----点赞 收藏数 主键的递增
decr key: 对指定key的value递减

4.3.2 Hash哈希类型

hset key field value: 存储指定key的field和value值。
hget key field: 获取指定key的field对应的value值。
hgetall key: 获取在哈希表中指定 key 的所有字段和值
hkeys key: 获取指定key所有field名称
hvals key: 获取指定key的所有value值。
hdel key field: 删除指定key对应的field值

4.3.3 list列表类型

1.lpush key value value....:从左边存储指定key的对应列表值。
2.lpop key: 移出并获取列表的第一个元素
3.lrange key start end: 获取列表指定范围内的元素
4.lindex key index: 根据下标获取指定的元素
5.lset key index value: 修改指定坐标的元素内容

4.3.4 set集合类型

1.sadd key value....:向集合添加一个或多个成员
2.smembers key :返回集合中的所有成员
3.spop key: 随机获取某个元素并移除
4.sinter k1 k2.。。:    返回给定所有集合的交集

4.3.5 sort set 有序集合

zadd key score value score value.....: 往redis中添加有序集合
zrange key start end: 获取指定返回的元素
ZREVRANGE k1 0 -1 WITHSCORES: 分数从高到低

 5、redis的持久化

持久化:把内存中的数据库保存到磁盘上,防止数据的丢失。

redis支持的持久化方式两种:
  (1)RDB:快照  其实就是把数据以快照的形式保存在磁盘上,什么是快照呢,你可以理解成把当前时刻的数据拍成一张照片保存下来。
 (2)AOF :日志追加 记录服务器接受的每个写入操作,当服务器启动时再次加载该日志,会把日志中的命令重新执行一遍。

 redis持久化有两种方式

(1)RDB快照持久化方式

触发方式:

1.手动触发
   [1] save堵塞型保存
    [2] bgsave非堵塞型保存

默认保存的文件名: dump.rdb 可以在redis.conf名称

save

该命令会阻塞当前Redis服务器,执行save命令期间,Redis不能处理其他命令,直到RDB过程完成为止。具体流程如下:

 

执行完成时候如果存在老的RDB文件,就把新的替代掉旧的。我们的客户端可能都是几万或者是几十万,这种方式显然不可取。

bgsave:

执行该命令时,Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。具体流程如下:

 

2.自动触发

 修改redis的配置文件。

 

(2)AOF日志追加持久化方式

配置文件按的默认该文件的名称:appendonly.aof

 默认aof不会开启,需自启

 在虚拟机中查看效果

 优点:aof模式会把每个写操作,记录到一个日志文件,当redis启动时会把该日志中每个指令重新执行一遍。 数据恢复速度慢。数据完整性高。

如果两则都使用,恢复数据时按照aof恢复。因为redis认为它的完整性比较好。大多数使用rdb.

 6、redis的集群模式

redis单机版,出现单机故障后,导致redis无法使用,如果程序使用redis,间接导致程序出错。

redis的集群模式:

(1)主从复制模式

一主多从模式。一个主节点,多个从节点,那么主节点可以负责:读操作,写操作。 从节点只能负责读操作,不能负责写操作。 这样就可以把读的压力从主节点分摊到从节点,以减少主节点的压力。

当主节点执行完写命令,会把数据同步到从节点。

 <1>如何搭建主从关系

原则:配从不配主。

准备: 一主二从-----3台----开三个虚拟机--为了节省虚拟机,在一台主机开启三个redis服务。

7001主节点 7002和7003作为从节点

修改端口号以及rdb文件的名称

启动redis服务

 

进入三个redis服务的客户端

 

查看三个redis服务的主从关系(使用 info replication命令)

 

配置7002和7003为7001的从节点

查看结果:

 

在主节点上执行set k1 v1 可以发现从节点也存在该数据.证明同步到从节点。

可以看出主节点可以读和写。但是从节点只能读。

(2)哨兵模式

由于主从模式,主节点单机后,从节点不会自动上位。 增加一个哨兵服务,该哨兵时刻监控master,如果master挂了,哨兵会在从节点中选举一位为主节点【哨兵投票机制】。

在sentinel.conf配置文件中修改 

 启动哨兵

redis-sentinel sentinel.conf

 

 如果主节点停止后,子节点的哨兵会通过投票来决定下一个主节点是谁。

停止redis服务  shutdown

 (3)集群化模式

原理:

redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个整数结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。

当你往Redis Cluster中加入一个Key时,会根据crc16(key) mod 16384计算这个key应该分布到哪个hash slot中,一个hash slot中会有很多key和value。你可以理解成表的分区,使用单节点时的redis时只有一个表,所有的key都放在这个表里;改用Redis Cluster以后会自动为你生成16384个分区表,你insert数据时会根据上面的简单算法来决定你的key应该存在哪个分区,每个分区里有很多key。

搭建:

三主三从:
   6001 6002 6003 主节点
   6004 6005 6006 从节点

Redis-1 防火墙--6379

bind 0.0.0.0 69行

port 6001 92行

daemonize yes 136行

dbfilename dump6001.rdb

# 打开aof 持久化

appendonly yes 700行

appendonly appendonly6001.aof

# 开启集群

cluster-enabled yes 833行

# 集群的配置文件,该文件自动生成

cluster-config-file nodes-6001.conf 841行

# 集群的超时时间

cluster-node-timeout 15000 847行

 启动这六个redis服务

 分配槽

redis-cli --cluster create --cluster-replicas 1 192.168.111.222:6001  192.168.111.222:6002 192.168.111.222:6003 192.168.111.222:6004192.168.111.222:6005 192.168.111.222:6006

运行

 

测试:

redis-cli ==-c== -h 192.168.223.155 -p 6001

使用集群模式可以写操作,可以把写操作均摊到不同的节点上,减轻了单个主节点的压力。  

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux系统(Centos 7)redis 的相关文章

随机推荐

  • JSP六个动作详解...

    原文地址 http blog sina com cn s blog 6267d71d0100pjdk html JSP中6个动作为 1 Include 2 Forward 3 UseBean 4 GetProperty 5 SetPrope
  • ant打包遇到的问题

    build build xml 350 Problem failed to create task or type foreach Cause The name is undefined Action Check the spelling
  • RK3588移植-opencv交叉编译aarch64

    文章目录 概括 准备资源 编译Opencv 修改CMakelist文件 将lib库复制到 lib目录 问题 opencv videoCapture无法运行视频 安装历程 history 注意 本文中的所有配置相关路径都与当前安装的路径有关
  • python装饰器简介---这一篇也许就够了

    Python装饰器 decorator 是在程序开发中经常使用到的功能 合理使用装饰器 能让我们的程序如虎添翼 装饰器引入 初期及问题诞生 假如现在在一个公司 有A B C三个业务部门 还有S一个基础服务部门 目前呢 S部门提供了两个函数
  • kubernetes组件

    提示 以下内容均为学习过程中的个人笔记 有用自取 无用勿喷 如有错误欢迎指正 1 k8s前身 Borg 是谷歌内部的大规模集群管理系统 负责对谷歌内部很多核心服务的调度和管理 Borg 的目的是让用户能够不必操心资源管理的问题 让他们专注于
  • 【Android】String.format 字符串拼接

    String stra hello String strB 你好 String str String format s中文是 s stra strB hello中文是 你好
  • zabbix 应用日志监控报警

    zabbix 应用日志监控报警 zabbix可监控日志文件 比如zabbix agent日志 var log zabbix agent zabbix agentd log等 当一个日志文件包含特定的字符或者字符模式时 zabbix向用户发送
  • 电子学会 青少年编程等级考试(C语言)七级 试题

    7级 2022 3 01 红与黑 Flood Fill 红与黑 NOIP CSP c 经典例题选讲41 Flood Fill 红与黑 NOIP CSP c 经典例题选讲41 哔哩哔哩 bilibili AcWing 1113 红与黑 bfs
  • Python安装及环境配置

    编程语言分类 编译型 go语言 c语言 一次性把源代码进行翻译 特点是 执行效率高 平台依赖性一般比较高 解释型 js语言 python语言 ruby语言 逐行地对源代码进行翻译和运行 特点是 执行效率相对较低 平台的依赖性不高 安装各个平
  • 编程常用字体Consolas、Fira Code、Source Code Pro

    编程时方便查看 且中文符号与英文符号区别大 便于排错 1 Consolas 一种等宽字体 属于最常用的编码字体下载地址 参考图 2 Fira Code 一种专为代码排版优化的等宽字体 基于 Fira Mono 等宽字体的一个扩展 主要特点是
  • el-element中el-tabs案例的使用

    el element中el tabs的使用 代码呈现
  • cherry-pick的错误分析

    在cherry pick的时候出现以下错误提示 是对同一提交重复做cherry pick引起的 On branch You are currentlycherry picking all conflicts fixed run gitcom
  • 2023华为OD机试真题【最短木板长度/贪心算法】

    题目描述 小明有 n 块木板 第 i 1 i n 块木板长度为 ai 小明买了一块长度为 m 的木料 这块木料可以切割成任意块 拼接到已有的木板上 用来加长木板 小明想让最短的木板尽量长 请问小明加长木板后 最短木板的长度可以为多少 输入描
  • 自媒体工具网站

    黑镜虚拟科技 MetaMaker V2 2 1 B22 11 01 10 48 18 Giios自动写作机器人 Giiso写作机器人 一款内容创作AI辅助工具 视频背景音乐自动匹配工具 巨量创意 图片微动工具 巨量创意 网络资源所搜工具 百
  • CVE-2023-32315:Openfire管理控制台身份验证绕过到RCE的复现

    CVE 2023 32315 Openfire管理控制台身份验证绕过到RCE复现 前言 本次测试仅供学习使用 如若非法他用 与本文作者无关 需自行负责 一 Openfire简介 Openfire是根据开源Apache许可证授权的实时协作 R
  • es6怎么将对象转换为指定数组格式

    let obj a 1 b 2 c 3 var aa Object values obj 1 2 3 console log aa var arr Object entries obj console log arr 0 2 a 1 1 2
  • 过流检测与保护电路

    在数字压力开关项目中 压力表的输出电路开关负载 输出电路要求负载电流最大为50mA 需要在负载电路中加一个电流检测和保护电路 在负载高电压一端或者低电压一端串入一个高精度小阻值采样电阻 电阻值的选取要注意分担的电压和功率不能太大 同时也要主
  • 超大规模数据库集群保稳系列之三:美团数据库容灾体系建设实践

    本文整理自美团技术沙龙第75期的主题分享 美团数据库攻防演练建设实践 系超大规模数据库集群保稳系列 内含4个议题的PPT及视频 的第3篇文章 本文重点介绍了美团数据库的容灾体系建设实践 主要内容包括业务架构 数据库容灾平台能力建设 演练体系
  • VS打开项目或解决方案卡死,一直处于未响应状态。

    VS打开项目或解决方案卡死 一直处于未响应状态 参考文章 1 VS打开项目或解决方案卡死 一直处于未响应状态 2 https www cnblogs com dh123 p 10474694 html 备忘一下
  • Linux系统(Centos 7)redis

    1 redis背景 1 1 什么是NOSQL nosql not only sql 不仅仅是sql NoSQL 泛指非关系型的数据库 非关系型的数据库则由于其本身的特点得到了非常迅速的发展 非关系数据库和关系型数据库之间的区别 RDBMS