关于 Redis 的 naming space 管理

2013-08-26 23:51:14 +08:00
 Livid
假设 V2EX 用这样的 naming 来管理数据:

v2ex:member:1 (Hash)

v2ex:member:1:following (Sorted Set or List)

v2ex:topic:2 (Hash)

topic:node:2:list (Sorted Set)

...

那么在数据对象的类型多了之后,所有的这些命名规则也会变得越来越复杂。

是否有什么适合来管理这样的命名规范的工具?Excel?
6191 次点击
所在节点    Redis
16 条回复
ipconfiger
2013-08-27 00:00:32 +08:00
真是铁了心上纯redis?
Livid
2013-08-27 00:03:18 +08:00
@ipconfiger 上之前需要把所有问题想清楚。然后,需要找一段时间把想法完整写出来。然后实际测试一下。

目前觉得,功能应该不会受到任何影响。
ipconfiger
2013-08-27 00:11:09 +08:00
@Livid Redis在快照模式下还是会丢数据的,然后dump快照时会fork一个新进程导致内存占用翻倍,如果用aof模式就没有这么风驰电掣的赶脚了。另快照模式虽然新fork了进程来dump数据,但是当你的数据有几个G的时候.......还是会在瞬间卡住进程,实际使用的时候就是这样子的
keakon
2013-08-27 00:19:28 +08:00
如果内存比较宝贵的话,建议减小 key 的长度,且不要使用太多 key。
例如 v2ex:member(hash),id 作为 field name,值可以用 JSON 或其他编码方式。
Redis 有个坑就是取出来的数据类型都是字符串,所以想区分 1 和 '1'、'' 和 None 的时候会很囧。而 JSON 可以保留类型信息。
这里有些经验: http://www.keakon.net/tag/Redis
qdvictory
2013-08-27 01:50:34 +08:00
这个命名感觉还是有点问题。
之前看资料,推荐key写法是 表明:id:字段 值为字段值,如果多单词可以用.连接,如 topic:1:date
这个规则貌似和php的某个redis gui,(phprediaadmin?)相温和。

@keakon 像python可以用pickle解决
keakon
2013-08-27 02:04:15 +08:00
@qdvictory pickle 很慢啊,而且丧失可读性
VYSE
2013-08-27 03:20:12 +08:00
用ORM吧
ritksm
2013-08-27 03:47:01 +08:00
@ipconfiger 内存翻倍确实是个很烦的事情...被这个卡住机器很多次了...

还是推荐用Redis来做缓存的比较好...如果Cache命中率大的话其实和直接做数据存储性能上没啥太大区别...

@keakon 如果要序列化的都是对象的话...比如Django的model...那么pickle用起来还是很方便的...
ritksm
2013-08-27 04:01:39 +08:00
再回答一下问题好了...

我觉得最好的管理方式就是不要管理...

如果是在一个应用里面的name...我一般都是做一个base_name放在config里...像这样v2ex:member:{pk}然后直接format...

如果要图形化看的话可以看看这个https://github.com/ErikDubbelboer/phpRedisAdmin

想不到有啥需要管理Key的场景...
ushuz
2013-08-27 07:42:59 +08:00
都用json
ipconfiger
2013-08-27 09:40:31 +08:00
哈哈,可以试试我这个方案 https://github.com/ipconfiger/free4my
clowwindy
2013-08-27 11:28:00 +08:00
我一般分 db 而不是加前缀。
est
2013-08-27 11:44:40 +08:00
redis没法做scan,天生缺陷。还是算了吧。


@ipconfiger 似乎泄露db地址账号密码了。哇咔咔
ipconfiger
2013-08-27 11:55:41 +08:00
@est 没事,我本地虚拟机上的db
deepanalyzer
2013-08-27 14:43:08 +08:00
最近有篇论文是在讲类似的问题,并且考虑的场景更复杂一些。@Livid 可以参考看看:"Managing Schema Evolution in NoSQL Data Stores", at http://db.disi.unitn.eu/pages/VLDBProgram/pdf/DBPL/paper2.pdf
wuxqing
2013-08-27 17:20:37 +08:00
@Livid 为什么不用mongodb?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/80318

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX