美文网首页
数据库 | 初识Redis 2

数据库 | 初识Redis 2

作者: Ricsy | 来源:发表于2019-09-29 19:39 被阅读0次


一、与Python交互

  • 引入模块
    from redis import *

这个模块中提供了StrictRedis对象,用于连接redis服务器,并按照不同类型提供了不同方法,进行交互操作

  • 使用redis服务
from redis import *


if __name__ == '__main__':
    # 创建redis服务的连接对象
    # 默认StrictRedis(host="127.0.0.1", port=6379)
    r = StrictRedis()
    # 调用String类型数据的增删改查的方法
    r.set("py", "666")
    r.set("py", "555")
    r.delete("py")
    r_dara = r.get("py")
    print(type(r_dara))
    if r_dara:
        print(r_dara.decode())

系统 说明
Windows 下载地址:

https://github.com/MicrosoftArchive/redis/releases



使用说明:

二、主从配置

一个master可以拥有多个slave
一个slave又可以拥有多个slave
如此下去,形成了强大的多级服务器集群架构

提示:

  • 读写分离
  • 主机主要是写入数据
  • 从机只能读数据,不能完成数据的写入操作

eg:

将ip为192.168.1.10的机器作为主服务器,将ip为192.168.1.11的机器作为从服务器

主机——192.168.1.10的机器
vim /etc/redis.conf

bind 192.168.1.10

从机——192.168.1.11的机器

bind 192.168.1.11
slaveof 192.168.1.10 6379

Q1: 云服务器CentOS7修改redis的配置中的IP地址为外网地址后,用systemctl重启后失败

不能改为外网地址,因为公网(外网)是映射得到的,bind地址必须是内网地址或127.0.0.1,但主机配置redis时必须用内网地址

参阅

Q2:主机是云服务器,从机是虚拟机中的服务器,从机中slaveof后的地址是云服务器的外网地址而不是用内网地址,端口号就是主机的redis服务的端口号

三、搭建集群

集群至少三主三从
必须有3个及以上的主节点时,才可以创建集群,否则会失败

  • 优点:
    抗风险、主从替换保证数据的完整性

  • 搭建方式:

为了演示,选择在两台机器上通过六个配置文件启动6个redis服务

注意:

  • 仅仅看效果,最好就选一台机器运行6个redis服务就行了,我一个云服务器一个虚拟机就失败,后面只用一台云服务器或虚拟机就成功了
  • 云服务器单个运行6个redis服务时,配置文件ip用内网地址,redis-trib命令的ip用外网地址
  • 开启机器对应端口


eg:

单个机器配置6个的话(配置文件IP是7000-7005),就开启7000/7005和17000/17005共12个端口

  • 集群服务的配置文件的信息示例
    注意根据自己的电脑IP修改IP地址

eg:

  • IP地址为192.168.12.107的主机
    三个文件的配置区别在port、pidfile、cluster-config-file三项

主机1

port 7000
bind 192.168.12.107
daemonize yes
pidfile 7000.pid
cluster-enabled yes
cluster-config-file 7000_node.conf
cluster-node-timeout 15000
appendonly yes

主机2

port 7001
bind 192.168.12.107
daemonize yes
pidfile 7001.pid
cluster-enabled yes
cluster-config-file 7001_node.conf
cluster-node-timeout 15000
appendonly yes

主机3

port 7002
bind 192.168.12.107
daemonize yes
pidfile 7002.pid
cluster-enabled yes
cluster-config-file 7002_node.conf
cluster-node-timeout 15000
appendonly yes
  • IP地址为192.168.12.108的从机
    三个文件的配置区别在port、pidfile、cluster-config-file三项

从机1

port 7003
bind 192.168.12.108
daemonize yes
pidfile 7003.pid
cluster-enabled yes
cluster-config-file 7003_node.conf
cluster-node-timeout 15000
appendonly yes

从机2

port 7004
bind 192.168.12.108
daemonize yes
pidfile 7004.pid
cluster-enabled yes
cluster-config-file 7004_node.conf
cluster-node-timeout 15000
appendonly yes

从机3

port 7005
bind 192.168.12.108
daemonize yes
pidfile 7005.pid
cluster-enabled yes
cluster-config-file 7005_node.conf
cluster-node-timeout 15000
appendonly yes

3.1 搭建过程

  • 创建服务的目录
    mkdir redis
    cd redis
  • 编写配置文件

IP地址为192.168.12.107的主机
vim 7000.conf
vim 7001.conf
vim 7002.conf

IP地址为192.168.12.108的从机
vim 7003.conf
vim 7004.conf
vim 7005.conf

  • 启动服务
    启动不了,就关闭网络再试试

格式:redis-server 配置文件
进程查看:ps aux| grep redis

IP地址为192.168.12.107的主机

redis-server 7000.conf
redis-server 7001.conf
redis-server 7002.conf

IP地址为192.168.12.107的从机

redis-server 7003.conf
redis-server 7004.conf
redis-server 7005.conf

  • 安装redis-trib
    Redis 集群命令行工具

yum install redis-trib -y

  • 创建集群
    注意开启对应端口

redis-trib create --replicas 1 192.168.12.107:7000 192.168.12.107:7001 192.168.12.107:7002 192.168.12.108:7003 192.168.12.108:7004 192.168.12.108:7005

Q3:不知道为什么云服务器执行redis-trib create时,就会无法访问我的虚拟机;而虚拟机执行,就可以进入下一步了?

Q4:到了这一步,我一个云服务器和一个虚拟机的做法就进行不下去了?无线等待

换了方式:直接在云服务器中运行6个redis服务,而不采用一个虚拟机一个云服务器的做法,这次成功了

提示:

  • slot哈希槽,用来存储数据的,16384个哈希槽就意味着可以存储16384条数据

参阅:

3.2 验证集群

当存活的主节点数低于总节点数的一半时,整个集群无法提供服务

进入集群的redis-cli命令格式:redis-cli -h IP地址 -c -p 端口号
参数:-c表示连接到集群

  • CRC16算法
    默认16384个哈希槽(hash slot)

管理在哪个服务器上写数据,有去中心化等特点

3.4 集群性能指标

Redis是个单线程模型
对于1G带宽来说,延迟时间一般是200μs

通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息

info命令输出的数据可分为9个类别

数据类别 说明
Server info server

Clients info clients

Memory info memory



used_memory 内存使用率
Persistence info persistence

Stats info stats

Replication info replication

CPU info cpu

Cluster info cluster

Keyspace info keyspace

3.3.1 内存使用率

3.3.2 命令处理数

命令处理总数确实是处于上升或下降状态,有2个原因引起的:
➢ 命令队列里的命令数量过多,后面命令一直在等待中
➢几个慢命令阻塞Redis

解决办法:
➢ 使用多参数命令
➢ 管道命令
➢ 避免操作大集合的慢命令

3.3.3 响应时间

查看响应时间:redis-cli --latency -h 127.0.0.1 -p 6379

参阅:

3.4 集群与Python交互

  • 安装redis-py-cluster
    pip3 install redis-py-cluster

注意加入自己主机的外网IP

第一种解码方式:
.decode()

from rediscluster import RedisCluster


if __name__ == '__main__':
    # 创建集群的连接对象
    startup_nodes = [
                        {'host': 'IP', 'port': '7000'},
                        {'host': 'IP', 'port': '7001'},
                        {'host': 'IP', 'port': '7002'}]
    rc = RedisCluster(host="IP", startup_nodes=startup_nodes)
    rc.set("py666", 666)
    rc_data = rc.get("py666").decode()
    print(rc_data)

第二种解码方式:
decode_responses=True

from rediscluster import RedisCluster


if __name__ == '__main__':
    # 创建集群的连接对象
    startup_nodes = [
                        {'host': 'IP', 'port': '7000'},
                        {'host': 'IP', 'port': '7001'},
                        {'host': 'IP', 'port': '7002'}]
    rc = RedisCluster(host="IP", startup_nodes=startup_nodes, decode_responses=True)
    rc.set("py666", 666)
    rc_data = rc.get("py666")
    print(rc_data)

更新中......


相关文章

  • 数据库 | 初识Redis 2

    一、与Python交互 引入模块from redis import * 这个模块中提供了StrictRedis对象...

  • day40-Python连接Redis

    一、Redis 1.Redis数据库 Redis内存数据库 -> KV数据库 2.Redis持久化数据 Redis...

  • redis

    初识redis redis是什么 开源的、基于键值对的存储服务系统(可以理解为数据库)、多种数据结构、性能高,功能...

  • 1.redis 基本介绍

    1. redis 是 NoSQL 数据库,不是传统的关系型数据库 2. redis: REmote Diction...

  • 十七步搞定Redis

    1【redis安装】: 点我安装 2【redis是什么】: NoSql数据库-高性能Key-Value数据库 3【...

  • redis安装 & 数据类型

    一,缓存数据库介绍 1,缓存数据库用处 2,常用的缓存数据库 3,redis介绍 二,redis安装 命令行模式 ...

  • Redis使用介绍

    目录: 1 Redis初识 1.1 Redis介绍 1.2 Redis功能特性介绍 1.3 Redis...

  • Redis进阶系列四(通用指令)

    Redis进阶系列四(通用指令) 1、基本操作指令 2、扩展操作指令 3、数据库操作指令 切换数据库,redis有...

  • 数据库 | 初识Redis 1

    Redis简介 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-V...

  • redis基本操作

    启动数据库 1.打开redis-server2.再打开redis-cli 启动redis输入KEYS * 查看是否...

网友评论

      本文标题:数据库 | 初识Redis 2

      本文链接:https://www.haomeiwen.com/subject/dztlectx.html