【Redis】redis安装与客户端redis-cli的使用(批量操作)

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 【Redis】redis安装与客户端redis-cli的使用(批量操作)

目录

在Centos中安装Redis

安装步骤

安装可能出现的问题

redis-cli,Redis命令行界面

客户端回复结果作为其他的输出

主机,端口,密码和数据库

统计

从其他程序获取内容当做redis的输入

连续运行相同的命令

随时间监视RSS内存大小

批量操作

如何批量删除指定的数据

连续统计模式

扫描大键

获取按键列表

监控Redis中的操作命令

RDB文件的远程备份

执行LRU模拟

如果批量删除 带\n后缀的key

参考文档

在Centos中安装Redis

安装步骤

先创建一个文件夹用于存放redis

mkdir /data/redis & cd /data/redis


1.使用以下命令下载,提取和编译Redis:

 wget https://download.redis.io/releases/redis-6.0.9.tar.gz
 tar xzf redis-6.0.9.tar.gz
 cd redis-6.0.9
 make
 make test

最新稳定版本请看 https://redis.io/download

2. 配置

在make成功以后,会在src目录下多出一些可执行文件:redis-serverredis-cli等等。

方便使用用cp命令复制到usr目录下运行。

cp src/redis-server /usr/local/bin/
cp src/redis-cli /usr/local/bin/
cp src/redis-sentinel /usr/local/bin/

然后新建目录,存放配置文件

 cd /data/redis/
 创建一个6379的文件夹
 mkdir 6379
 将配置模板拷贝到6379中
 cp redis-6.0.9/redis.conf 6379
 cd 6379
 mkdir log
 mkdir run

3.修改配置文件redis.conf

vim /data/redis/6379/redis.conf

修改一些参数

daemonize yes ## 后台运行
pidfile /data/redis/run/redis_6379.pid
logfile /data/redis/log/redis_6379.log
dir /data/redis/6379

4.启动redis

/usr/local/bin/redis-server /data/redis/6379/redis.conf

image.png

5. 使用客户端

/usr/local/bin/redis-cli

image.png

安装可能出现的问题

问题1

make[3]: 进入目录“/data/redis/redis-6.0.9/deps/hiredis”
cc -std=c99 -pedantic -c -O3 -fPIC   -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb net.c
make[3]: cc:命令未找到
make[3]: *** [net.o] 错误 127
make[3]: 离开目录“/data/redis/redis-6.0.9/deps/hiredis”
make[2]: *** [hiredis] 错误

异常原因:没有安装gcc
解决方案:yum install gcc-c++

上面安装完gcc之后执行一下make distclean清理 一下 再执行make;

问题二

server.c: 在函数‘redisSetProcTitle’中:
server.c:5052:15: 错误:‘struct redisServer’没有名为‘cluster_enabled’的成员
     if (server.cluster_enabled) server_mode = " [cluster]";
               ^
server.c:5053:20: 错误:‘struct redisServer’没有名为‘sentinel_mode’的成员
     else if (server.sentinel_mode) server_mode = " [sentinel]";
                    ^
server.c:5057:15: 错误:‘struct redisServer’没有名为‘bindaddr_count’的成员
         server.bindaddr_count ? server.bindaddr[0] : "*",
               ^
server.c:5057:39: 错误:‘struct redisServer’没有名为‘bindaddr’的成员
         server.bindaddr_count ? server.bindaddr[0] : "*",
                                       ^
server.c:5058:15: 错误:‘struct redisServer’没有名为‘port’的成员
         server.port ? server.port : server.tls_port,
               ^
server.c:5058:29: 错误:‘struct redisServer’没有名为‘port’的成员
         server.port ? server.port : server.tls_port,
                             ^
server.c:5058:43: 错误:‘struct redisServer’没有名为‘tls_port’的成员
         server.port ? server.port : server.tls_port,

问题原因: redis和gcc版本问题

解决方法 升级一下gcc版本

yum -y install centos-release-scl && yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils && scl enable devtoolset-9 bash

上面安装完gcc之后执行一下make distclean清理 一下 再执行make;


make执行成功之后 会提示It's a good idea to run 'make test'


所以接下来我们make test


问题三

You need tcl 8.5 or newer in order to run the Redis test


异常原因:没有安装tcl

解决方案 yum install -y tcl 。


redis-cli,Redis命令行界面

客户端回复结果作为其他的输出

我们只想命令的时候通常需要先 /usr/local/bin/redis-cli 链接到redis的客户端上去再操作;

但是有的时候 我不想那么麻烦 ,能不能直接执行客户端的命令,并且将输出 输出到别的地方

/usr/local/bin/redis-cli incr mycounter > /tmp/output.txt 
cat /tmp/output.txt

image.png

加上–no-raw 将类型也打印出来

/usr/local/bin/redis-cli --no-raw incr mycounter > /tmp/output.txt

image.png

注意 如果不想要带类型 则 --raw


主机,端口,密码和数据库

如果我们要连接指定的客户端并且还有密码怎么办,带上参数

/usr/local/bin/redis-cli -h localhost -p 6379 ping

如果您的实例受密码保护,则该-a <password>选项将执行身份验证,从而省去了显式使用AUTH命令的需要:

/usr/local/bin/redis-cli -a myUnguessablePazzzzzword123 ping


统计

redis-cli -h IP地址 -p 端口 -a 密码 info keyspace
redis-cli keys "Abc*" | wc -l

从其他程序获取内容当做redis的输入

假如我想把某个文件作为value存到redis中; 那么有两种方式


1.将我们从stdin读取的有效负载用作最后一个参数

/usr/local/bin/redis-cli -x set incrcount < /tmp/output.txt


2.另一种方法是提供redis-cli一系列写入文本文件的命令:

vim /tmp/commands.txt

创建这个文件,并写入一系列redis中的命令

set foo 100
incr foo
append foo xxx
get foo

然后执行

cat /tmp/commands.txt | /usr/local/bin/redis-cli

image.png

如果想打印出来不想带类型 记得在后面加上--raw


上面依次commands.txt执行 所有命令,redis-cli就像它们是由用户交互键入的一样。如果需要,可以在文件内用字符串引号,以便可以在其中包含带空格或换行符的单个参数或其他特殊字符


可以在最后加上 > /tmp/output.txt 将输出结果存放到别的文件中


连续运行相同的命令

此功能由两个选项控制:-r <count>和-i <delay>。第一个说明运行命令的次数,第二个说明配置不同命令调用之间的延迟(以秒为单位)(可以指定十进制数(如0.1,以表示100毫秒)。


默认情况下,间隔(或延迟)设置为0,因此命令会尽快执行:


例如 我想每2秒执行一个自增操作

image.png

除了上面的方式 还可以在交互模式中前面加数字用于重复执行命令

image.png

随时间监视RSS内存大小

redis-cli -r -1 -i 1 INFO | grep rss_human

image.png

批量操作

vim /tmp/commands.txt 我们先把批量命令放到一个文件中

image.png

然后执行批量执行的命令

cat /tmp/commands.txt | /usr/local/bin/redis-cli --pipe > /tmp/batchout.tx

使用命令 --pipe使用管道模式 进行批量插入;

执行完毕之后我们可以看到输出结果

image.png

全部执行成功;


如何批量删除指定的数据

如果我想删掉所以以 1 为前缀的key应该怎么实现

/usr/local/bin/redis-cli keys '1*' |xargs /usr/local/bin/redis-cli del


Redis批量执行命令


如果批量删除 带\n后缀的key


连续统计模式

请使用该--stat选项来实时监控Redis实例

-i: 更改发出新行的频率。默认值为一秒钟。

image.png

在这种模式下,每秒钟都会打印一条新行,其中包含有用的信息以及旧数据点之间的差异。您可以轻松了解内存使用情况,连接的客户端等情况


扫描大键

在这种特殊模式下,它redis-cli充当键空间分析器。它在数据集中扫描大键,但也提供有关数据集所包含的数据类型的信息。该模式通过该–bigkeys选项启用,并产生非常详细的输出:


先设置一个大值,将之前一个大文件设置为一个值

/usr/local/bin/redis-cli -x set bigkeyname < /tmp/commands.txt

那么这个key为 bigkeyname的值应该一会扫出来肯定是大键了;


redis-cli --bigkeys

image.png

该命令的扫描是使用的SCAN命令,因此不会影响操作


获取按键列表

redis-cli --scan | head -10

扫描 并打印前面10行

使用带有该选项的SCAN命令的基础模式匹配功能–pattern。

redis-cli --scan --pattern '*-11*'

可以过滤指定的key


监控Redis中的操作命令

redis-cli monito

redis的所有命令都会实时打印出来

image.png

还可以加上|grep 进行过滤


RDB文件的远程备份

在Redis复制的第一次同步期间,主服务器和从服务器以RDB文件的形式交换整个数据集。redis-cli为了提供远程备份功能,可以利用此功能,该功能允许将RDB文件从任何Redis实例传输到运行的本地计算机


redis-cli --rdb /tmp/redisdump.rdb ;


执行LRU模拟

警告:该测试使用流水线操作,并且会对服务器造成压力,请勿将其用于生产实例。

./redis-cli --lru-test 10000000

如果批量删除 带\n后缀的key

有个坑,就是我在执行了这个操作之后,redis有很多测试数据 'lru:*'的数据;如何批量删除是一个问题; 用上面的批量删除不行;

image.png

返回的都是0 说明删除失败;

查看xargs详解的文档; 我们加上一个 -t的参数

-t 表示先打印命令,然后再执行。

看看我们执行的是什么

image.png

可以了解到我们只想的是下面的命令

redis-cli -a daimler1818 del lru:17288 lru:3818127 看起来貌似没有问题,难道是这个key有问题?那我们get一下看看有没有问题; get查询之后也是没有数据;那就奇怪了; 我们连上交互模式上去看看;keys 'lru:*'

image.png

可以看到这个key 是带有\n 的并且还是有双引号的;如果获取值的话 应该get "lru:3717577\n" 这样子才行;

解决方法

image.png

第一步 将key拼接成我们想要的样子

/data/codis/codis/redis-cli -a password keys "lru*" |head -10 | xargs -I {} -t echo '  del "{}\n"' > /tmp/lrutest.txt

命令解释

/data/codis/codis/redis-cli -a password keys "lru*" 是过滤我们的数据

head -10 是只取上面过滤数据的前10行; 也可以去掉这句 就是全部

xargs -I {} -t echo 'del "{}\n"' : 中的{} 是占位符 就是过滤出来的每一项数据; 前后的{}要一致;你也可以用其他的字符来代替; echo 'del "{}\n"' 表示输出字符串 最终输出的是拼接好的

比如输出 del "lru:3717577\n"

> /tmp/lrutest.txt 是将上面输出的存放到文件中


第二步 批量执行


cat /tmp/lrutest.txt | ./redis-cli -a password -x


结果


image.png

image.png

最好使用–pipe管道来进行批量操作

cat /tmp/lrutest.txt | ./redis-cli -a password --pipe

image.png

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
NoSQL Redis 数据安全/隐私保护
Redis 最流行的图形化界面下载及使用超详细教程(带安装包)! redis windows客户端下载
文章提供了Redis最流行的图形化界面工具Another Redis Desktop Manager的下载及使用教程,包括如何下载、解压、连接Redis服务器以及使用控制台和查看数据类型详细信息。
147 6
Redis 最流行的图形化界面下载及使用超详细教程(带安装包)! redis windows客户端下载
|
2月前
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
133 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
28天前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
2月前
|
NoSQL 网络协议 算法
Redis 客户端连接
10月更文挑战第21天
33 1
|
2月前
|
NoSQL Ubuntu Linux
Redis 安装
10月更文挑战第14天
55 1
|
18天前
|
NoSQL 编译器 Linux
【赵渝强老师】Redis的安装与访问
本文基于Redis 6.2版本,详细介绍了在CentOS 7 64位虚拟机环境中部署Redis的步骤。内容包括安装GCC编译器、创建安装目录、解压安装包、编译安装、配置文件修改、启动服务及验证等操作。视频讲解和相关图片帮助理解每一步骤。
|
2月前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
258 3
|
2月前
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
63 8
|
2月前
|
缓存 NoSQL Ubuntu
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
57 3
|
2月前
|
NoSQL Linux Shell
Redis 的安装与部署(图文)
Redis 的安装与部署(图文)