【学习记录】macOS的Redis安装及基本使用

【学习记录】macOS的Redis安装及基本使用

    • 一. Redis的安装与启动
    • 二. 简单使用
      • ① 尝试插入第一个key-value
      • ② Redis的数据类型与基本使用
        • 字符串
        • 列表
        • 字典(哈希表)
        • 集合
        • 有序集合
    • 三. 杂乱无章的笔记

一. Redis的安装与启动

打开终端,输入以下命令即可安装

brew install redis

安装成功后, 输入以下命令通过brew来启动Redis

brew services start redis

接下来启动服务端

redis-cli

二. 简单使用

更多命令可到菜鸟教程里查询。这个模块只是对这些结构的简单描述。

① 尝试插入第一个key-value

插入键值对 114514 - tiansuo

set 114514 tiansuo

而后通过键值114514即可获得对应值tiansuo

get 114514

② Redis的数据类型与基本使用

Redis中有五种数据类型:

  • 字符串 String
  • 列表 List
  • 字典 Hash
  • 集合 Set
  • 有序集合 Sorted Set

字符串

感觉和C++,JAVA等语言里的String大同小异。
下列举两个命令例子

  • append 命令:拓展字符串 (append key value)
append 114514 haoer

输入这行命令后,键值对更新成 114514 - tiansuohaoer

  • type命令:获取键的数据类型的值
type 114514 // 返回 String

列表

感觉像是数组和栈、队列的缝合怪。
下标从0开始,有如下功能:

  • 添加列表:lpush / rpush listName value, l / r分别代表从左/右开始添加元素
  • 弹出元素:lpop / rpop
  • 由下标获取值:lindex key index
  • 获取范围下标内的所有值:lrange key start stop 如 lrange listOne 0 3

字典(哈希表)

可以由以下这个初始化流程来了解字典的结构

hset person name jack // 新建一个名为person的字典,其中一个键值name对应值jack
hset person age 20    // 在字典person中,新增一个键值age对应值20
hgetall person        // 获取当前字典person的所有键值与值
hkeys person          // 获取当前字典person的所有键值
hvals person          // 获取当前字典person的所有值

集合

很熟悉的一个结构了, 无非就是集合的交并差。

有序集合

增加一个Score属性,用来对集合成员进行一个排序。
集合成员唯一,但是分数不唯一,即不同成员可以分数相同。

三. 杂乱无章的笔记

笔记

  1. Redis有着更为复杂的数据结构并且提供对他们的原子性操作,数据结构对程序员透明,无需进行额外的抽象
  2. Redis运行在内存中但是可以持久化到磁盘,进行高速读写时需要权衡内存
  3. string 是 redis 最基本的类型,是二进制安全的,可以包含任何数据。比如jpg图片或者序列化的对象。
  4. DEL keyname 用于删除

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xLsUUy2N-1626159326140)(C:\Users\V_isaacfu\AppData\Roaming\Typora\typora-user-images\image-20210707110413232.png)]

  1. 客户端启动:本地:redis-cil 远程:redis-cli -h host -p port -a password

    eg: redis-cli -h 127.0.0.1 -p 6379 -a “mypass”

    订阅:SUBSCRIBE name

    发送:PUBLISH name “message”

    事务

    Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:

    • 批量操作在发送 EXEC 命令前被放入队列缓存。
    • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
    • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

    一个事务从开始到执行会经历以下三个阶段:

    • 开始事务。
    • 命令入队。
    • 执行事务。
    redis 127.0.0.1:6379> MULTI // 以 MULTI 开启一个事务
    OKredis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
    QUEUEDredis 127.0.0.1:6379> GET book-name
    QUEUEDredis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
    QUEUEDredis 127.0.0.1:6379> SMEMBERS tag
    QUEUEDredis 127.0.0.1:6379> EXEC // 一并执行事务中的所有命令,此处事务不具有原子性,命令有
    1) OK
    2) "Mastering C++ in 21 days"
    3) (integer) 3
    4) 1) "Mastering Series"2) "C++"3) "Programming"
    
  2. Redis 发布订阅:消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。

    而 Redis Stream 提供了消息的持久化和主备复制功能

  3. NoSql:解决高并发、高可用、高可扩展,大数据存储等一系列问题而产生的数据库解决方案.

    叫非关系型数据库,它的全名Not only sql。它不能替代关系型数据库,只能作为关系型数据库的一个良好补充。

    分类:

    • 键值(Key-Value)存储数据库 :典型应用: 内容缓存,主要用于处理大量数据的高访问负载。 数据模型: 一系列键值对

      优势: 快速查询 劣势: 存储的数据缺少结构化

    • 列存储数据库 典型应用:分布式的文件系统

    • 文档型数据库,比如 MongoDB ,典型应用:Web应用(与Key-Value类似,Value是结构化的)

    • 图形(Graph)数据库 ,图结构

  4. Redis 应用场景:缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用) 分布式集群架构中的session分离。 聊天室的在线好友列表。 任务队列。(秒杀、抢购、12306等等) 应用排行榜。 网站访问统计。 数据过期处理(可以精确到毫秒)

  5. Redis 持久化方案

    • Rdb 方式: Redis 默认的方式,redis 通过快照方式将数据持久化到磁盘中。

      一旦redis非法关闭,那么会丢失最后一次持久化之后的数据。

    • Aof 方式:操作一次 redis 数据库,则将操作的记录存储到 aof 持久化文件中。

  6. Redis 主从复制:持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中。

    但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障,如下图:

    主redis中的数据有两个副本(replication)即从redis1和从redis2,即使一台redis服务器宕机其它两台redis服务也可以继续提供服务

    主redis中的数据和从redis上的数据保持实时同步,当主redis写入数据时通过主从复制机制会复制到两个从redis服务上。

    只有一个主redis,可以有多个从redis。

    主从复制不会阻塞master,在同步数据时,master 可以继续处理client 请求

    主机一旦发生增删改操作,那么从机会将数据同步到从机中. 从机不能执行写操作

    一个redis可以即是主又是从,如下图:
    在这里插入图片描述

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

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

相关文章

【学习笔记】JAVA基础——异常处理部分

文章目录前言简介一. try、catch与finally① try && catch② finally③ throws补充:JVM 相关二. 异常的分类① 分类解释与思维导图三. 自定义异常例子:Hero类的attack方法的isDeadException。四. 上传代码到GIT① 首先在github新建一个仓库Java_…

【学习笔记】数据链路层的差错控制——检错编码与纠错编码(海明码、奇偶检验码与CRC循环冗余码)

文章目录前言一. 差错控制简介二.补充知识三. 检错编码(1)奇偶检验码组成:构造方法:以奇检验码为例。举个例子:检验码求法:错误检测方法:特点(2)CRC循环冗余检验码三要素…

【学习笔记】数据链路层——流量控制:停止等待协议、后退N帧协议(GBN)、选择重传协议(SR)

文章目录一. 流量控制① 必要性② 数据链路层 VS 传输层③ 定义④ 方法1)停止等待协议2)滑动窗口协议关系:包括:3)协议对比二. 停止-等待协议必要性应用情况① 无差错情况② 有差错情况1)数据帧丢失&#x…

java线程唤醒与等待_Java线程的等待与唤醒

生产者和消费者必须使用同步代码块包裹起来,保证等待和唤醒只能有一个执行,同步使用的锁对象必须保证唯一Thread中重要方法void wait() 在其他线程调用此对象的notify()方法或notifyall()方法前,导致当前线程等待void notify() 唤醒在此对象监…

【学习笔记】数据链路层——信道划分访问控制(FDM、TDM、STDM、WDM、CDM CDMA)

PPT截自王道考研B站教程 一. 铺垫知识 ① 传输数据使用的两种链路 星型、总线型都是广播式结构。 星型更有容错率,总线型断一个则全断。 ② 介质访问控制 定义 采取一定措施,使得两对节点之间的通信不会发生互相干扰的情况。 分类 多路复用&…

【学习笔记】数据链路层——随机访问介质访问控制(ALOHA、CSMA、CSMA/CD、CSMA/CA),截断二进制指数规避算法

文章目录小前言一. ALOHA协议纯ALOHA协议时隙ALOHA协议ALOHA对比CSMA协议定义与分类① 1-坚持CSMA② 非坚持CSMA③ p-坚持CSMA总结CSMA/CD协议传播时延对载波监听的影响确定重传时机:截断二进制指数规避算法最小帧长问题CSMA/CA协议工作原理CSMA/CD 与 CSMA/CA的对比…

pca算法介绍及java实现_PCA算法原理及实现

众所周知,PCA(principal component analysis)是一种数据降维的方式,能够有效的将高维数据转换为低维数据,进而降低模型训练所需要的计算资源。以上是比较官方的说法,下面是人话(正常人讲的话)版。pca就是一种能够有效压缩数据的方…

【学习笔记】数据链路层——轮询访问介质控制(轮询协议、令牌传递协议)

文章目录一. 轮询访问介质控制二. 轮询协议三. 令牌传递协议结束语PPT截自王道考研B站教程 一. 轮询访问介质控制 结合了前面的信道划分访问控制、随机访问MAC协议的优点: 既要不产生冲突,又要发送时占全部带宽。 二. 轮询协议 轮询开销:…

【学习笔记】局域网基本概念和体系结构,以太网、无线局域网与PPP协议、HDLC协议

文章目录一. 局域网:特点与要素① 拓扑结构② 传输介质③ 介质访问控制方法④ 局域网的分类⑤ IEEE 802标准⑥ MAC子层和LLC子层二. 以太网① 概述② 提供无连接、不可靠的服务③ 传输介质与拓扑结构的发展④ 10BAST-T以太网⑤ 适配器与MAC地址⑥ 以太网MAC帧⑦ 高速…

【学习笔记】数据链路层——链路层设备:物理层拓展以太网、链路层拓展以太网与冲突域和广播域

文章目录一. 冲突域与广播域① 定义与对比图② 例子二. 物理层扩展以太网三. 链路层扩展以太网① 网桥定义透明网桥源路由网桥② 以太网交换机PPT截自B站王道考研教程 本文内容导图 一. 冲突域与广播域 可以先只是简单看看定义,然后看完二、三后再回来看对比图和…

【学习笔记】网络层——概述、数据交换方式:电路交换、报文交换与分组交换(数据报与虚电路)

文章目录一. 概述二. 数据交换方式① 电路交换② 报文交换③ 分组交换④ 分组交换 && 报文交换举例对比⑤ 三种数据交换方式比较总结三. 分组交换的两种方式① 定义传输单元名词辨析② 数据报③ 虚电路④ 数据报与虚电路的对比ppt截自王道考研B站教程 太不容易了&#…

【学习记录】网络层——IP数据报(格式与分片)

文章目录一. IP数据报格式二. IP数据报分片① 为什么要分片?② 标识、标志与片偏移③ 例题单位为nB小结PPT截自王道考研教程 tips:b是位,B是字节。 一. IP数据报格式 在本章节中,暂时不区分IP数据报与分组。 生存时间(Time To Live)&#xf…

自动驾驶学习笔记(二十二)——自动泊车算法

#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo开放平台9.0专项技术公开课》免费报名—>传送门 文章目录 前言 感知算法 定位算法 规划算法…

【学习笔记】 IPv4地址、NAT与子网掩码、子网划分

文章目录一. IP地址① 在例子中理解③ IP地址的分类④ 特殊IP地址⑤ 私有IP地址⑥ 各类IP的对比二. NAT三. 子网划分与子网掩码① 子网划分② 子网掩码例题1例题2③ 使用子网时路由的转发PPT截自王道考研教程 一. IP地址 可以理解成上网设备的身份证号唯一点分十进制&#xff…

java对象底层原存储结构图解_图解图库JanusGraph系列-一文知晓“图数据“底层存储结构...

大家好,我是洋仔,JanusGraph图解系列文章,实时更新~图数据库文章总目录:转载文章请保留以下声明:一:存储模式留言或私信我,邀请你加入“图数据库交流”微信群!1、图内容本文以下所有…

【学习笔记】网络层——无分类编址CIDR、ARP协议、DHCP协议和ICMP协议

文章目录一. CIDR① 定义② 构成超网③ 最长前缀匹配二. ARP协议① 定义② 例题三. DHCP协议① 主机如何获取IP②DHCP协议四. ICMP协议① ICMP差错报告报文类型(5种)数据字段不发送的情况② ICMP询问报告报文类型应用一. CIDR ① 定义 在点分十进制后加…

【学习笔记】网络层——IPv6:地址表示、IPv4的对比、IPv4过渡到IPv6、基本地址类型等

文章目录一.1) 为什么要有IPv62)数据报格式3)IPv4和IPv6的区别4)IPv6地址表示形式5)IPv6基本地址类型6)IPv4到IPv6的过渡方法一. 1) 为什么要有IPv6 CIDR、NAT只是缓解IPv4空间殆尽,治标不治本。 而IPv6可…

【学习笔记】网络层——网络层设备、移动IP、IP组播

文章目录一. 网络层设备1)三层设备的区别2)路由表与路由转发二. 移动IP① 定义相关术语:实际过程:三. IP组播① IP数据报的三种传输方式② IP组播地址③ IGMP协议与组播路由选择协议网际组管理协议IGMP组播路由选择协议一. 网络层…

larval+mysql+不等于_MySQL学习日记(19)比较运算符

比较运算符比较对象 比较运算符 子查询mysql> SELECT * FROM 运算符例子;----------| id | 数值 |----------| 1 | 1 || 2 | 3 || 3 | 5 || 4 | 7 || 5 | 9 || 6 | 11 || 7 | 13 |----------7 rows in set (0.01 sec)mysql> SELECT * FROM 运算符例子2;----------| id | …

【学习笔记】路由算法与路由协议:RIP协议与距离向量算法、OSPF协议与链路状态算法、BGP协议

文章目录一. 路由算法与路由协议概述① 路由算法的分类② 分层次的路由选择协议二. RIP协议和距离向量算法① RIP协议定义② RIP协议:交换对象、交换周期、交换内容③ 距离向量算法例题1例题2④ RIP协议的报文格式⑤ RIP协议:好消息传得快,坏…