Redis Web管理工具-RedisWebManager
Table of Contents
RedisWebManager
界面预览
查看gif图:https://imgur.com/kiYTz0V
首页:
弹窗方式查看key值(在RedisWebManager/config/params.php配置文件中设置valDisplayType为popup即可):
在行内查看key值(在RedisWebManager/config/params.php配置文件中设置valDisplayType为inline即可):
在新页面查看key值(当内容太长时,可能弹窗/行内显示都不是很方便清晰,所以可以点击『View』按钮跳转到新页面查看,看起来会更清晰更方便一点):
查看服务器信息:
Web版客户端,不需要你每次都用终端登录上去(登录的时候可能还得找密码是多少):
从上面几张图的内容可以看到,RedisWebManager是直接显示查出的值的原始内容(如数组或对象),而不是显示json化后的json字符串,或者序列化后的字符串,这是本工具最大的优势,也是我写本工具的最重要的原因,特别项目测试时,有时候需要查看缓存数据,这个功能会非常方便(但反序列化目前仅针对php有效,未测试过其他语言的序列化与反序列化)!
功能
- 查看redis Key列表
- 预览某个key的值(弹窗/行内/新页面方式)
- 以预览数组的方式预览json,以预览对象的方式预览序列化后的对象(这是我写这个工具的最重要的原因)
- 使用key前缀后缀搜索
- 删除单个key & 批量删除key
- 选择显示某个db的数据
- 清空当前db或者清空所有db
- 查看Redis服务器相关信息
- 在web上直接使用client命令
安装
git clone https://github.com/xiebruce/RedisWebManager.git
Redis 配置
配置文件在(在本地自动加载redis_local.php文件,在线上自动加载 redis.php文件):
RedisWebManager/config/redis.php
RedisWebManager/config/redis_local.php
配置清空db的密码 & 配置快速查询的Key
RedisWebManager/config/params.php
RedisWebManager/config/params_local.php
其中scanPageSize
存在的原因是:假设你设置了pageSize=10也就是一页获取10条,并且搜索关键字(keyword)不为空,那么redis并不能保证返回10条,原因是redis是先获取10条,然后再从这10条中匹配你的keyword,匹配上的,就返回,没匹配上的就不返回,所以,除非这么巧这10条都能匹配上你的keyword,否则返回数量肯定小于10条,为了解决这个问题(为了让返回的数量不小于你设置的pageSize),我采用循环获取的方式,只要第一次获取的不够10条,那我就再次获取,直到等于或者超过10条才停止循环并返回。所以,这就有了scanPageSize和pageSize,pageSize是指一共要返回多少条(即每页条数),而scanPageSize是指每次从redis获取多少条,假设你设置scanPageSize=1,意思就是每次从redis获取一条,那么要让返回的key数量大于等于10,则至少要循环10次,这还是最好的情况(每次获取的key都跟你的keyword匹配上了),如果是差的情况,有可能100次还没匹配上你的keyword,或者你的keyword跟整个redis里的每个key都不匹配,那这个循环最多会循环100次,100次还匹配不够10条,我就会停止循环并返回匹配到的或者一个没匹配到就返回空。所以,scanPageSize越小,循环次数越多,你要等的时间越长,消耗的服务器资源越多,所以你要看着来设置,如果不设置,那会默认跟pageSize相等。
登录账号密码配置
RedisWebManager/models/User.php
如图,username为账号,password为密码,只需要修改username和password对应的值即可,如果你想要多个账号,那就复制多份,注意把key和id值改一下,这个就相当于数据库查出来的一条数据,key和id就是数据库的自增id,因为我们不配置数据库,所以直接写死在这里。
设置权限
sudo chmod -R 777 /path/to/RedisWebManager/runtime
sudo chmod -R 777 /path/to/RedisWebManager/web/assets
Nginx 配置
建议添加nginx密码认证,这样就算别人知道地址也无法进入:Nginx添加密码认证
server {
charset utf-8;
client_max_body_size 128M;
listen 80; ## listen for ipv4
#listen [::]:80 default_server ipv6only=on; ## listen for ipv6
server_name redis.mydomain.com;
root /data/wwwroot/RedisWebManager/web;
index index.php;
access_log /path/to/RedisWebManager/log/access.log;
error_log /path/to/RedisWebManager/log/error.log;
location / {
# Redirect everything that isn't a real file to index.php
try_files $uri $uri/ /index.php$is_args$args;
}
# uncomment to avoid processing of calls to non-existing static files by Yii
#location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
# try_files $uri =404;
#}
#error_page 404 /404.html;
# deny accessing php files for the /assets directory
location ~ ^/assets/.*\.php$ {
deny all;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/var/run/php5-fpm.sock;
try_files $uri =404;
}
location ~* /\. {
deny all;
}
}
更新日志
2019-02-22 v0.3.1
- 修改直接点击复选框无法选中key的问题
- 修改redis端口不使用默认端口6379无法使用的问题
- 更新README.md
2018-12-27 v0.3
- 添加概览服务器信息
- 添加Web版redis-cli
- 更换redis客户端为Predis(之前是用phpRedis)
- 使用ajax无刷新搜索(之前是刷新页面)
- 添加加载更多按钮(去掉之前的分页)
2018-12-19 v0.2
- 添加行内预览值方式
- 添加显示key的ttl(生存时间)
- 弹窗修改为boostrap的模态框,而不是之前简单的js alert。
- 修改在新页面查看值的页面布局
- 彩色显示数组和对象。
- 修复很多bug。
2018-12-14 v0.1
- 这是一个redis web管理工具,你可以用它搜索、删除、批量删除redis key,预览key的值,清空当前db,当空所有db。
想问一下, 怎么样配置可以同时连接多个redis呢? 只能连接一个?
确实只能连一个,因为我没有写连多个的功能(当时好像是有什么局限写不了),其实你连一台机即可,如果你是集群,当一台机的数据改变,它会自动同步到集群的!
in /data/rediswebmanager/controllers/SiteController.php at line 138
129130131132133134135136137138139140141142143144145146147 $isGuest = Yii::$app->user->isGuest;
if($isGuest){
return $this->redirect(‘/site/login’);
}
你这个报错给的完整吗?如果没给完整,请把完整的粘出来,另外你的php版本是哪个版本?php7以下还是php7以上?如果是php7以下是不支持的,我代码里有些php7的用法!
噢,我的是php5.6的,那我试试php7的,非常感谢
好的,你先试试,有什么问题可以随时在这里提问,另外如果觉得好用的话麻烦github给个star呀:RedisWebManager Gibhub
好的
你好,我在服务器上放置了源码,也在nginx里面配置了。然后访问http://fip-flow.cw.cn/index.php。返回了502 Bad Gateway。查看日志文件夹中的错误日志显示:2019/03/28 14:26:14 [error] 17149#0: *7640586 connect() failed (111: Connection refused) while connecting to upstream, client: 10.0.4.82, server: fip-flow.cw.cn, request: “GET /index.php HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9000”, host: “fip-flow.cw.cn”。
你服务器有运行php-fpm吗?是否运行在9000端口?
哦~没有这个,谢谢。
不客气,你需要查一下用nginx布署一个php网站的方法,感觉你对这个不太懂。
你好,我现在已经可以访问网站了。请问集群模式的redis怎么在redis.php里面配置呢?我尝试了 ‘servers’ => [
‘scheme’ => ‘tcp’,
‘host’ => ‘192.168.30.22’,
‘port’ => 7000,
];[
‘scheme’ => ‘tcp’,
‘host’ => ‘192.168.30.23’,
‘port’ => 7001,
];[
‘scheme’ => ‘tcp’,
‘host’ => ‘192.168.30.24’,
‘port’ => 7002,
];[
‘scheme’ => ‘tcp’,
‘host’ => ‘192.168.30.25’,
‘port’ => 7003,
];[
‘scheme’ => ‘tcp’,
‘host’ => ‘192.168.30.26’,
‘port’ => 7004,
];[
‘scheme’ => ‘tcp’,
‘host’ => ‘192.168.30.27’,
‘port’ => 7005,
]这样的配置,结果行不通。
我这个不支持集群模式,尝试过写集群模式,但集群模式很多功能无法用,所以没写,其实连一个也是一样的,删除一台机中的某个key,Redis本身就会同步删除集群中其它机器中的key,因为是集群嘛。
好的,明白了。太感谢了。
不客气