redis其他命令详情

目标

redis管理

redis 数据备份与恢复

备份

  • SAVE命令备份当前数据库
  • 在 redis 安装目录中创建dump.rdb文件
  • 也可以使用命令 BGSAVE,该命令在后台执行
redis 127.0.0.1:6379> SAVE 
#redis 127.0.0.1:6379> BGSAVE

恢复

  • 将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可
  • redis 安装目录通过CONFIG命令获取
redis 127.0.0.1:6379> CONFIG GET dir
redis 安全
  • 设置密码:redis 的配置文件
#为空表示无需密码验证
redis 127.0.0.1:6379> CONFIG get requirepass
#设置密码
redis 127.0.0.1:6379> CONFIG set requirepass "pwd"
redis 127.0.0.1:6379> CONFIG get requirepass
  • 客户端密码验证
redis 127.0.0.1:6379> AUTH "pwd"
redis 性能测试
  • 性能测试命令(非客户端命令):redis-benchmark
  • Redis 性能测试是通过同时执行多个命令实现的
#redis性能测试
cd $HOME/redis-6.2.1/src
./redis-benchmark -n 10000 -q
#redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 10000 -q

redis-benchmark可选参数

参数参数说明
-h指定服务器主机名,默认127.0.0.1
-p指定服务器端口,默认6379
-s指定服务器socket
-c指定并发连接数,默认50
-n指定请求数,默认10000
-d以字节的形式指定 ET/GET值的数据大小,默认2
-k1=keep alive 0=reconnect,默认1
-rSET/GET/INCR使用随机key,SADD 使用随机值
-P通过管道传输请求,默认1
-q强制退出redis,仅显示 query/sec 值(让结果只显示每秒执行的请求数)
–csv以CSV格式输出
-l生成循环,永久执行测试
-t仅运行以逗号分隔的测试命令列表
-IIdle模式。仅打开N个idle连接并等待
redis 客户端连接
  • Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接
  • 一个连接建立后,Redis内部执行操作如下
    • 首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型
    • 然后为这个 socket 设置 TCP_NODELAY 属性,禁用 Nagle 算法
    • 然后创建一个可读的文件事件用于监听这个客户端 socket 的数据发送
  • 最大连接数:maxclients默认10000,也可在 redis.conf 中修改,或者服务启动时设置最大连接数
redis-server --maxclients 100000
redis 127.0.0.1:6379> config get maxclients

客户端常用命令

命令命令说明
CLIENT LIST返回连接到 redis 服务的客户端列表
CLIENT SETNAME设置当前连接的名称
CLIENT GETNAME获取通过 CLIENT SETNAME 命令设置的服务名称
CLIENT PAUSE挂起客户端连接,指定挂起的时间以毫秒计
CLIENT KILL关闭客户端连接
redis 管道
  • Redis是一种C/S模型以及Req/Rsp协议的TCP服务
  • 一个请求会遵循以下步骤:
    • 客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应
    • 服务端处理命令,并将结果返回给客户端
    • 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应
    • 管道技术显著提高redis服务性能
#查看redis管道:这些命令一次性向redis服务提交,并最终一次性读取所有服务端响应
(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实例的处理过程,每个实例只保存key的一个子集
  • 利用多台计算机内存允许我们构造更大的数据库
  • 通过多核和多台计算机扩展计算能力
  • 通过多台计算机和网络适配器扩展网络带宽

劣势

  • 分区涉及多个key的操作通常不被支持,如:两个set映射到不同的redis实例上时,那么不能对这两个set执行交集操作
  • 分区涉及多个key的redis事务不能使用
  • 分区时数据处理较为复杂,比如需要处理多个rdb/aof文件,且从多个实例和主机备份持久化文件
  • 增加或删除容量也比较复杂,redis集群大多数支持在运行时增加、删除节点的透明数据平衡的能力

分区类型
eg:有4个Redis实例 R0,R1,R2,R3

  • 范围分区
    • 最简单的分区方式,即映射一定范围的对象到特定的Redis实例,如ID从0到10000的用户会保存到实例R0,ID从10001到 20000的用户会保存到R1等等;方式可行,实际可用,不足是要有一个区间范围到实例的映射表,这个表需要被管理,同时还需要各种对象的映射表;
  • 哈希分区
    • 对任何key都适用
    • 需要用一个hash函数将key转换为一个数字,比如使用crc32 hash函数,获取一个整数,对这个整数取模转化为0-3之间的数字,将这个整数映射到4个Redis实例中的一个
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值