Redis主从复制

单机Redis存在的问题

什么是单机?就是在一台机器上部署一个Redis节点。

  • 机器故障

一旦该节点出现故障,则可能无法在短时间内恢复,客户端则无法连接Redis,严重会影响生产。这就是单机存在的问题。

Redis常用命令

通用命令

  • keys: 统计Redis中的所有键
  • dbsize: 统计数据库大小,比如有10个key,dbsize就是10
  • exist key: 判断key是否存在,key可以是任意数据类型
  • del key [key …]: 删除key,可以删除多个key
  • expire key seconds: 为 key 设置过期时间,一段时间后 key 会自动删除
  • type key: 查看 key 数据类型,比如是字符串类型还是哈希类型

keys *

Go之GRPC

什么是RPC

  • RPC(Remote Procedure Call)远程过程调用,通俗的讲就是一个节点请求另一个节点提供的服务。
  • RPC 强调的是远程过程调用,与之对应的是本地过程调用,函数调用就是最简单的本地过程调用。

为什么?

Go开发环境搭建

安装与配置

下载

安装

1
2
sudo wget https://golang.google.cn/dl/go1.14.12.darwin-amd64.tar.gz
sudo tar -C /usr/local -zxvf go1.14.12.darwin-amd64.tar.gz

参考:Go installation

配置

  • GOROOT: Go安装路径,比如 /usr/local/go
  • GOPATH: Go工作目录,包含 srcpkgbin 三个文件夹,比如 /Users/{UserName}/golang。安装目录通常存放自己开发的代码或者第三方依赖库。
  • GOPROXY: 下载依赖库时的镜像代理,可以是公司内部自建镜像。
  • GOPRIVATE: 指向自己的私有库,比如自己公司的私有库。
  • PATH: 该目录下的二进制文件可以在任意目录下直接运行。

注意:

Python安装与配置

1 源码编译安装

1.1 安装依赖

CentOS:

1
sudo yum install -y openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++  openssl-devel libffi-devel mariadb-devel xz-devel tk-devel tcl-devel libuuid-devel

Debian/Ubuntu:

1
sudo apt-get install -y zlib1g-dev libbz2-dev libssl-dev libncurses5-dev default-libmysqlclient-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-dev libffi-dev libc6-dev tk-dev tcl-dev uuid-dev

1.2 下载

1
wget https://www.python.org/ftp/python/3.13.0/Python-3.13.0.tar.xz

1.3 解压

1
tar xvf Python-3.13.0.tar.xz -C /tmp

1.4 编译

Python3.8 安装到 /usr/local 目录:

Redis Cluster

为什么需要集群

发现问题

1、并发量

Redis 官方的提供的性能并发量10万/每秒。如果有些业务随着范围、体量越来越大,需要更多的QPS呢?比如需要100万/每秒呢?

2、数据量

Redis安装与启动

准备

查看当前所在目录

1
2
$ pwd
/opt

下载

1
wget https://download.redis.io/releases/redis-3.0.7.tar.gz

解压

1
tar -xvf redis-3.0.7.tar.gz

创建软链

1
ln -s redis-3.0.7 redis

编译安装

进入 redis 目录编译安装。会在 /usr/local/bin 目录下生成可执行文件,之后就可以在任意目录下执行 redis 的可执行文件:

Redis初识

Redis是什么

  • 开源。
  • 高性能 Key-Value 键值对存储服务系统,可理解为一个数据库,QPS可达10万级别。
  • 支持多种数据结构。
  • 支持高可用、分布式。
  • 提供了丰富的功能,如 pipline、慢查询、发布订阅等。

Redis特性

  • 速度快
  • 支持持久化
  • 支持多种数据结构
  • 支持多种编程语言
  • 功能丰富
  • 简单,代码短小精悍,另外使用也简单
  • 支持主从复制,可以将主节点数据作为一个副本
  • 高可用、分布式,主从复制是高可用、分布式的基础

速度快

初识 C Pointer

一、基本概念

1、指针是什么?

指针就是地址。

2、地址又是什么?

地址是内存单元的编号。

3、内存单元的编号又是什么?

  • 内存分为了很多单元或者很多小格子,每个格子一个编号。相当于我们的房子,一个房子一个编号,内存是一个格子一个编号,每个格子只能存放8个0或者8个1。
  • 内存条中分为了很多小单元。一个单元有8位,可以存放8个0或者8个1,内存单位 ,而是 字节,也就是不是一个0或者一个1为一个编号,而是8个0或者8个1组合在一起是一个编号。一个字节等于8位。
  • 8个0或者8个1是一个编号,接着又是8个0或者8个1是一个编号。这个编号就是地址。

4、小结