Redis核心知识——高级篇

本文内容来自于个人在Runoob 学习Redis教程时记录的笔记,筛选了知识要点和基础重点。所有内容均来自Runoob,文档为手工整理。如果认为涉嫌侵权请联系博主删除。


Redis 数据备份与恢复

备份

Redis save 命令用于创建当前数据的备份

该命令将在redis安装目录中创建dump.rdb文件

恢复

将备份文件 dump.rdb移动到redis安装目录并启动服务即可。

可以使用config命令获取redis目录

后台备份

使用bgsave可在后台进行备份

Redis 安全

可以通过redis的配置文件设置密码参数,可以让redis服务更安全

可以使用以下命令查看是否设置了密码验证

config get requirepass

默认情况下requirepass参数是空的,无需通过密码验证就可以连接到redis服务

可以通过以下命令修改该参数

config set requirepass "password"

密码验证

auth password

Redis 性能测试

Redis性能测试是通过同事执行多个命令实现的

基本命令

redis-benchmark [option][option value]

可选参数

选项 描述 默认值
-h 指定服务器主机名 127.0.0.1
-p 指定服务器端口 6379
-s 指定服务器socket
-c 指定并发连接数 50
-n 指定请求数 10000
-d 以字节的形式指定set/get值的数据大小 2
-k 1=keep alive 0 =reconnect 1
-r set/get/incr使用随机key,sadd使用随机值
-P 通过管道传输请求 1
-q 强制退出redis。仅显示query/sec值
–cs 以CSV格式输出
-l 生成循环,永久执行测试
-t 仅运行以逗号分隔的测试命令列表
-I Idle模式。仅打开N个idle连接并等待

Redis 客户端连接

Redis通过监听一个TCP端口或者Unix socket的方式来接收来自客户端的连接,当一个连接简历后,Redis内部会进行以下操作:
- 首先,客户端socket会被设置为非阻塞模式,因为Redis在网络事件处理上采用的是非阻塞多路复用模型
- 然后为这个socke头设置TCP_NODELAY属性,禁用Nagle算法
- 然后创建一个刻度的文件事件用于监听这个客户端socke的数据发送

最大连接数

redis2.6之后,最大连接数可配置,默认是10000,可以在redis.conf中修改

获取最大连接数

config get maxclients

启动时设置最大连接数

redis-server --maxclients 10000

客户端命令

命令 描述
client list 返回链接到redis服务的客户端列表
client setname 设置当前连接的名称
client getname 获取通过client setname命令设置的服务名称
client pause 挂起客户端连接,指定挂起时间以毫秒计
client kill 关闭客户端连接

Redis 管道技术

Redis是一种基于客户端-服务端模型以及请求/相应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:
- 客户端向服务端发送一个查询请求,并箭筒Socket返回,通常是以阻塞模式,等待服务端响应
- 服务端处理命令,并将结果返回给客户端

管道技术

可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。

实例

$(echo -en "PING\r\n SET runoobkey redis\r\nGET runoobkey\r\nINCR visitor\r\nINCR visitor\r\nINCR visitor\r\n"; sleep 10) | nc localhost 6379

优势

提高了redis服务的性能

Redis 分区

分区是分隔数据到多个Redis实例的处理过程,因此每个实例只保存key的一个子集

优势

  • 通过利用多台计算机内存的和值,允许构造更大的数据库
  • 通过多核和多态计算机,允许扩展计算能力;通过多态计算机和网络适配器,允许扩展网络带宽

不足

  • 设计多个key的操作通常是不被支持的
  • 涉及多个key的redis事务不能使用
  • 数据处理较为复杂
  • 增加或删除容量也比较复杂

类型

范围分区

映射一定范围的对象到特定的Redis实例。
不足是要有一个区间范围到实例的映射表。这个表要被管理,同时还需要各种对象的映射表,通常对Redis来说并非是好的方法。

哈希分区

  • 用一个hash函数将key转换为一个数字。
  • 对这个整数取模,将其转化为0-3之间的数字,就可以将这个整数映射到4个Redis实例中的一个了。

你可能感兴趣的:(Redis核心知识——高级篇)