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其他知识的主要内容,如果未能解决你的问题,请参考以下文章

Redis学习笔记之入门基础知识——其他特性

redis 的相关知识点

Redis分布式缓存知识拓展2 -- 处理其他缓存问题

其他技术学习目录

redis知识点杂记

Redis知识总结