[从入门到脱鞋] Redis Hello World
night_stalker
2010-11-13
>>= Redis Hello World
redis 是非常小(gz 包只有 300 多 k)的,all-in-memory 的数据结构内存数据库。 * 内存才是本体,当缓存用的时候比 memcached 快。 * 可以通过 append-log 方式持久化。还提供了修整损坏的 log 的工具(redis-check-aof)。 log 可以通过 bgrewriteaof 操作重写以缩小占用磁盘空间。 -- 能持久化就能当数据库用啦! * 所有 key 都在内存中,但是可以通过配置 virtual memory 让不常用的 value 存到磁盘中。 * 虽然非常简单,但是使用 nest gem 和 ohm gem 可以让它表现得比较像 sql 数据库。 >>= hello world 解压源码包,make (mingw 不行,里面有 fork 之类的东西,cygwin 可以) 不需要 install,对没有 root 权限的情况是福音 …… 启动服务器: 同一目录下 ./redis-server 配置是自明的,见同一目录下的 redis.conf >>= 数据类型 bottom type: none 基本: string 集合: list, set, zset(有序set), hash 集合操作方法相应的以 l, s, z, h 开头 限制: 集合的元素必须是 string 但是这个限制可以通过 nest gem 解决,不用担心。 >>= 所有命令参考 有比较丰富的集合操作方法。见命令总集。 常用命令见 redis-rb 的 readme redis-rb 的所有命令参考 >>= 事务操作 multi ... exec / discard 在 redis-rb 里面,用 multi 加个 block 就可以了 >>= 持久化频率(配置 fsync) always: 每个记录都保存,很慢很安全 everysecond: 很快较安全(最多丢失一秒数据) never: 纯作缓存用而不是数据库用的时候 .. >>= 缓存用的命令 expire 设置 key 在多久后失效 ttl 查看 key 的剩余时间 >>= ohm (object - hash - mapping) 装上 ohm, nest, 和 redis-rb 客户端 gem in ohm ohm 提供了 常见场景的设计例子,非常的速成。 一点限制 写道 Operations on attributes of type list, set and counter are possible only after the object is created
要注意 ohm 的 macro 方法 attribute, set, list, counter, reference, collection 并不能生成基本集合(元素为字符串而非 Model 实例的引用)的属性,也就是你只能用 set :person, Person ,不能用 set :person, String。解决方法是使用实例方法 key: obj.key[:person].sadd 'abc' key[:symbol] 的方法和 redis 命令列表是一致的。 额外收获: cutest Ohm::Model::Wrapper 是个 Monad 呢 …… >>= 其他 tricks 有些操作需要在同一服务器上的东西才能搞,如 intersect。 什么,不知道什么是 intersect? intercourse 知道吧?所以速配网站非常需要 intersect! redis-rb 比较聪明,会将比较相同的 key 放到同一个服务器中。 所以如果要对 "x" 和 "y" 的值进行 intersect 操作,可以用 redis-rb 把它们存为 "abcde_x" 和 "abcde_y" 的值。 >>= 其他链接 redis + sinatra 搭建小抄,完败 ever note https://gist.github.com/93567/31c3c0a995066ca9008fab77c0c62922c15157a1 两个 init.d https://gist.github.com/378102 https://gist.github.com/286422 实现自动完成一例 http://antirez.com/post/autocomplete-with-redis.html |
|
易卡螺丝君
2010-11-13
现在mongodb的风头完全盖过了redis
|
|
night_stalker
2010-11-13
我喜欢小萝莉不喜欢大肥婆
|
|
易卡螺丝君
2010-11-13
为啥用白色字体...
|
|
花花公子
2010-11-13
ns你怎么看couchdb?
|
|
night_stalker
2010-11-14
白色好看 ……
couchdb 要装 erlang runtime 很麻烦吧 …… 没看过 |
|
mathgl
2010-11-14
cygwin version的redis 性能很是一般....
|
|
crackcell
2010-11-24
刚在真实项目中引进redis存大数据,表现非常满意。
|
|
java_xiaoyi
2011-07-15
易卡螺丝君 写道 现在mongodb的风头完全盖过了redis
额...下面不说我还以为没有字... |