redis 省市地区三级结构怎么设计

匿名t3a 发布于 2012/02/23 17:04
阅读 4K+
收藏 6

有几个网站都有用到省市地区三级结构

所以想把这数据存在redis中 方便调用

数据有 

城市ID 城市名称 城市拼音 隶属省市ID

 

经常用到的功能 

从 城市拼音 找出 隶属省市, 城市名,隶属它的市/地区

redis 是新手 哪位牛人给个靠谱的结构

等弄好 会把数据分享给大家的

@红薯

加载中
0
阿影

province:list => set(province_id)

province:[province_id] => hash (entry key => entity field, entry value => field value)

province:city_pinyin_list:[province_id] => set(city_pinyin)

city:[city_pinyin] => hash(entry key => entity field, entry value => field value)

city:[city_pinyin]:county_list => set(county_pinyin)

county:[county_pinyin] ……此处略,与城市实体结构相似

......

从 城市拼音 找出 隶属省市, 城市名,隶属它的市/地区:

先查找城市实体信息(城市Id、城市名称、所属省(直辖市)Id……)

HMGET city:beijing city_id city_name province_id

查找北京市包含的县(郡、区):

SORT city:beijing:county_list BY county:*->county_pinyin GET 

# count:*->county_name GET county:*->city_id ASC ALPHA


0
雷志伟
雷志伟
@红薯 是没有用的. 他很怕别人@ 他 .

用 Redis 来做这个, 会给人一种杀鸡用牛刀的感觉.
用 MySQL 就可以做到相当好了. 而且还有现成的数据.

会因为习惯和应用的不同, Redis 的结构也会完全不同,
比如说,
有的人喜欢把 "城市ID,城市名称,城市拼音,隶属省市ID"(对应SQL中的一行) 放在一起, 做在 Hash 键中.
而有些人喜欢通过
"城市ID" 来拆开, 各个字段放在不同的 String 中.
具体用哪种, 关键还是要看应用的类型.
如果经常通过城市ID去读取其中的某一字段, 那拆开会好一些.
如果经常通过城市ID去读取全部字段, 那用 Hash 会好一些.
你可以估计一下哪种类型的操作次数会更多, 就用对应的结构.

隶属于"省/市", 这个可以用  Set 集合来做, 比较灵活一些.


我也是一个Redis的初学者, 希望以后可以多多交流
0
mahone
mahone
这个貌似也不用存mysql,直接也写文件也可以。。。
0
幻影浪子
幻影浪子

MySQL,文件,人家肯定会啦.. 现在就是想尝试Redis啊.

我看用Hashes吧

Hashes

Redis Hashes are maps between string fields and string values, so they are the perfect data type to represent objects(eg: A User with a number of fields like name, surname, age, and so forth)

http://redis.io/topics/data-types

0
f
francis333
hash省内存
0
jiuyueshouyi
jiuyueshouyi
只用hash map就可以解决了
0
番茄酱汁
番茄酱汁
其实就是树结构 了解树结构这个就会做了
0
muyu
muyu
直接写文件多好
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部