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相关推荐

  1. python数据存储系列教程——python中redis数据库操作:连接、增删查改、多级路径

    全栈工程师开发手册 (作者:陈玓玏) python教程全解 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品 ...

  2. python的redis数据库连接与使用

    Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...

  3. python 实现redis订阅发布功能

    redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...

  4. java和redis统计在线,在SpringBoot中使用Redis的zset统计在线用户信息

    统计在线用户的数量,是应用很常见的需求了.如果需要精准的统计到用户是在线,离线状态,我想只有客户端和服务器通过保持一个TCP长连接来实现.如果应用本身并非一个IM应用的话,这种方式成本极高. 现在的应 ...

  5. Python 操作 redis

    官网命令(英文)列表:http://redis.io/commands Redis 教程:http://www.redis.net.cn/tutorial/3501.html Redis 命令参考:h ...

  6. Python操作Redis和Memcached

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  7. go操作redis之go-redis,python操作redis之redis

    目录 go操作redis go-redis安装 连接方式 单机连接 TLS连接模式 Redis 集群连接 Redis 哨兵模式连接 基本使用 执行任意命令 redis.Nil zset操作 扫描或遍历 ...

  8. Python操作Redis

    [外链图片转存失败,源站可能有防盗在这里插入!链机制,建描述]议将图片上https://传(imblog.csdnimg.cn/201912281v5vUa18517.png?x-oss-proces ...

  9. python读取cad中的文字,使用Python读写Redis字符串

    1.简介 Redis 是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...

最新文章

  1. C++多态中虚函数的深入理解
  2. ajax使用json数组,使用JSON传递数组值的Ajax
  3. 启明云端分享|直接用ESP32-S2和ESP32-C3驱动1.54寸串口屏,有哪些区别呢,他们的亮点又有哪些呢
  4. springboot springcloud区别_SpringCloud微服务全家桶-第一篇!为什么要用微服务
  5. 组合自定义控件的步骤详解
  6. 服务器主机安装esxi虚拟机,服务器主机安装esxi虚拟机
  7. BZOJ1016 [JSOI2008]最小生成树计数
  8. java 爬虫 图片_java实现爬虫爬取小姐姐图片
  9. ServletContext的应用
  10. mysql ansi unicode_Ansi 与 Unicode 字符串类型的互相转换
  11. python3读取多行数据合并_python3 数据规整化:清理、转换、合并、重塑(一)
  12. pat A1052:Linked List Sorting静态链表+链表排序
  13. jsp如何跳转java_JSP的三种跳转方式
  14. 史上最牛恶搞小游戏,快快转发,分享这份“快乐”
  15. pppd详解_PPPD
  16. 脑洞大开的思维工具:六顶思考帽
  17. 【点云3D目标检测】跑通CIA-SSD过程中的一些报错集锦
  18. 解决AS升级3.4 ERROR: All flavors must now belong to a named flavor dimension.Learn more at https://d.and
  19. PL/SQL 基础知识
  20. 360安全卫士系统漏洞修复,漏洞补丁下载成功但安装失败的解决办法

热门文章

  1. iTunes 降级安装 12.6
  2. pixhawk 整体架构的认识
  3. 启动之OS_CPU_C
  4. 牛客小白9 换个角度思考(离线+树状数组)
  5. 标准化条件变量 -- condition_variable
  6. 你知道Linux和Unix的区别吗
  7. 如何QLayout内部的成员部件之间从左到右依次排列
  8. Leetcode题库 11.盛水最多的容器(双指针法 C实现)
  9. 9-基数排序C实现(待补充插图)
  10. 关于优酷开放SDK之setOnVideoSizeChangedListener