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。
打赏
订阅评论
提醒
guest

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

15 评论
内联反馈
查看所有评论
lou
lou
4 年 前

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

zoufuxing
zoufuxing
5 年 前

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
5 年 前
回复给  xiebruce

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

zoufuxing
zoufuxing
5 年 前
回复给  xiebruce

好的

Jiwenzhen
Jiwenzhen
5 年 前

你好,我在服务器上放置了源码,也在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
5 年 前
回复给  xiebruce

哦~没有这个,谢谢。

Jiwenzhen
Jiwenzhen
5 年 前
回复给  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
5 年 前
回复给  xiebruce

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

15
0
希望看到您的想法,请您发表评论x

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

Redis Web管理工具-RedisWebManager