�����������돢���� Ruby ������»��������������� memcached ������\������¼\��ď����� set ���·���������¹��¡�
#!/usr/bin/ruby require 'rubygems' require 'activerecord' require 'memcache' class Hoge < ActiveRecord::Base establish_connection( 'adapter' => 'mysql', 'host' => 'localhost', 'database' => 'test', 'username' => 'USER', 'password' => 'PASS', 'encoding' => 'utf8' ) set_table_name :hoge end cache = MemCache::new '127.0.0.1:11211' # ������»��⏪�� cache['hogehoge'] = 'fugafuga' # ActiveRecord ������¼������������·������\������¼\��� hoge = Hoge.find(1) cache['activerecord'] = hoge # \���\���\·\��� hash = {} hash['hoge'] = 100 hash['fuga'] = 200 cache['foo'] = hash
��������¡��³������������ Perl ������������������¹��Џ����я����������Ώ��������¹��¡�
#!/usr/bin/perl use strict; use warnings; use Cache::Memcached; use Data::Dumper; my $cache = Cache::Memcached->new({ servers => ['127.0.0.1:11211'] }); warn Dumper $cache->get('hogehoge'); # fugafuga'; warn Dumper $cache->get('activerecord'); # $VAR1 = o: Hoge:@attributes{" name"\\"id"1:@attributes_cache{'; warn Dumper $cache->get('foo'); # $VAR1 = {" fugai hogeii';
���Ï��Ï���²��ď��«�����Џ��������¹��¡�\������¼\��ď���¼��؏���¼��������������������������������������������������돢�������������������������·���������������������¹��¡�¡���»��⏪�я����������я��«���������µ���·������¼��؏���¼��������������������������������������Ï��������«��𡯏��������¹���̏�¡��³�����������������㏪�����������돫����������������¹��¡��³�����я�����\³���¼\���������������¾��⏢�·�����������Ώ��������·�����ď�¡�
#!/usr/bin/perl use strict; use warnings; use Cache::Memcached; use Data::Dumper; my $cache = Cache::Memcached->new({ servers => ['127.0.0.1:11211'] }); my $hash = { fugafuga => 1 }; my $hogehoge = $cache->get('hogehoge'); warn Dumper $hash->{$hogehoge}; # undef
\������¼\��ď��̏��µ���·������¼��؏���¼������������������������������Ð���������������������� 'fugafuga' ���̏��µ���·������¼��؏���¼������������������������������Ð������¡�undef ��������������������������¡�1 ���̏����������������������������������돢�������¹��¡��³���������؏���������돩̏����ҏ��µ�����������ď�������������¡�Ruby ������ memcache-client ������\½���¼\¹\³���¼\���������\���\��\���\������·�����������Ώ����ď��������³��������¡��³���̏��������«���������������·�����ď�¡�
# /usr/lib/ruby/gems/1.8/gems/memcache-client-1.7.5/lib/memcache.rb �����¡돫�������
alias [] get def []=(key, value) set key, value end # set def set(key, value, expiry = 0, raw = false) raise MemCacheError, "Update of readonly cache" if @readonly value = Marshal.dump value unless raw with_server(key) do |server, cache_key| logger.debug { "set #{key} to #{server.inspect}: #{value.to_s.size}" } if logger if @check_size && value.to_s.size > ONE_MB raise MemCacheError, "Value too large, memcached can only store 1MB of data per key" end command = "set #{cache_key} 0 #{expiry} #{value.to_s.size}#{noreply}\r\n#{value}\r\n" with_socket_management(server) do |socket| socket.write command break nil if @no_reply result = socket.gets raise_on_error_response! result if result.nil? server.close raise MemCacheError, "lost connection to #{server.host}:#{server.port}" end result end end end #get def get(key, raw = false) with_server(key) do |server, cache_key| logger.debug { "get #{key} from #{server.inspect}" } if logger value = cache_get server, cache_key return nil if value.nil? value = Marshal.load value unless raw return value end rescue TypeError => err handle_error nil, err end
�����������돢¡�[] ������ set ������\��\���\���\��\¹���·���������������������¹���̏�¡��½������ set ������������������¡�Marshal.dump ���·������\·\���\��\���\���\��돢�·���������������������¹���� raw ���� false �������������������¡��½���·������\������¼\��ď�����¼���������½Ð���¹��������������������� get ���·���������¹���̏�¡��½���������������� Marshal.load ���·������\���\·\���\��\���\���\��돢�·�����������������������������Ï��������¹���� raw ���� false �������������������¡�����������������¡�Ruby ������ set ���·�����ď��������������� Perl ������������������������¼��؏���¼������������������������½������������\·\���\��\���\���\��돢�µ������������\������¼\��ď������������������½���������������������������������̏����Џ�����������������»�����я�¡��«��������������������������¡�Perl ������ Storable \���\���\������¼\���������»�����𡯏��Ð�����䏢�µ½Ð���������½�����Ï��������¹���̏�¡����Ï�����������½Ð���������������»�����я��������·�����ď�¡�¡��㏪����������·���¼�돢�̡돫������Ï������«���������폢�·���������������»�����я�¡�
���½���³��������¡��½���������½������\·\���\��\���\���\��돢�·�����������������������Ï��������·�����������Ώ��������¹��¡��³������������ raw ������ true �����ҏ����������Џ��·�����������²���������Ð���������������¹��¡��³�����Ï��¹���������Ð��¡���»��⏪�я�����¾���¹���������������\������¼\��ď����� set, get ��������������������������������������я�����¹��ԏ����Ï��³����������½Ð���������������·�����ď�¡����������� ActiveRecord ������\���\���\·\���������¾���¹���������������\������¼\��ď����� set ������\��\������¼���������������������������·���������������������¹��¡�¡�����������¡�¡��½���������ď�����������\·\���\��\���\���\��돢�������¹��������������¡�(�����\��¾)
#!/usr/bin/ruby require 'rubygems' require 'activerecord' require 'memcache' class Hoge < ActiveRecord::Base establish_connection( 'adapter' => 'mysql', 'host' => 'localhost', 'database' => 'test', 'username' => 'USER', 'password' => 'PASS', 'encoding' => 'utf8' ) set_table_name :hoge end cache = MemCache::new '127.0.0.1:11211' cache.set('hogehoge', 'fugafuga', 0, true) hash = {} hash['hoge'] = 100 hash['fuga'] = 200 cache.set('foo', hash, 0, true) # \��\������¼ hoge = Hoge.find(1) cache.set('activerecord', hoge, 0, true) # \��\������¼
���µ��������¡��³���������������Ï�����¾���¹�����������������¡��������Џ�����\������¼\���·���¼�돢����»��������Ï��³������������²���·���������������������¹��¡�XML ������ JSON ������������������������·���¼�돢�������¹��¡�����𡯏��Ð JSON ·���¼�돢���ҏ����̏����Џ��·�����������Ώ��������·�����������Ï�¡�
���³���������������Ï����� Ruby ������ \������¼\��ď����ҏ�돫�����·��¡��½������������ JSON ·���¼�돢���������С�¹���·���������¹��¡��½������\������¼\��ď�����memcached ������ set ���·���������¹��¡��³���������������¡���4�돫⏢ď�� (raw) ������ true ���������·��������¡�\·\���\��\���\���\��돢����¹��ԏ����������������������������Ï��������·���������������������³�������������������돪؏��·���������������������µ��������¡����������������Ώ�����������3�돫⏢ď�ԏ����� expires ���������¹���̏�¡��³������������ 0 �����������Ώ��������·������¾���¹������������������½������\������¼\��ď���¾�����𡯏��������³�����������������������������»�����я���\������¼\��ď�����\µ���¼\Ð����µ�������돢�·�����������������������������������돢����������������»����µ������������������¡�
#!/usr/bin/ruby require 'rubygems' require 'activerecord' require 'memcache' class Hoge < ActiveRecord::Base establish_connection( 'adapter' => 'mysql', 'host' => 'localhost', 'database' => 'test', 'username' => 'USER', 'password' => 'PASS', 'encoding' => 'utf8' ) set_table_name :hoge end cache = MemCache::new '127.0.0.1:11211' hash = { 'key1' => 'data1', 'key2' => 'data2' } cache.set('json', hash.to_json, 0, true)
���½������������¡�Perl ������\������¼\��ď�����¼��؏���¼�����������������¡�JSON ���«������\���\���\·\��������������������С�¹���¹���������³����������½Ð���������������·�����ď�¡��³���������������Ï��������¹���������Ð�돪叢��������������������������ӏ�����������\������¼\��ď���������������¼��������������ҏ��¹���������³����������½Ð���������������¹��������¡�\¹\Ð\���\·\¹��¡�
#!/usr/bin/perl use strict; use warnings; use Cache::Memcached; use JSON; use Data::Dumper; my $cache = Cache::Memcached->new({ servers => ['127.0.0.1:11211'] }); my $json = $cache->get('json'); warn Dumper from_json($json); # $VAR1 = { # 'key2' => 'data2', # 'key1' => 'data1' # };