设为首页 加入收藏

TOP

Redis源码剖析之持久化(四)
2018-11-20 22:09:14 】 浏览:322
Tags:Redis 源码 剖析 持久化
  # 遍历数据库中的所有键
                    for key in db:
                        # 忽略已过期的键
                        if key.is_expired():continue


                        # 根据键的类型对键进行重写
                        if key.type == String:
                            rewrite_string(key)
                        elif key.type == List:
                            rewrite_list(key)
                        elif key.type == Hash:
                            rewrite_hash(key)
                        elif key.type == Set:
                            rewrite_set(key)
                        elif key.type == SortedSet:
                            rewrite_sorted_set(key)


                        # 如果键带有过期时间,那么过期时间也要被重写
                        if key.have_expire_time():
                            rewrite_expire_time(key)
                f.close()


            def rewrite_string(key):
                # 使用GET命令获取字符串键的值
                value = GET(key)


                # 使用SET命令重写字符串键
                f.write_command(SET,key,value)


            def rewrite_list(key):
                # 使用LRANGE命令获取列表键包含的所有元素
                item1,item2,...,itemN = LRANGE(key,0,-1)


                # 使用RPUSH命令重写列表键
                f.write_command(RPUSH,key,item1,item2,....,itemN)


            def rewrite_hash(key):
                field1,value1,field2,value2,...,fieldN,valueN = HGETALL(key)
                f.write_command(HSET,key,field1,value1,field2,value2,...,fieldN,valueN)


            def rewrite_set(key):
                elem1,elem2,...,elemN = SMEMBERS(key)
                f.write_command(SADD,key,elem1,elem2,...,elemN)


            def rewrite_sorted_set(key):
              &

首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Redis源码剖析之主从复制 下一篇关于MySQL的锁机制详解

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目