赞
踩
欢迎关注「WeiyiGeek」公众号以及「极客全栈修炼」小程序
设为「星标⭐」每天带你玩转网络安全运维、应用开发、物联网IOT学习!
本章目录:
0x00 快速介绍
0x01 安装部署
二进制方式
容器化方式
0x02 实践应用
1.配置连接的Redis数据库
2.查看Redis数据库实时统计信息
3.操作Redis数据库中的数据
4.操作Redis数据库中的流Streams数据
5.性能内存、慢查询分析
6.可视化配置redis数据库
0x03 入坑出坑
问题1.运行 RedisInsight-v2-linux-x86_64 时出现不存在libatk-1.0.so.0/libatk-bridge-2.0.so.0/libcups.so.2/libgtk-3.so.0
等错误
问题2.运行 RedisInsight-v2-linux-x86_64 时出现 root without --no-sandbox is not supported
错误提示:
0x0n 参考来源
原文地址: https://blog.weiyigeek.top/2022/9-20-686.html
什么是RedisInsight?
RedisInsight 是一个直观而高效的 Redis GUI (
可视化工具
),它提供了设计、开发和优化 Redis 应用程序的功能,查询、分析您的 Redis 数据并与之交互,简化您的 Redis 应用程序开发 。(必备)
RedisInsight 现在采用了基于流行的Electron
框架的全新技术堆栈, 它可以跨平台运行,支持 Linux、Windows 和 MacOS。
为啥用RedisInsight?
描述:RedisInsight 提供直观的 Redis 管理 GUI,有助于优化您在应用程序中对 Redis 的使用,相比于其他可视化工具,其实现的功能更强大、执行效率更改,通用性更好等特定,
下面列举出 RedisInsight 的亮点功能:
唯一支持 Redis Cluster 的 GUI 工具;
可以基于 Browser 的界面来进行搜索键、查看和编辑数据;
支持基于 SSL/TLS 的连接,同时还可以在界面上进行内存分析;
支持连接 Redis Open Source、 Redis Stack 、 Redis Enterprise Software 、 Redis Enterprise Cloud 和 Amazon ElastiCache等系统;
支持自定义扩展插件实现更多功能。
RedisInsight 支持的功能:
直观且高效的 GUI: 允许您与数据库交互、监控和管理您的数据。
CRUD支持更广泛:允许对列表、哈希、字符串、集、排序集以及流Stream 数据库结构支持 CRUD 。
多行查询编辑器:进行构建查询、探索结果、优化和快速迭代,支持 JSON 、 Search 、 Graph 、 Streams 、 Time Series 和 RedisGears 。
内存分析:通过密钥模式、过期密钥和高级搜索来分析内存使用情况,以识别内存问题, 利用建议来减少内存使用量。
命令调试: 识别顶部键、键模式和命令,按集群所有节点的客户端 IP 地址、密钥或命令进行过滤,有效地调试 Lua 脚本,并利用 Redis CLI 提供语法突出显示和自动完成功能,并采用集成帮助来提供直观的即时帮助。
指标监控:通过界面深入了解实时性能指标、检查慢速命令并管理 Redis 配置。
发布/订阅:支持 Redis 发布/订阅,支持订阅频道并将消息发布到频道
数据浏览:浏览、筛选、可视化您的键值 Redis 数据结构,并查看不同格式(包括 JSON、十六进制、ASCII 等)的键值
平台兼容:适用于苹果操作系统(包括 M1)、Windows和 Linux
补充:官方推荐的其他Redis数据库相关工具查看 [ https://redis.io/docs/tools/ ],当然你也可以可以选择客户端桌面管理工具(例如,AnotherRedisDesktopManage [ https://github.com/qishibo/AnotherRedisDesktopManager ] )
描述:redis-insight 与现在大多数软件一样,有多种安装方式其中用得比较多的就是二进制、源码编译以及容器化部署的方式。
描述:我们需要在Redis官方进行下载 redis-insight 二进制包然后进行安装部署,有可能国内下载比较缓慢,此时我已将其打包下来,方便大家下载。
Redis GUI redis-insight 工具 下载:
https://share.weiyigeek.top/d/36158960-51461225-1d5ee1?p=2088 (访问密码: 2088)
https://url60.ctfile.com/d/36158960-51461225-1d5ee1?p=2088(访问密码: 2088)
环境依赖
Requirement | Ubuntu | MacOS | Windows |
---|---|---|---|
Operating System | Ubuntu 18.04 LTS or later | MacOS 10.13 or later | Windows 10 |
Memory (RAM) | 8GB | 8GB | 8GB |
Processor | 64 bit | 64 bit | 32 bit or 64 bit |
安装环境
- $ lsb_release -a
- No LSB modules are available.
- Distributor ID: Ubuntu
- Description: Ubuntu 20.04.3 LTS
- Release: 20.04
- Codename: focal
-
- $ lscpu | grep "CPU(s)"
- CPU(s): 4
- On-line CPU(s) list: 0-3
-
- $ lsmem | grep "Total online memory"
- Total online memory: 8G
安装流程
步骤 01.官网下载 RedisInsight 上传到 /usr/local/bin 目录 并打开 shell 终端赋予其下载权限。
- cd /usr/local/bin
- mv redisinsight-linux64-1.13.0 redisinsight-linux64
- chmod +x redisinsight-linux64
步骤 02.设置Redisinsight启动所需的环境变量:
- mkdir ~/.redisinsight
- echo "export RIHOST=0.0.0.0" > ~/.bash_profile
- echo "export RIPORT=8081" >> ~/.bash_profile
- echo "export RIHOMEDIR=~/.redisinsight" >> ~/.bash_profile
- echo "export RILOGDIR=~/.redisinsight" >> ~/.bash_profile
- source ~/.bash_profile
温馨提示:如果使用了REDISINSIGHT_HOST, REDISINSIGHT_PORT, REDISINSIGHT_HOME_DIR and LOG_DIR
等环境变量便会出现如下提示。
- WARNING 2022-09-20 05:56:33,461 redisinsight_startup REDISINSIGHT_HOST, REDISINSIGHT_PORT, REDISINSIGHT_HOME_DIR and LOG_DIR environment variables will be deprecated in the version v1.9.
- Please use RIHOST, RIPORT, RIHOMEDIR and RILOGDIR environment variables for setting host, port, db directory and log directory respectively.
步骤 03.启动Redisinsight并后台运行它
- # 后台运行
- nohup /usr/local/bin/redisinsight-linux64 > ~/.redisinsight/console.log 2>&1 &
步骤 04.查看 redisinsight 进程运行情况
- root@weiyigeek:~# ps aux | grep "redisinsight"
- root 6592 8.0 0.0 3220 2212 pts/0 S 13:59 0:00 /usr/local/bin/redisinsight-linux64
- root 6593 8.9 0.9 602080 74616 pts/0 Sl 13:59 0:00 /usr/local/bin/redisinsight-linux64
- root 6602 0.0 0.0 6432 724 pts/0 S+ 13:59 0:00 grep redisinsight
- root@weiyigeek:~# netstat -ano | grep ":8081"
- tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN off (0.00/0/0)
步骤 05.访问部署的redisinsight站点 http://10.20.172.201:8081/ 进行下一步配置,继续配置你的 Redis 数据库,此处我已经搭建好了一个redis数据库如需搭建请参考此篇文章【 https://blog.weiyigeek.top/2022/4-24-653.html 】,点击连接到 Redis 数据库进入到下一步。
步骤 06.进行配置Redis数据库信息,此处我是单节点进行演示,输入主机、端口、名称、以及redis密码。
至此安装配置完成,使用将在后续实践!
描述:当下大多数企业的应用都是在容器环境中运行,所以redis官方也提供了相应容器镜像以及在kubernetes中部署的资源清单,下述将演示在 Kubernetes 上安装 RedisInsight,安装高可用的K8S可以参照此篇文章 【 https://blog.weiyigeek.top/2022/6-7-664.html 】或者 【 还不会部署高可用的kubernetes集群?企业DevOps实践之使用kubeadm方式安装高可用k8s集群v1.23.7 】
镜像主页:https://hub.docker.com/r/redislabs/redisinsight/tags
镜像名称:docker pull redislabs/redisinsight:1.13.0
部署方式
步骤 01.在 k8s 集群中创建一个 RedisInsight 部署和服务 YAML 文件资源清单,注意此处我使用了动态存储卷,如果有需要的部署nfs动态存储卷可参考此篇文章( https://blog.weiyigeek.top/2022/6-7-664.html )
- tee redisinsight-1.13.0.yaml <<'EOF'
- # RedisInsight service with name 'redisinsight-service'
- apiVersion: v1
- kind: Service
- metadata:
- name: redisinsight-service
- namespace: dev
- spec:
- type: LoadBalancer
- ports:
- - port: 8001
- targetPort: 8001
- selector:
- app: redisinsight
- ---
- # RedisInsight persistant storage
- apiVersion: v1
- kind: PersistentVolumeClaim
- metadata:
- name: redisinsight-pv-claim
- namespace: dev
- labels:
- app: redisinsight
- spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 2Gi
- storageClassName: managed-nfs-storage
- ---
- # RedisInsight deployment with name 'redisinsight'
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- name: redisinsight # deployment name
- namespace: dev
- labels:
- app: redisinsight # deployment label
- spec:
- replicas: 1 # a single replica pod
- strategy:
- type: Recreate
- selector:
- matchLabels:
- app: redisinsight # which pods is the deployment managing, as defined by the pod template
- template: # pod template
- metadata:
- labels:
- app: redisinsight # label for pod/s
- spec:
- volumes:
- - name: db
- persistentVolumeClaim:
- claimName: redisinsight-pv-claim
- initContainers:
- - name: init
- image: busybox
- command:
- - /bin/sh
- - '-c'
- - |
- chown -R 1001 /db
- resources: {}
- volumeMounts:
- - name: db
- mountPath: /db
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- containers:
- - name: redisinsight # Container name (DNS_LABEL, unique)
- image: redislabs/redisinsight:1.13.0 # Hub Image
- imagePullPolicy: IfNotPresent # Pull Policy
- env:
- - name: RIHOST
- value: "0.0.0.0"
- - name: RIPORT
- value: "8001"
- volumeMounts:
- - name: db
- mountPath: /db
- ports:
- - containerPort: 8001 # exposed container port and protocol
- protocol: TCP
- livenessProbe:
- httpGet:
- path : /healthcheck/ # exposed RI endpoint for healthcheck
- port: 8001 # exposed container port
- initialDelaySeconds: 5 # number of seconds to wait after the container starts to perform liveness probe
- periodSeconds: 5 # period in seconds after which liveness probe is performed
- failureThreshold: 1 # number of liveness probe failures after which container restarts
- EOF
步骤02.在k8s集群中部署 redisinsight v1.13.0 应用、服务以及持久化卷,查看其部署状态。
- $ kubectl create namespace dev
- namespace/dev created
-
- $ kubectl apply -f redisinsight-1.13.0.yaml
- service/redisinsight-service created
- persistentvolumeclaim/redisinsight-pv-claim created
- deployment.apps/redisinsight created
-
- $ kubectl get pod,svc -n dev -o wide
- NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
- pod/redisinsight-55d44b5bb-xzggg 1/1 Running 0 3m22s 10.66.182.217 weiyigeek-226 <none> <none>
-
- NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
- service/redisinsight-service LoadBalancer 10.108.198.8 <pending> 80:31793/TCP 3m22s app=redisinsight
-
- $ curl -I 10.66.182.217:8001
- HTTP/1.1 200 OK
- Cache-Control: max-age=0, no-cache, no-store, must-revalidate, private
-
- # 端口转发
- $ kubectl -n dev port-forward deployment/redisinsight --address 0.0.0.0 30081:8001
- Forwarding from 0.0.0.0:30081 -> 8001
- Handling connection for 30081
- Handling connection for 30081
步骤 03.成功应用并完成部署和服务,我们可通过浏览器访问 192.168.1.107:31793 便可看到如下图所示界面。
至此,在k8s集群中部署完毕
描述:在使用任何工具处理数据库之前,必须先添加数据库(Add Database),以便 RedisInsight 可以连接到该数据库,添加独立的 Redis 数据库 这是只有一台 Redis 服务器的 Redis 数据库最简单的设置,当然也支持独立 Redis 集群 Redis Sentinel 或者 具有TLS认证的Redis数据库。
注意:目前 RedisInsight 支持 Redis 版本 4 及更高版本。
描述:点击配置好的Redis数据目标,即可看到如下overview页面
描述: 可以通过使用 Browser(图形) 或者 cli(命令行)进行Redis数据库的CURD,如下图所示
描述: 可以通过使用 Streams 选项进行 Redis 流操作。
描述:RedisInsight 提供了强大的分析功能,支持内存使用分析、分析器(在Redis中执行的命令过程摘要分析
)以及慢日志查询。
描述:在Database选项卡中我们可以直接配置Redis数据库,包括其网络配置、通用配置以及快照、配置等等。
当然对应devops来说使用最多的还是CURD以及性能分析以及优化,此工具还是非常方便的,如需解更多其它功能需的朋友,可参考 redisinsight 用户使用文档:https://docs.redis.com/latest/ri/using-redisinsight/
libatk-1.0.so.0/libatk-bridge-2.0.so.0/libcups.so.2/libgtk-3.so.0
等错误错误信息
- root@weiyigeek:/usr/local/bin# wget https://download.redisinsight.redis.com/latest/RedisInsight-v2-linux-x86_64.AppImage
- root@weiyigeek:/usr/local/bin# mv RedisInsight-v2-linux-x86_64.AppImage RedisInsight
- root@weiyigeek:/usr/local/bin# chmod +x RedisInsight
- root@weiyigeek:/usr/local/bin# ./RedisInsight
- /tmp/.mount_RedisIuCY68M/redisinsight: error while loading shared libraries: libatk-1.0.so.0: cannot open shared object file: No such file or directory
- /tmp/.mount_RedisIbwUuBs/redisinsight: error while loading shared libraries: libatk-bridge-2.0.so.0: cannot open shared object file: No such file or directory
- /tmp/.mount_RedisIb3qNiD/redisinsight: error while loading shared libraries: libcups.so.2: cannot open shared object file: No such file or directory
- /tmp/.mount_RedisI9GZsHC/redisinsight: error while loading shared libraries: libgtk-3.so.0: cannot open shared object file: No such file or directory
解决办法:由于我的测试系统是Ubuntu的则使用apt命令安装错误提示中的依赖包。
- apt install libatk1.0-dev
- apt install libatk-bridge2.0-dev
- apt install libcups2-dev
- apt install libgtk-3-dev
root without --no-sandbox is not supported
错误提示:错误信息:[0920/133850.852943:FATAL:electron_main_delegate.cc(292)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.
解决办法:在低权限用户中执行./RedisInsight
启动RedisInsight服务即可。
官网地址:https://redis.com/redis-enterprise/redis-insight/
项目源码:https://github.com/RedisInsight/RedisInsight
项目文档:https://docs.redis.com/latest/ri
下载地址:https://redis.com/redis-enterprise/redis-insight/#insight-form
本文至此完毕,更多技术文章,尽情期待下一章节!
原文地址: https://blog.weiyigeek.top/2022/9-20-686.html
温馨提示:唯一极客技术博客文章浏览【极客全栈修炼】小程序上线了,涉及网络安全、系统运维、应用开发、物联网实战、全栈文章,希望和大家一起学习进步,欢迎浏览交流!
往期发布文章
【企业运维实践】丢弃手中的docker build ,使用Kaniko直接在K8S集群或Containerd环境构建推送容器镜像
【工具配置】放弃公共问卷调查,安装使用自建的Nextcloud云盘提供的Forms插件创建自托管互联网问卷调查实现每日健康上报
网安等保-主机安全测评之Linux服务器Ubuntu-22.04-LTS操作系统安全加固制作基线系统脚本分享与实践
网安等保-主机安全之Ubuntu22.04系统优化与安全加固
运维实践-Linux服务器Ubuntu22.04系统安装部署
工具配置-如何在NextCloud私有云盘安装的olnyOffice插件中添加中文字体支持实践操作
企业运维实践-Nginx使用geoip2模块并利用MaxMind的GeoIP2数据库实现处理不同国家或城市的访问最佳实践指南
运维实践-最新Nginx二进制构建编译lua-nginx-module动态链接Lua脚本访问Redis数据库读取静态资源隐式展现
企业运维实践-如何在K8S集群环境Gitlab+Jenkins+Jmeter+Grafana技术中实现自动化分布压力测试数据展示
如何使用Grafana+Loki+Promtail日志聚合系统针对Kubernetes集群中Pods应用日志采集搜索展示
欢迎各位志同道合的朋友一起学习交流,如文章有误请在下方留下您宝贵的经验知识,个人邮箱地址【master#weiyigeek.top】
或者个人公众号【WeiyiGeek】
联系我。
更多文章来源于【WeiyiGeek Blog 个人博客 - 为了能到远方,脚下的每一步都不能少 】
个人主页: 【 https://weiyigeek.top】
博客地址: 【 https://blog.weiyigeek.top 】
学习交流群:【 https://weiyigeek.top/visit.html 】
专栏书写不易,如果您觉得这个专栏还不错的,请给这篇专栏 【点个赞、投个币、收个藏、关个注,转个发,留个言】(人间六大情),这将对我的肯定,谢谢!。
echo "【点个赞】,动动你那粗壮的拇指或者芊芊玉手,亲!"
printf("%s", "【投个币】,万水千山总是情,投个硬币行不行,亲!")
fmt.Printf("【收个藏】,阅后即焚不吃灰,亲!")
console.info("【转个发】,让更多的志同道合的朋友一起学习交流,亲!")
System.out.println("【关个注】,后续浏览查看不迷路哟,亲!")
cout << "【留个言】,文章写得好不好、有没有错误,一定要留言哟,亲! " << endl;
更多网络安全、系统运维、应用开发、物联网实战、全栈文章,尽在【个人博客 - https://blog.weiyigeek.top】站点,谢谢支持!
帅哥、美女、大佬们点个【赞+在看】吧!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。