Redis Web管理工具-RedisWebManager

Redis Web管理工具-RedisWebManager

RedisWebManager

界面预览

查看gif图:https://imgur.com/kiYTz0V

首页:
Xnip2019-02-22_17-01-28.png

弹窗方式查看key值(在RedisWebManager/config/params.php配置文件中设置valDisplayType为popup即可):

Xnip2018-12-19_00-47-26.jpg

在行内查看key值(在RedisWebManager/config/params.php配置文件中设置valDisplayType为inline即可):

Xnip2018-12-19_01-28-54.jpg

在新页面查看key值(当内容太长时,可能弹窗/行内显示都不是很方便清晰,所以可以点击『View』按钮跳转到新页面查看,看起来会更清晰更方便一点):
Xnip2019-02-22_17-03-26.png

查看服务器信息:
Xnip2019-02-22_16-56-56.png

Web版客户端,不需要你每次都用终端登录上去(登录的时候可能还得找密码是多少):
Xnip2019-02-22_16-57-24.png

从上面几张图的内容可以看到,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,因为我们不配置数据库,所以直接写死在这里。

Xnip2018-12-19_01-20-59.jpg

设置权限

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。
打赏
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

15 Comments
Inline Feedbacks
View all comments
lou
lou
3 months ago

想问一下, 怎么样配置可以同时连接多个redis呢? 只能连接一个?

zoufuxing
zoufuxing
1 year ago

in /data/rediswebmanager/controllers/SiteController.php at line 138
129130131132133134135136137138139140141142143144145146147 isGuest = Yii::app->user->isGuest;
if(isGuest){ return this->redirect(‘/site/login’);
}

    /** @var Client redisConfig */     redisConfig = Yii::app->get('redis');     host = redisConfig->servers['host'];     port = redisConfig->servers['port'];     password = redisConfig->servers['password'] ?? '';      db = Yii::app->request->get('db', 0);     redis = new RedisRawCmd([
        'hostname' => host,         'port' => port,
    ]);

    if(Yii::app->request->isAjax){         if(password) {
           你好,出现的报错,不明白是什么意思?
zoufuxing
zoufuxing
1 year ago
Reply to  xiebruce

噢,我的是php5.6的,那我试试php7的,非常感谢

zoufuxing
zoufuxing
1 year ago
Reply to  xiebruce

好的

Jiwenzhen
Jiwenzhen
1 year ago

你好,我在服务器上放置了源码,也在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”。

Jiwenzhen
Jiwenzhen
1 year ago
Reply to  xiebruce

哦~没有这个,谢谢。

Jiwenzhen
Jiwenzhen
1 year ago
Reply to  xiebruce

你好,我现在已经可以访问网站了。请问集群模式的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,
]这样的配置,结果行不通。

Jiwenzhen
Jiwenzhen
1 year ago
Reply to  xiebruce

好的,明白了。太感谢了。

15
0
Would love your thoughts, please comment.x
()
x

扫码在手机查看
iPhone请用自带相机扫
安卓用UC/QQ浏览器扫

Redis Web管理工具-RedisWebManager