使用python对redis备份zset
1 #coding:utf8 2 import redis 3 import json 4 5 6 ''' 7 用于备份zset,zset分两种:score值唯一的zset、score值不唯一的zset 8 使用时注意:不要在备份的同时对old_key执行添加和删除操作 9 ''' 10 11 redis1 = redis.StrictRedis.from_url("redis地址") 12 old_key = 'old_zset_name' 13 new_key = 'new_zset_name' 14 15 16 def zset_to_zset(): 17 total = redis1.zcard(old_key) 18 start = 0 19 step = 10000 20 while start < total: 21 print start 22 end = start + step - 1 23 if end > total: 24 end = total 25 lis = redis1.zrange(old_key, start, end) 26 if lis: 27 dic = dict().fromkeys(lis, 0) 28 redis1.zadd(new_key, **dic) 29 start += step 30 # redis1.delete(old_key) 31 print 'all finished!' 32 33 def export_to_list(score, error_name): 34 total = redis1.zcount(old_key, score, score) # 查询对应score值的链接数量 35 start = 0 36 step = 10000 37 while start < total: 38 print start 39 url_list = redis1.zrangebyscore(old_key, score, score, start, step) 40 if url_list: 41 dic = dict().fromkeys(url_list, int(score)) 42 redis1.zadd(new_key, **dic) 43 start += step 44 45 def copy_error(): 46 error_dic = redis1.hget('hash_dic', old_key) 47 error_dic = json.loads(error_dic) 48 for score, error_name in error_dic.items(): 49 export_to_list(score, error_name) 50 error_dic = json.dumps(error_dic) 51 redis1.hset('hash_dic', new_key, error_dic) # 将new_key存到hash中 52 # redis1.delete(old_key) 53 print 'all finished!' 54 55 if __name__ == '__main__': 56 # zset_to_zset() # score值唯一的zset备份 57 copy_error() # score值不唯一的zset备份
对'hash_dic'的说明:之所以将score值存到一个hash中,是因为不同的score值代表不同的意义。例如:
1 1 time false 2 2 geo false 3 3 startDate false
少于150字是什么鬼。。。
转载于:https://www.cnblogs.com/sniffing-the-rose/p/6089049.html
使用python对redis备份zset相关推荐
- python数据存储系列教程——python中redis数据库操作:连接、增删查改、多级路径
全栈工程师开发手册 (作者:陈玓玏) python教程全解 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品 ...
- python的redis数据库连接与使用
Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...
- python 实现redis订阅发布功能
redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...
- java和redis统计在线,在SpringBoot中使用Redis的zset统计在线用户信息
统计在线用户的数量,是应用很常见的需求了.如果需要精准的统计到用户是在线,离线状态,我想只有客户端和服务器通过保持一个TCP长连接来实现.如果应用本身并非一个IM应用的话,这种方式成本极高. 现在的应 ...
- Python 操作 redis
官网命令(英文)列表:http://redis.io/commands Redis 教程:http://www.redis.net.cn/tutorial/3501.html Redis 命令参考:h ...
- Python操作Redis和Memcached
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- go操作redis之go-redis,python操作redis之redis
目录 go操作redis go-redis安装 连接方式 单机连接 TLS连接模式 Redis 集群连接 Redis 哨兵模式连接 基本使用 执行任意命令 redis.Nil zset操作 扫描或遍历 ...
- Python操作Redis
[外链图片转存失败,源站可能有防盗在这里插入!链机制,建描述]议将图片上https://传(imblog.csdnimg.cn/201912281v5vUa18517.png?x-oss-proces ...
- python读取cad中的文字,使用Python读写Redis字符串
1.简介 Redis 是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...
最新文章
- C++多态中虚函数的深入理解
- ajax使用json数组,使用JSON传递数组值的Ajax
- 启明云端分享|直接用ESP32-S2和ESP32-C3驱动1.54寸串口屏,有哪些区别呢,他们的亮点又有哪些呢
- springboot springcloud区别_SpringCloud微服务全家桶-第一篇!为什么要用微服务
- 组合自定义控件的步骤详解
- 服务器主机安装esxi虚拟机,服务器主机安装esxi虚拟机
- BZOJ1016 [JSOI2008]最小生成树计数
- java 爬虫 图片_java实现爬虫爬取小姐姐图片
- ServletContext的应用
- mysql ansi unicode_Ansi 与 Unicode 字符串类型的互相转换
- python3读取多行数据合并_python3 数据规整化:清理、转换、合并、重塑(一)
- pat A1052:Linked List Sorting静态链表+链表排序
- jsp如何跳转java_JSP的三种跳转方式
- 史上最牛恶搞小游戏,快快转发,分享这份“快乐”
- pppd详解_PPPD
- 脑洞大开的思维工具:六顶思考帽
- 【点云3D目标检测】跑通CIA-SSD过程中的一些报错集锦
- 解决AS升级3.4 ERROR: All flavors must now belong to a named flavor dimension.Learn more at https://d.and
- PL/SQL 基础知识
- 360安全卫士系统漏洞修复,漏洞补丁下载成功但安装失败的解决办法
热门文章
- iTunes 降级安装 12.6
- pixhawk 整体架构的认识
- 启动之OS_CPU_C
- 牛客小白9 换个角度思考(离线+树状数组)
- 标准化条件变量 -- condition_variable
- 你知道Linux和Unix的区别吗
- 如何QLayout内部的成员部件之间从左到右依次排列
- Leetcode题库 11.盛水最多的容器(双指针法 C实现)
- 9-基数排序C实现(待补充插图)
- 关于优酷开放SDK之setOnVideoSizeChangedListener