![]() | 1 ipconfiger 2013-08-27 00:00:32 +08:00 真是铁了心上纯redis? |
![]() | 2 Livid MOD OP PRO |
![]() | 3 ipconfiger 2013-08-27 00:11:09 +08:00 @Livid Redis在快照模式下还是会丢数据的,然后dump快照时会fork一个新进程导致内存占用翻倍,如果用aof模式就没有这么风驰电掣的赶脚了。另快照模式虽然新fork了进程来dump数据,但是当你的数据有几个G的时候.......还是会在瞬间卡住进程,实际使用的时候就是这样子的 |
![]() | 4 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 |
![]() | 5 qdvictory 2013-08-27 01:50:34 +08:00 via iPad 这个命名感觉还是有点问题。 之前看资料,推荐key写法是 表明:id:字段 值为字段值,如果多单词可以用.连接,如 topic:1:date 这个规则貌似和php的某个redis gui,(phprediaadmin?)相温和。 @keakon 像python可以用pickle解决 |
![]() | 7 VYSE 2013-08-27 03:20:12 +08:00 用ORM吧 |
8 ritksm 2013-08-27 03:47:01 +08:00 @ipconfiger 内存翻倍确实是个很烦的事情...被这个卡住机器很多次了... 还是推荐用Redis来做缓存的比较好...如果Cache命中率大的话其实和直接做数据存储性能上没啥太大区别... @keakon 如果要序列化的都是对象的话...比如Django的model...那么pickle用起来还是很方便的... |
9 ritksm 2013-08-27 04:01:39 +08:00 再回答一下问题好了... 我觉得最好的管理方式就是不要管理... 如果是在一个应用里面的name...我一般都是做一个base_name放在config里...像这样v2ex:member:{pk}然后直接format... 如果要图形化看的话可以看看这个https://github.com/ErikDubbelboer/phpRedisAdmin 想不到有啥需要管理Key的场景... |
![]() | 10 ushuz 2013-08-27 07:42:59 +08:00 都用json |
![]() | 11 ipconfiger 2013-08-27 09:40:31 +08:00 哈哈,可以试试我这个方案 https://github.com/ipconfiger/free4my |
12 clowwindy 2013-08-27 11:28:00 +08:00 via iPhone 我一般分 db 而不是加前缀。 |
![]() | 13 est 2013-08-27 11:44:40 +08:00 |
![]() | 14 ipconfiger 2013-08-27 11:55:41 +08:00 @est 没事,我本地虚拟机上的db |
15 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 |