Redis批量生成数据的实现


Posted in Redis onJune 05, 2022

Redis批量生成数据

从研究Redis开始,一直会有一些Redis键值数量或者键值大小的场景要求,显然我们不可能一条一条记录的插入,那不是人都要没了,下面介绍两种方法。

Redis自带Debug方法

redis提供的debug命令可以自己研究下,里面涉及到模拟redis异常场景如oom、宕机、命令执行失败,redis重载rdb文件、aof文件,模拟redis命令耗时等等,我们可以通过DEBUG help查看详情,如下所示

Redis批量生成数据的实现

这里需要用到的就是debug populate命令,使用如下所示

#### 后面数量代表创建多少个键值
127.0.0.1:6379> DEBUG POPULATE 1000
OK
127.0.0.1:6379> DBSIZE
(integer) 1000
127.0.0.1:6379>
127.0.0.1:6379> info memory
# Memory
used_memory:974368
used_memory_human:951.53K
used_memory_rss:5234688
used_memory_rss_human:4.99M

### 查看生成键值(生成时没有指定默认以key做为前缀)
127.0.0.1:6379> keys *
     1) "key:32201"
     2) "key:59146"
     3) "key:10551"
     ......
127.0.0.1:6379> get key:796
"value:796"

Shell脚本

使用shell脚本前我们需要知道,不用进入redis的命令行我们一样可以插入redis数据,如下所示

### 如果使用默认端口可以直接采用以下命令,如果不是默认端口或默认ip,需要重新指定如下
### redis-cli -c -h 127.0.0.1 -p 7000
[root@zzf993 bin]# ./redis-cli set name zhangsan
OK
### 到redis中查看
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379>
127.0.0.1:6379> get name
"zhangsan"

有了上面的知识,我们造数据就轻而易举了,我们采用shell脚本循环就可以解决问题

批量造1000个键值的key

#!/bin/bash
### 需要转到redis-cli的目录
cd /opt/redis/redis-6.0.6/bin/

for i in {1..10000}
do
  echo "key${i} ${i}"
  ### 如果采用默认端口而且在本机可以这样做,不是默认端口或者本机需要指定
  ### redis-cli -c -h 127.0.0.1 -p 7000
  redis-cli set key${i} ${i}
done

造一个bigkey的测试数据

#!/bin/bash
### 需要转到redis-cli的目录
cd /opt/redis/redis-6.0.6/bin/

for i in {1..10000}
do
  echo "key${i} ${i}"
  redis-cli  hset obj  key${i} ${i}
done

使用shell脚本时需要注意,需要保证当前用户有可执行权限,如果不太情况的可以直接赋予所有权限如下所示

Redis批量生成数据的实现

到此这篇关于Redis批量生成数据的实现的文章就介绍到这了,更多相关Redis批量生成数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Redis 相关文章推荐
在K8s上部署Redis集群的方法步骤
Apr 27 Redis
Redis6.0搭建集群Redis-cluster的方法
May 08 Redis
Redis数据结构之链表与字典的使用
May 11 Redis
redis三种高可用方式部署的实现
May 11 Redis
Windows中Redis安装配置流程并实现远程访问功能
Jun 07 Redis
Redis入门教程详解
Aug 30 Redis
解决Redis启动警告问题
Feb 24 Redis
redis数据结构之压缩列表
Mar 21 Redis
浅谈Redis的事件驱动模型
May 30 Redis
Redis特殊数据类型HyperLogLog基数统计算法讲解
Jun 01 Redis
Redis入门基础常用操作命令整理
Jun 01 Redis
一文教你快速生成MySQL数据库关系图
Jun 28 Redis
Redis实现订单过期删除的方法步骤
Jun 05 #Redis
浅谈Redis缓冲区机制
Redis全局ID生成器的实现
Jun 05 #Redis
Redis keys命令的具体使用
Jun 05 #Redis
Redis入门基础常用操作命令整理
Jun 01 #Redis
Redis基本数据类型String常用操作命令
Jun 01 #Redis
Redis基本数据类型List常用操作命令
Jun 01 #Redis
You might like
PHP.MVC的模板标签系统(三)
2006/09/05 PHP
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
php strlen mb_strlen计算中英文混排字符串长度
2009/07/10 PHP
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
javascript应用:Iframe自适应其加载的内容高度
2007/04/10 Javascript
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
基于JQuery的模拟苹果桌面Dock效果(稳定版)
2012/10/15 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
2016/11/22 Javascript
利用Vue.js+Node.js+MongoDB实现一个博客系统(附源码)
2017/04/24 Javascript
jQuery实现选中行变色效果(实例讲解)
2017/07/06 jQuery
Vue上传组件vue Simple Uploader的用法示例
2017/08/25 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
vue 进阶之实现父子组件间的传值
2019/04/26 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
Vue 禁用浏览器的前进后退操作
2020/09/04 Javascript
[50:59]2018DOTA2亚洲邀请赛 4.7 总决赛 LGD vs Mineski第四场
2018/04/10 DOTA
[02:19]2018年度DOTA2最佳核心位选手-完美盛典
2018/12/17 DOTA
[00:37]食人魔魔法师轮盘吉兆顺应全新至宝将拥有额外款式
2019/12/19 DOTA
最基础的Python的socket编程入门教程
2015/04/23 Python
Python最小二乘法矩阵
2019/01/02 Python
python时间日期操作方法实例小结
2020/02/06 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
基于python 等频分箱qcut问题的解决
2020/03/03 Python
animation和transition的区别
2020/10/12 HTML / CSS
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
2020/11/17 HTML / CSS
Java的for语句中break, continue和return的区别
2013/12/19 面试题
网络工程专业毕业生推荐信
2013/10/28 职场文书
致三级跳运动员加油稿
2015/07/21 职场文书
如何利用pygame实现打飞机小游戏
2021/05/30 Python
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python
如何使用Python提取Chrome浏览器保存的密码
2021/06/09 Python