redis删除数据的三种方法,redis删除数据库

  redis删除数据的三种方法,redis删除数据库

  由于需求的变化,以前的一个项目需要修改redis中存储的数据格式。以防止在新包发布后由于旧数据而插入新数据。因此,发布前必须删除所有旧数据。目前redis是一个公共集群,涉及几个业务。那么问题来了,如何在不影响其他业务使用的情况下,删除大量的旧数据(目前数据库中的总键数为1200w)。

  如何解决写爬虫IP受阻的问题?立即使用。

  ###常见批量删除redis数据的方法:

  如果知道要删除的数据的key,可以使用redis-cli的del命令/usr/local/redis/bin/Redis-CLI delkey或者其他高级语言对应的Redis包或库。比如java下的jedis,python下的redis库

  java: jdeis.del(key)

  Python: redis.delete(key)如果要删除的数据的键未知,则只知道满足特定模式的键。在这种情况下,您需要使用redis的keys命令来找出满足特定模式的键。

  找到满足前缀video的所有键。

  /usr/local/Redis/bin/Redis-CLI keys video _ *可以使用linux的xargs完成批量删除/usr/local/Redis/bin/Redis-CLI keys video * xargs/usr/local/Redis/bin/Redis-CLI del 3。如果要删除的数据是库中的所有数据,可以使用flushdb清除整个库/usr/local/redis/bin/redis-cliflush db。

  ###几种方法的说明

  第一种方法需要明确知道特定的密钥。

  使用keys命令。当库中的数据量过大时,keys命令将阻塞redis的所有其他请求。毫无疑问,这种方法对于公共redis集群是不可取的。当然,还必须考虑业务的具体需求。不可以,也可以把删除脚本放在流量比较小的时候。

  使用flushdb,整个库中的数据将被清理。

  # # #我的解决方案online redis集群采用matser-slave的结构。因此,您可以将阻止请求的键命令放在从节点上执行,并找出满足特定前缀的所有键。然后使用shell脚本或高级语言删除主节点上的数据。

  #获取前缀为video、album、actor actor的所有关键字,并将这些关键字导出到文件/data/keys.txt中。

  #!/bin/bash

  keys=(视频 专辑 演员);

  host=“localhost”;

  port= 6378

  对于${keys[@]}中的密钥;

  做

  cmd=/usr/local/redis/bin/redis-CLI-h $ { host }-p $ { port } keys gal . video . $ { key } */data/keys . txt ;

  echo $ { cmd };

  eval $ { cmd };

  搞定;

  #根据之前生成的密钥删除数据。

  #!/bin/bash

  host=“localhost”;

  port= 6378

  file=/data/keys . txt ;

  I=0;

  cat ${file} 在读取密钥时;

  做

  设I=I 1;

  cmd=/usr/local/redis/bin/redis-CLI-h $ { host }-p $ { port } del $ { key } ;

  “echo”行:“${i}”,cmd:“$ { cmd }”。

  eval $ { cmd };

  搞定;因为脚本是一条一条的发送del命令,所以执行效率相当低。在测试中,大约一个小时内删除了120w条数据。1200w需要删10个小时!考虑到发送每个请求的耗时,认为可以利用redis的管道实现批量提交。

  __作者__=李涛

  从redis导入Redis

  主机=127.0.0.1

  端口=6379

  db=0

  r=Redis(主机、端口、数据库)

  pl=r.pipeline()

  每管道尺寸=10000

  计数=0

  file=open(/data/keys.txt )

  打印“开始删除文件中的所有密钥”

  而1:

  lines=file.readlines(10000)

  如果不是线条:

  破裂

  对于键入行:

  key=key.strip(\n )

  删除(键)

  计数=计数1

  if(count==per_pipe_size):

  计数=0

  执行()

  执行()

  file.close()

  打印完成删除所有键改进脚本2只需要大约2分钟在线执行!redis就是这样删除数据的。更多详情请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 关系型数据库与非关系型数据库简介一样吗,关系型数据库非关系型数据库有哪些
  • 关系型数据库与非关系型数据库简介一样吗,关系型数据库非关系型数据库有哪些,关系型数据库与非关系型数据库简介
  • 关于redis数据库入门详细介绍图片,redis数据库的使用,关于Redis数据库入门详细介绍
  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • 什么是分库分表,为什么要进行分库分表-,分库分表的区别,数据库分库分表是什么,什么情况下需要用分库分表
  • vb中adodb连接数据库,
  • treeview控件绑定数据,wpf treeview数据绑定,详解TreeView绑定数据库
  • sql的多表查询,数据库如何实现多表查询
  • SQL数据库的图形管理界面工具是,sql图形界面创建数据库
  • SQL数据库的图形管理界面工具是,sql图形界面创建数据库,SQLServer2019 数据库的基本使用之图形化界面操作的实现
  • sql数据库定时备份怎么弄,mysql 定期备份
  • sql数据库定时备份怎么弄,mysql 定期备份,MySQL 数据库定时备份的几种方式(全面)
  • sqlserver的nvarchar和varchar,数据库varchar和nvarchar
  • sqlserver的nvarchar和varchar,数据库varchar和nvarchar,SQL中varchar和nvarchar的基本介绍及其区别
  • 留言与评论(共有 条评论)
       
    验证码: