Redis24:Jedis、redis安全、Lua脚本、其他命令


Jedis、redis安全、Lua脚本、其他命令

Jedis的使用

基本用法:首先new一个jedispool,然后getResource取到jedis即可,最后jedis要关闭连接。

为了防止发生异常导致jedis没有关闭引发的连接池内连接数不够,要把close语句放在finally块里或者用trywithresource都可以。

有时出现网络抖动会导致redis自动断开连接,此时可以将执行代码异常catch住然后继续执行。

redis安全和spiped

指令安全:有些指令会造成重大的影响,如keys、flushall、flushdb,可以在配置文件中做一些配置来替换这些指令的使用方式或者干脆禁止使用。

端口安全:不要用默认端口6379,使用一个新的

密码安全:可以给redis设置密码

Lua脚本安全:禁止用户生成Lua脚本

启动身份:禁止redis以root的身份启动,而是普通用户的身份

SSL代理:redis客户端和服务端直接的交互有被窃取的危险,应该使用ssh,或者redis官方推荐工具spiped,它对ssh通道进行二次加密,信息传输更安全。

spiped是一款SSL代理软件,它会在客户端和服务端各自启动一个进程,客户端进程负责接收来自客户端的信息并加密后传给服务端spiped进程,解密后再传给服务端,相互之间需要使用共享秘钥来加密。客户端可以使用一个spiped来向多个服务端传输数据,但服务端必须各自配置一个spiped。

Lua脚本

用户可以向服务器发送Lua脚本来执行自定义动作,redis服务会单线程执行脚本。如果脚本很长经常传输,效率很低,还可以使用特殊指令让服务端缓存该脚本并得到脚本ID,然后客户端每次发送ID就可以执行该脚本。如果Lua脚本执行错误,之前执行过的效果也不会回滚。

如果脚本进入死循环,redis提供了一个命令:script kill强制杀死该脚本,前提是该脚本没有对redis内存进行修改,否则执行会返回错误。之所以可以杀死,是因为在执行脚本的时候会定期执行某个钩子函数,所以redis才可能执行script kill指令

info指令

info指令可以获取所有的信息,infor + 模块名可以获取对应模块的信息。

infor stats 可以查询redis每秒执行多少指令

redis-cli monitor 可以查询那些key访问最频繁

info clients 可以查连接了多少redis客户端

client list可以查都是什么链接了redis客户端

info memory可以查看redis占用了多少内存,确定是否需要集群化

info replication 可以查看复制积压缓冲区大小,它严重影响主从复制的效率,如果修改指令频繁应该将缓冲区设置大一点。

还可以查看主从半同步复制失败的次数。

其他命令

它可以定向将结果输出到文件。

选择命令发送的地址和库号。

批量执行命令

重复执行指令多次

将多行字符串set进去

执行脚本文件

监控服务器状态

扫描大key: bigkeys

采样服务器指令,判断哪个业务性能消耗最大

诊断服务器时延,可以诊断出是不是有卡顿(可以和ping的速度对比,如果差很多就说明redis执行时有卡顿)

远程备份

模拟从库,观察主从复制