【学习记录】macOS的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 开启一个事务
    OK
    
    redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
    QUEUED
    
    redis 127.0.0.1:6379> GET book-name
    QUEUED
    
    redis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
    QUEUED
    
    redis 127.0.0.1:6379> SMEMBERS tag
    QUEUED
    
    redis 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可以即是主又是从,如下图:
    在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值