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 相关文章推荐
Redis安装启动及常见数据类型
Apr 14 Redis
Redis持久化与主从复制的实践
Apr 27 Redis
深入浅析Redis 集群伸缩原理
May 15 Redis
redis哨兵常用命令和监控示例详解
May 27 Redis
redis使用不当导致应用卡死bug的过程解析
Jul 01 Redis
Redis模仿手机验证码发送的实现示例
Nov 02 Redis
SpringBoot整合Redis入门之缓存数据的方法
Nov 17 Redis
关于使用Redisson订阅数问题
Jan 18 Redis
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
Feb 12 Redis
浅谈Redis跟MySQL的双写问题解决方案
Feb 24 Redis
redis击穿 雪崩 穿透超详细解决方案梳理
Mar 17 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源代码加密?PHP二进制加密与解密的解决办法
2013/04/22 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
2014/08/23 PHP
PHP多线程之内部多线程实例分析
2015/03/09 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
JavaScript的面向对象(二)
2006/11/09 Javascript
Js之软键盘实现(js源码)
2007/01/30 Javascript
浅析JS刷新框架中的其他页面 && JS刷新窗口方法汇总
2013/07/08 Javascript
使用javascript做的一个随机点名程序
2014/02/13 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
2015/04/06 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
bootstrap Table插件使用demo
2017/08/07 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
三步搞定:Vue.js调用Android原生操作
2020/09/07 Javascript
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
跟老齐学Python之永远强大的函数
2014/09/14 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
2015/04/08 Python
django批量导入xml数据
2016/10/16 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
详解基于django实现的webssh简单例子
2018/07/17 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
pandas read_excel()和to_excel()函数解析
2019/09/19 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
2019/10/24 Python
python如何更新包
2020/06/11 Python
Python类super()及私有属性原理解析
2020/06/15 Python
Python xlrd/xlwt 创建excel文件及常用操作
2020/09/24 Python
军校大学生个人的自我评价
2014/02/17 职场文书
房产继承公证书
2014/04/09 职场文书
企业法人授权委托书
2014/09/25 职场文书
辩护词范文大全
2015/05/21 职场文书
DIY胆机必读:各国电子管评价
2022/04/06 无线电
vue实现列表垂直无缝滚动
2022/04/08 Vue.js