Oh!Coder

Coding Life

Redis-namespace Gem简介

| Comments

嗯,这两天在研究Redis,按照逻辑关系,应该先介绍Redis-rb这个Gem。但是工作中先接触到的Gem是Redis-namepace,这个Gem是Redis-rb的一个精简的封装,索性还是先介绍Redis-namespace了。下个星期再介绍Redis-rb

功能简介

Redis::Namespaceredis的关键字集合提供了一个子集接口,使用这个Gem依赖于redis-rb。使用上来说,感觉最后还是要对Redis有个了解更好,文档里也只是举了几个简单的使用例子,所以这里也不过多的去详细举例了。安装很简单,只需要在terminal里输入gem install redis-namespace命令就好了,或者在Gemfile里添加gem 'redis-namespace',然后执行bundle install命令。

基本使用

可以在Ruby的irb环境下操作,注意在连接Redis服务器之前,记得先在新开terminal的窗口中输入命令redis-server,把Redis的服务器启动起来。

好,下面的操作都可以在irb环境下执行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
require 'redis-namespace'
# => true

redis_connection = Redis.new
# => #<Redis client v3.1.0 for redis://127.0.0.1:6379/0>
namespaced_redis = Redis::Namespace.new(:ns, :redis => redis_connection)
# => #<Redis::Namespace v1.5.0 with client v3.1.0 for redis://127.0.0.1:6379/0/ns>

namespaced_redis.set('foo', 'bar') # redis_connection.set('ns:foo', 'bar')
# => "OK"

# 在发给我们的redis client之前,
# Redis::Namespace 会自动把namespace添加到到关键字的前面

namespaced_redis.get('foo')
# => "bar"
redis_connection.get('ns:foo')
# => "bar"

namespaced_redis.del('foo')
# => 1
namespaced_redis.get('foo')
# => nil
redis_connection.get('ns:foo')
# => nil

根据文档,例子就举这么多吧。

注意事项

Redis-rb这个Gem中为Redis提供了签名方法的内部注册表,Redis::Namespace为此提供了一个命名空间的接口,这个接口可以追踪哪些参数需要添加命名空间,哪些参数需要移除命名空间。

除此之外,还有一些历史遗留问题。这些遗留问题,文档中说会在2.0版本里解决,具体内容这里就不赘述了,详情可以见原文档

Comments