memcachedの代わりにkyoto tycoonを試してみようとしています。
kyoto tycoonはmemcachedと同じインターフェースで起動できるとのことで、当然memcachedライブラリが使えます
日本語のキーが使えるかどうか確認します
- memcachedライブラリ
1 2 3 | $ su # export http_proxy=proxy:port # gem install memcached |
1 2 3 4 5 6 7 8 9 10 11 12 | #!/bin/env ruby -Ku # -*- encoding:utf-8 -*- require "rubygems" require "memcached" require "nkf" cache=Memcached.new "localhost:11211" cache.set("sony","6758",0) puts cache.get("sony") key="ソニー" cache.set(key,"ソニー",0) puts cache.get(key) |
1 2 3 4 5 6 | $ ruby mem.rb 6758 /Library/Ruby/Gems/1.8/gems/memcached-1.5.0/lib/memcached/memcached.rb:630:in `reraise': Key {"ソニー"=>nil} (Memcached::ABadKeyWasProvidedOrCharactersOutOfRange) from /Library/Ruby/Gems/1.8/gems/memcached-1.5.0/lib/memcached/memcached.rb:608:in `check_return_code' from /Library/Ruby/Gems/1.8/gems/memcached-1.5.0/lib/memcached/memcached.rb:306:in `set' from mem.rb:11 |
なんかだめ。。
ちなみにperlだと
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/usr/bin/perl use strict; use warnings; use Cache::Memcached::Fast; my $memd=Cache::Memcached::Fast->new({ servers => [ { address => 'localhost:11211' }], }); # 値を追加 key => value my $key='ソニーal'; $memd->set($key=> 'そにー2'); # 値を取得 my $id = $memd->get($key); print "$id\n"; |
1 2 | $ perl mem.pl そにー2 |
rubyのライブラリが悪いようだ
ちなみにOSはMountain Lion