图 3-20 简单的带权重有向图


    图 3-21 图对应的散列键_images/IMAGE_GRAPH_HASH.png



    代码清单 3-5 使用散列实现的图数据储存程序:/hash/graph.py


    这个图数据储存程序的核心概念就是把边(edge)的起点和终点组合成一个字段名,并把边的权重(weight)用作字段的值,然后使用 HSET 命令或者 HMSET 命令把它们储存到散列里面。比如说,如果用户输入的边起点为 "a" ,终点为 ,权重为 "30" ,那么程序将执行命令 HSET hash "a->b" 30 ,把 "a""b" 的这条边及其权重 储存到散列里面。

    比如说,我们可以通过执行以下代码,构建出前面展示过的带权重有向图 3-20 :

    然后通过执行程序提供的方法,获取边的权重,又或者检查给定的边是否存在:

    这里展示的图数据储存程序提供了针对边和权重的功能,因为它能够非常方便地向图中添加边和移除边,并且还可以快速地检查某条边是否存在,所以它非常适合用来储存节点较多但边较少的稀疏图(sparse graph)。在后续的章节中,我们还会继续看到更多使用 Redis 储存图数据的例子。