Redis其他知识
Posted cye9971-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis其他知识相关的知识,希望对你有一定的参考价值。
Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息
Redis客户端可以订阅任意数量的频道
发布订阅(PUB/SUB)命令 |
|
PSUBSCRIBE pattern |
订阅一个或多个符合给定模式的频道 |
PUBSUB subcommand |
查看订阅与发布系统状态 |
PUBLISH channel message |
将消息发送到指定的频道 |
PUNSUBSCRIBE pattern |
退订所有给定模式的频道 |
SUBSCRIBE channel |
订阅给定的一个或多个频道的信息 |
UNSUBSCRIBE channel |
指退订给定的频道 |
Redis事务
Redis事务一次可以执行多个命令,并且带有以下三个保证:
1、批量操作在发送EXEC命令前被放入队列缓存
2、收到EXEC命令后进入事务执行,事务中任意命令执行失败,其余的命令依赖被执行
3、在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中
一个事务从开始到执行会经历:1、开始事务,2、命令入队,3、执行事务。
Redis事务的执行并不是原子性的。
事务可理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
Redis事务 |
|
DISCARD |
取消事务,放弃执行事务块内的所有命令 |
EXEC |
执行所有事务块内的命令 |
MULTI |
标记一个事务块的开始 |
UNWATCH |
取消watch命令对所有可以的监视 |
WATCH key |
监视一个或多个key |
Redis脚本
Redis脚本使用Lua解释器来执行脚本。执行脚本的常用命令为EVAL
Redis脚本 |
|
EVAL script numkeys key |
执行Lua脚本 |
EVALSHA sha1 numkeys key |
执行Lua脚本 |
SCRIPT EXISTS script |
查看指定的脚本是否已经被保存在缓存当中 |
SCRIPT FLUSH |
从脚本缓存中移除所有脚本 |
SCRIPT KILL |
杀死当前正在运行的Lua脚本 |
SCRIPT LOAD script |
将脚本script添加到脚本缓存中,但并不立即执行这个脚本 |
Redis连接命令主要用于连接redis服务
Redis连接命令 |
|
AUTH password |
验证密码是否正确 |
ECHO message |
打印字符串 |
PING |
查看服务是否运行 |
QUIT |
关闭当前连接 |
SELECT index |
切换到指定的数据库 |
Redis服务器
Redis服务器主要用于管理redis服务
Redis服务器命令 |
|
BGREWIRTEAOF |
异步执行一个AOF文件重写操作 |
BGSAVE |
在后台异步保存当前数据库的数据到磁盘 |
CLIENT KILL |
关闭客户端连接 |
CLIENT LIST |
获取连接到服务器的客户端连接列表 |
CLIENT GETNAME |
获取连接的名称 |
CLIENT PAUSE timeout |
在指定时间内终止运行来自客户端的命令 |
CLIENT SETNAME connection-name |
设置当前连接的名称 |
CLUSTER SLOTS |
获取集群节点的映射数据 |
COMMAND |
获取redis命令详情数组 |
COMMAND COUNT |
获取redis命令总数 |
COMMAND GETKEYS |
获取给定命令的所有键 |
TIME |
返回当前服务器的时间 |
CONFIG GET parameter |
获取指定配置参数的值 |
CONFIG REWRITE |
对启动Redis服务器时所指定的redis.conf配置文件进行改写 |
CONFIG SET parameter value |
修改redis配置参数,无需重启 |
CONFIG RESETSTAT |
重置INFO命令中的某些统计数据 |
DBSIZE |
返回当前数据库的key的数量 |
DEBUG OBJECT KEY |
获取key的调试信息 |
DEBUG SEGFAULT |
让Redis服务崩溃 |
FLUSHALL |
删除所有数据库的所有key |
FLUSHDB |
删除当前数据库的所有key |
INFO |
获取redis服务器的各种信息和统计数量 |
LASTSAVE |
返回最近一次redis成功将数据保存到磁盘上的时间 |
MONITOR |
实时打印出Redis服务器接收到的命令,调试用 |
ROLE |
返回主从实例所属的角色 |
SAVE |
同步保存数据到硬盘 |
SHUTDOWN [NOSAVE][SAVE] |
异步保存数据到硬盘,并关闭服务器 |
SLAVEOF host port |
将当前服务器变为指定服务器的从属服务器(slave server) |
SLOWLO subcommand |
管理redis的慢日志 |
Redis数据备份与恢复
Redis SAVE 命令用于创建当前数据库的备份:该命令将在redis安装目录中创建dump.rdb文件
恢复数据:只需将备份文件(dump.rdb)移动到redis安装目录并启动服务即可 ,获取redis目录可以使用CONFIG GET
创建redis备份文件也可以使用命令BGSAVE,在后台运行
Redis安全
redis的配置文件设置密码参数,客户端连接到redis服务就需要验证,让redis服务更安全
查看是否设置了密码验证:CONFIG GET requirepass(默认情况requirepass参数是空的,可以无需通过密码验证就可以连接到redis服务)
设置密码 : CONFIG SET requirepass "redis"
获取密码:CONFIG GET requirepass
设置密码后,客户端连接redis服务器就需要密码验证,否则无法执行命令。
Redis性能测试
redis性能测试是通过同时执行多个命令实现的。
redis性能测试基本命令:redis-benchmark [option] [option value] (该命令是在redis目录下执行,而不是redis客户端的内部命令)
同时执行10000个请求来检测性能:redis-benchmark -n -10000 -q
redis性能测试工具 |
||
-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 |
|
-p |
通过管道传输 |
1 |
-q |
强制退出redis,仅显示query/sec值 |
|
-csv |
以csv格式输出 |
|
-l |
生成循环,永久执行测试 |
Redis客户端连接
Redis通过监听一个TCP端口或者Unix socket的方式来接收来自客户端的连接
Redis客户端最大连接数maxclients的默认值是10000,也可在redis.conf进行修改 config get maxclients
Redis客户端命令 |
|
CLIENT LIST |
返回连接到redis服务的客户端列表 |
CLIENT SETNAME |
设置当前连接的名称 |
CLIENT GETNAME |
获取通过CLIENT SETNAME命令设置的服务名称 |
CLIENT PAUSE |
挂起客户端连接,指定挂起的时间以毫秒计 |
CLIENT KILL |
关闭客户端连接 |
Redis管道技术
Redis是一种基于客户端--服务端模型以及请求/响应协议的TCP服务
步骤:1、客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。
2、服务端处理命令,并将结果返回给客户端
Redis管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。
管道技术是最显著的优势是提高了redis服务的性能。
Redis分区:分割数据到多个Redis实例的处理过程,因此每个实例只保存key的一个子集
分区的优势:利用计算机内存的和值,允许我们构造更大的数据库。多核和多台计算机,允许我们扩展计算能力,通过多台计算机和网络适配器,允许扩展网络带宽。
分区类型:范围分区:映射一定范围的对象到特定的redis实例
哈希分区:对任何key都适用
以上是关于Redis其他知识的主要内容,如果未能解决你的问题,请参考以下文章