• Redis记录-Redis高级应用


    Redis数据库可以使用安全的方案,使得进行连接的任何客户端在执行命令之前都需要进行身份验证。要保护Redis安全,需要在配置文件中设置密码。

    示例

    下面的示例显示了保护Redis实例的步骤。

    127.0.0.1:6379> CONFIG get requirepass 
    1) "requirepass" 
    2) ""
    
    Shell

    默认情况下,此属性为空,这表示还没有为此实例设置密码。您可以通过执行以下命令更改此属性。

    127.0.0.1:6379> CONFIG set requirepass "yiibai" 
    OK 
    127.0.0.1:6379> CONFIG get requirepass 
    1) "requirepass" 
    2) "yiibai"
    
    Shell

    设置密码后,如果任何客户端运行命令而不进行身份验证,则会返回一个(error) NOAUTH Authentication required.的错误信息。 因此,客户端需要使用AUTH命令来验证。

    语法

    以下是AUTH命令的基本语法。

    127.0.0.1:6379> AUTH password
    
    Shell

    示例

    127.0.0.1:6379> AUTH "yiibai" 
    OK 
    127.0.0.1:6379> SET mykey "Test value" 
    OK 
    127.0.0.1:6379> GET mykey 
    "Test value"

    Redis基准测试是通过同时运行n个命令来检查Redis的性能的实用程序。

    语法

    以下是基准测试命令的基本语法。

    yiibai@ubuntu:~$ redis-benchmark [option] [option value]
    
    Shell

    示例

    以下示例通过调用100000个命令检查Redis。

    yiibai@ubuntu:~$ redis-benchmark -n 100000  
    ====== PING_INLINE ======
      100000 requests completed in 1.56 seconds
      50 parallel clients
      3 bytes payload
      keep alive: 1
    
    97.59% <= 1 milliseconds
    99.78% <= 2 milliseconds
    99.83% <= 3 milliseconds
    99.86% <= 4 milliseconds
    99.91% <= 5 milliseconds
    99.98% <= 6 milliseconds
    99.99% <= 47 milliseconds
    100.00% <= 47 milliseconds
    64226.07 requests per second
    
    ====== PING_BULK ======
      100000 requests completed in 1.57 seconds
      50 parallel clients
      3 bytes payload
      keep alive: 1
    
    98.40% <= 1 milliseconds
    99.68% <= 2 milliseconds
    99.91% <= 3 milliseconds
    99.94% <= 4 milliseconds
    99.95% <= 45 milliseconds
    100.00% <= 45 milliseconds
    63694.27 requests per second
    
    ====== SET ======
      100000 requests completed in 1.49 seconds
      50 parallel clients
      3 bytes payload
      keep alive: 1
    
    97.58% <= 1 milliseconds
    99.92% <= 2 milliseconds
    99.94% <= 3 milliseconds
    100.00% <= 3 milliseconds
    67340.07 requests per second
    
    Shell

    以下是Redis基准测试中可用选项的列表。

    序号选项说明默认值
    1 -h 指定服务器主机名 127.0.0.1
    2 -p 指定服务器端口 6379
    3 -s 指定服务器套接字  
    4 -c 指定并行连接的数量 50
    5 -n 指定请求的总数 10000
    6 -d 指定SET/GET值的数据大小(以字节为单位) 2
    7 -k 1=keep alive, 0=reconnect 1
    8 -r 使用SET/GET/INCR的随机键,SADD的随机值  
    9 -p 管道<numreq>请求 1
    10 -h 指定服务器主机名  
    11 -q 强制让Redis安装。 只显示query/sec  
    12 --csv 以CSV格式输出  
    13 -l 生成循环,永久运行测试  
    14 -t 只运行逗号分隔的测试列表  
    15 -I 空闲模式。 只打开N个空闲连接并等待

    示例

    下面的示例显示了Redis基准实用程序中多个选项的使用。

    redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 100000 -q  
    
    SET: 146198.83 requests per second 
    LPUSH: 145560.41 requests per second

    Redis在配置的监听TCP端口和Unix套接字上等待和接受客户端的连接(如果已启用)。 当接受新的客户端连接时,执行以下操作 -

    • 由于Redis使用复用和非阻塞I/O,因此客户端套接字处于非阻塞状态。
    • 设置TCP_NODELAY选项是为了确保连接不延迟。
    • 创建可读文件事件,以便Redis能够在套接字上读取新数据时收集客户端查询。

    最大客户数

    在Redis配置文件(redis.conf)中,有一个名称为maxclients的属性,它描述了可以连接到Redis的客户端的最大数量。

    以下是命令的基本语法。

    127.0.0.1:6379> config get maxclients
    1) "maxclients"
    2) "3984"
    
    Shell

    默认情况下,此属性设置为10000(取决于操作系统的文件描述符限制的最大数量),但您可以更改此属性。

    示例

    在以下示例中,我们已将客户端的最大数目设置为100000,并启动服务器。

    yiibai@ubuntu:~$ redis-server --maxclients 100000
    
    Shell

    客户端命令

    编号命令描述
    1 CLIENT LIST 返回连接到Redis服务器的客户端列表
    2 CLIENT SETNAME 为当前连接分配/设置新的名称
    3 CLIENT GETNAME 返回由CLIENT SETNAME设置的当前连接的名称
    4 CLIENT PAUSE 这是一个连接控制命令,能够将所有Redis客户端按指定的时间量(以毫秒为单位)挂起
    5 CLIENT KILL 此命令关闭指定的客户端连接。

    Redis是一个TCP服务器,支持请求/响应协议。 在Redis中,请求通过以下步骤完成:

    • 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应。
    • 服务器处理命令并将响应发送回客户端。

    管道的意义

    管道的基本含义是,客户端可以向服务器发送多个请求,而不必等待回复,并最终在一个步骤中读取回复。

    示例

    要检查Redis管道,只需启动Redis实例,并在终端中键入以下命令。

    $(echo -en "PING
     SET tutorial redis
    GET tutorial
    INCR 
    visitor
    INCR visitor
    INCR visitor
    "; sleep 10) | nc localhost 6379  
    +PONG 
    +OK 
    redis 
    :1 
    :2 
    :3
    
    Shell

    在上面的例子中,我们将使用PING命令检查Redis连接。这里设置了一个名称为tutorial的字符串,值为redis。 然后得到键值,并增加 visitor 数量三次。 在结果中,我们可以看到所有命令都提交到Redis一次,Redis在一个步骤中提供所有命令的输出。

    管道的好处

    这种技术的好处是大大提高了协议性能。通过管道从连接到本地主机速度增加五倍,因特网连接的至少快一百倍。

    分区是将数据拆分为多个Redis实例的过程,因此每个实例只包含一部分键。

    分区的优点

    • 它允许更大的数据库,使用更多计算机的内存总和。如果没有分区,则限制为单个计算机可以支持的内存量。
    • 它允许将计算能力扩展到多个核心和多个计算机,并将网络带宽扩展到多个计算机和网络适配器。

    分区的缺点

    • 通常不支持涉及多个键的操作。 例如,如果两个集合存储在映射到不同Redis实例的键中,则不能执行两个集合之间的交集操作。
    • 不能使用涉及多个键的Redis事务。
    • 分区粒度是关键,因此不可能使用单个巨大的键(如非常大的排序集合)来分割数据集。
    • 使用分区时,数据处理更复杂。 例如,必须处理多个RDB/AOF文件,并获得数据的备份,您需要聚合来自多个实例和主机的持久性文件。
    • 添加和删除容量可能很复杂。 例如,Redis Cluster支持大多数透明的数据重新平衡,具有在运行时添加和删除节点的能力。但是,其他系统(如客户端分区和代理)不支持此功能。但可以使用一种叫作Presharding的技术来处理这方面的问题。

    分区类型

    Redis中有两种类型的分区。假设有四个Redis实例:R0R1R2R3以许多代表用户的键,如user:1user:2,…等等。

    范围分区

    范围分区通过将对象的范围映射到特定的Redis实例来实现。假设在上面示例中,从ID 0到ID 10000的用户将进入实例R0,而从ID 10001到ID 20000的用户将进入实例R1,以此类推。

    哈希分区

    在这种类型的分区中,使用散列函数(例如,模函数)将键转换成数字,然后将数据存储在不同的Redis实例中。

  • 相关阅读:
    Bootstrap 网页乱码
    西游记人物
    球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
    利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
    s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由用户控制。
    实现判断字符串的开头和结尾
    值类型和引用类型
    随机生成4位验证码
    实现 从1-36中随机产生6个不重复的中奖号码
    冒泡排序
  • 原文地址:https://www.cnblogs.com/xinfang520/p/7723172.html
Copyright © 2020-2023  润新知