{"id":442,"date":"2014-02-27T14:43:09","date_gmt":"2014-02-27T05:43:09","guid":{"rendered":"http:\/\/lovelinux.mydns.jp\/?p=442"},"modified":"2014-03-21T17:15:43","modified_gmt":"2014-03-21T08:15:43","slug":"ruby%e3%81%ae%e3%82%af%e3%83%a9%e3%82%b9%e3%82%92redis%e3%81%ab%e4%bf%9d%e5%ad%98%e3%80%81%e5%be%a9%e5%85%83%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b","status":"publish","type":"post","link":"https:\/\/lovelinux.mydns.jp\/?p=442","title":{"rendered":"Ruby\u306e\u30af\u30e9\u30b9\u3092Redis\u306b\u4fdd\u5b58\u3001\u5fa9\u5143\u3057\u3066\u307f\u308b"},"content":{"rendered":"<p>Redis\u3092\u4f7f\u3044\u59cb\u3081\u307e\u3057\u305f\u3002\u306a\u304b\u306a\u304b\u9762\u767d\u3044\u3067\u3059\u306d\u3002\u4eca\u56de\u306f\u5358\u7d14\u306a\u6587\u5b57\u5217\u306e\u30ad\u30fc\u30fb\u30d0\u30ea\u30e5\u30fc\u3067\u306f\u306a\u304f\u3001Ruby\u306e\u30af\u30e9\u30b9\u60c5\u5831\u3092Redis\u306b\u4fdd\u5b58\u3057\u3001\u518d\u3073\u30af\u30e9\u30b9\u306b\u5fa9\u5143\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8a18\u8f09\u3057\u307e\u3059\u3002<\/p>\n<p>Redis\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001<a href=\"http:\/\/lovelinux.mydns.jp\/?p=438\">\u3053\u306e\u8a18\u4e8b<\/a>\u3092\u53c2\u7167\u304f\u3060\u3055\u3044\u3002<\/p>\n<h4>\u307e\u305a\u306f\u5358\u7d14\u306a\u6587\u5b57\u5217\u3092Ruby\u3067\u4fdd\u5b58\u3001\u53d6\u5f97\u3057\u3066\u307f\u307e\u3059\u3002<\/h4>\n<p>[ruby]<br \/>\nrequire &#8220;redis&#8221;<br \/>\nredis = Redis.new<\/p>\n<p>p &#8220;&#8212;&#8212; test simple key &#038; value &#8212;&#8212; &#8221;<br \/>\n#\u4e2d\u8eab\u304c\u7a7a\u306e\u307b\u3046\u304c\u826f\u3044\u306e\u3067\u3001DB\u756a\u53f7\uff13\u3092\u9078\u629e<br \/>\nredis.select(3)<\/p>\n<p>p redis.keys(&#8220;*&#8221;)<\/p>\n<p>#\u30b7\u30f3\u30d7\u30eb\u306a\u30ad\u30fc\u3068\u30d0\u30ea\u30e5\u30fc\u3092\u4fdd\u5b58<br \/>\nredis.set(&#8220;aaa&#8221;,&#8221;taro&#8221;)<br \/>\nredis.set(&#8220;bbb&#8221;,&#8221;hanako&#8221;)<\/p>\n<p>redis.keys(&#8220;*&#8221;).each do |key|<br \/>\n\tp &#8220;key = #{key} value = #{redis.get(key)}&#8221;<br \/>\nend<br \/>\n[\/ruby]<\/p>\n<h4>\u5b9f\u884c\u7d50\u679c<\/h4>\n<p>[bash]<br \/>\n&#8220;&#8212;&#8212; test simple key &#038; value &#8212;&#8212; &#8221;<br \/>\n[]<br \/>\n&#8220;key = bbb value = hanako&#8221;<br \/>\n&#8220;key = aaa value = taro&#8221;<\/p>\n<p>[\/bash]<\/p>\n<h4>\u30af\u30e9\u30b9\u3092\u4f5c\u308a\u307e\u3059\u3002\uff08Person\u30af\u30e9\u30b9\uff09<\/h4>\n<p>[ruby]<br \/>\nclass Person<br \/>\n\tattr_accessor :id , :name , :age<\/p>\n<p>\tdef initialize(id,name,age)<br \/>\n\t\t@id = id<br \/>\n\t\t@name = name<br \/>\n\t\t@age = age<br \/>\n\tend<\/p>\n<p>\tdef to_json(*a)<br \/>\n\t\t{<br \/>\n\t\t\t:id => @id,<br \/>\n\t\t\t:name => @name,<br \/>\n\t\t\t:age => @age<br \/>\n\t\t}.to_json<br \/>\n\tend<\/p>\n<p>\tdef self.from_json(json)<br \/>\n\t\tobj = self.new(1,2,3) #\u9069\u5f53\u306a\u5024\u3092\u7a81\u3063\u8fbc\u3080<\/p>\n<p>\t\tobj.id = json[&#8220;id&#8221;]<br \/>\n\t\tobj.name = json[&#8220;name&#8221;]<br \/>\n\t\tobj.age = json[&#8220;age&#8221;]<\/p>\n<p>\t\treturn obj<br \/>\n\tend<\/p>\n<p>end<\/p>\n<p>[\/ruby]<\/p>\n<h4>\u30af\u30e9\u30b9\u30c7\u30fc\u30bf\u3092Redis\u306b\u4fdd\u5b58\u3057\u3001\u5fa9\u5143\u3057\u3066\u307f\u307e\u3059\u3002<\/h4>\n<p>Redis\u306f\u56fa\u6709\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u4fdd\u6301\u3067\u304d\u306a\u3044\u306e\u3067\u3001\u30af\u30e9\u30b9\u30c7\u30fc\u30bf\u3092json\u306b\u30b7\u30ea\u30a2\u30e9\u30a4\u30ba\u3057\u305f\u3082\u306e\u3092\u4fdd\u5b58\u3057\u307e\u3059\u3002\u30af\u30e9\u30b9\u306eto_json\u30e1\u30bd\u30c3\u30c9\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u52d5\u304d\u3067\u306f\u3046\u307e\u304f\u52d5\u4f5c\u3057\u306a\u3044\u306e\u3067\u3001\u4e0a\u8a18\u306ePerson\u30af\u30e9\u30b9\u306b to_json(*a)\u3000\u30e1\u30bd\u30c3\u30c9\u3092\u5b9a\u7fa9\u3057\u3066\u3084\u308b\u3053\u3068\u3067\u5bfe\u5fdc\u3057\u307e\u3059\u3002\u30af\u30e9\u30b9\u30c7\u30fc\u30bf\u306e\u5fa9\u5143\u306fRedis\u304b\u3089JSON\u6587\u5b57\u5217\u3092\u53d6\u5f97\u3057\u3001\u30d1\u30fc\u30b9\u3002\u305d\u306e\u5f8c\u3000Person\u30af\u30e9\u30b9\u306b\u5b9a\u7fa9\u3057\u305f\u3000self.from_json(json)\u30e1\u30bd\u30c3\u30c9\u3067\u5fa9\u5143\u3057\u307e\u3059\u3002<\/p>\n<p>[ruby]<br \/>\nrequire &#8220;redis&#8221;<br \/>\nrequire &#8220;json&#8221;<\/p>\n<p>redis = Redis.new<\/p>\n<p>p &#8220;&#8212;&#8212; test class save &#038; restore &#8212;&#8212; &#8221;<\/p>\n<p>#\u4e2d\u8eab\u304c\u7a7a\u306e\u307b\u3046\u304c\u826f\u3044\u306e\u3067\u3001DB\u756a\u53f7\uff13\u3092\u9078\u629e<br \/>\nredis.select(3)<\/p>\n<p>#\u30af\u30e9\u30b9\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58<br \/>\nps = Person.new(1,&#8221;taro&#8221;,18)<br \/>\nredis.set(&#8220;ps-1&#8243;, ps.to_json())<\/p>\n<p>ps = Person.new(2,&#8221;hanako&#8221;,23)<br \/>\nredis.set(&#8220;ps-2&#8221;, ps.to_json())<\/p>\n<p>redis.keys(&#8220;ps-*&#8221;).each do |key|<br \/>\n\tp &#8220;key = #{key} value = #{redis.get(key)}&#8221;<br \/>\nend<\/p>\n<p>#\u30af\u30e9\u30b9\u30c7\u30fc\u30bf\u3092\u5fa9\u5143<br \/>\njson = JSON.parse(redis.get(&#8220;ps-1&#8221;))<br \/>\nps = Person.from_json(json)<\/p>\n<p>p &#8220;Person id=#{ps.id} \/ name=#{ps.name} \/ age=#{ps.age}&#8221;<\/p>\n<p>redis.flushdb<\/p>\n<p>[\/ruby]<\/p>\n<h4>\u5b9f\u884c\u7d50\u679c<\/h4>\n<p>[bash]<br \/>\n&#8220;&#8212;&#8212; test class save &#038; restore &#8212;&#8212; &#8221;<br \/>\n&#8220;key = ps-2 value = {\\&#8221;id\\&#8221;:2,\\&#8221;name\\&#8221;:\\&#8221;hanako\\&#8221;,\\&#8221;age\\&#8221;:23}&#8221;<br \/>\n&#8220;key = ps-1 value = {\\&#8221;id\\&#8221;:1,\\&#8221;name\\&#8221;:\\&#8221;taro\\&#8221;,\\&#8221;age\\&#8221;:18}&#8221;<br \/>\n&#8220;Person id=1 \/ name=taro \/ age=18&#8221;<\/p>\n<p>[\/bash]<\/p>\n<p>\u30b7\u30f3\u30d7\u30eb\u3067\u3059\u304c\u3001\u3053\u3046\u3044\u3046\u3053\u3068\u304c\u3067\u304d\u308b\u3068\u3044\u308d\u3044\u308d\u306a\u5fdc\u7528\u304c\u3067\u304d\u308b\u3068\u601d\u3044\u307e\u3059\u3002\u826f\u304b\u3063\u305f\u3089\u4e00\u5ea6\u8a66\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Redis\u3092\u4f7f\u3044\u59cb\u3081\u307e\u3057\u305f\u3002\u306a\u304b\u306a\u304b\u9762\u767d\u3044\u3067\u3059\u306d\u3002\u4eca\u56de\u306f\u5358\u7d14\u306a\u6587\u5b57\u5217\u306e\u30ad\u30fc\u30fb\u30d0\u30ea\u30e5\u30fc\u3067\u306f\u306a\u304f\u3001Ruby\u306e\u30af\u30e9\u30b9\u60c5\u5831\u3092Redis\u306b\u4fdd\u5b58\u3057\u3001\u518d\u3073\u30af\u30e9\u30b9\u306b\u5fa9\u5143\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8a18\u8f09\u3057\u307e\u3059\u3002 Redis\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001\u3053\u306e\u8a18\u4e8b\u3092\u53c2\u7167\u304f\u3060\u3055\u3044\u3002 \u307e\u305a\u306f\u5358\u7d14\u306a\u6587\u5b57\u5217\u3092Ruby\u3067\u4fdd\u5b58\u3001\u53d6\u5f97\u3057\u3066\u307f\u307e\u3059\u3002 [ruby] require &#8220;redis&#8221; redis = Redis.new p &#8220;&#8212;&#8212; test simple key &#038; value &#8212;&#8212; &#8221; #\u4e2d\u8eab\u304c\u7a7a\u306e\u307b\u3046\u304c\u826f\u3044\u306e\u3067\u3001DB\u756a\u53f7\uff13\u3092\u9078\u629e redis.select(3) p redis.keys(&#8220;*&#8221;) #\u30b7\u30f3\u30d7\u30eb\u306a\u30ad\u30fc\u3068\u30d0\u30ea\u30e5\u30fc\u3092\u4fdd\u5b58 redis.set(&#8220;aaa&#8221;,&#8221;taro&#8221;) redis.set(&#8220;bbb&#8221;,&#8221;hanako&#8221;) redis.keys(&#8220;*&#8221;).each do |key| p &#8220;key = #{key} value = #{redis.get(key)}&#8221; end [\/ruby] \u5b9f\u884c\u7d50\u679c [bash] &#8220;&#8212;&#8212; test simple key &#038; value &#8212;&#8212; &#8221; [] &#8220;key = bbb value = hanako&#8221; &#8220;key = aaa value = taro&#8221; [\/bash] \u30af\u30e9\u30b9\u3092\u4f5c\u308a\u307e\u3059\u3002\uff08Person\u30af\u30e9\u30b9\uff09 [ruby] class Person attr_accessor :id , :name , :age def initialize(id,name,age) @id = id @name = name @age = age end def to_json(*a) { :id => @id, :name => @name, :age => @age }.to_json end def self.from_json(json) obj = self.new(1,2,3) #\u9069\u5f53\u306a\u5024\u3092\u7a81\u3063\u8fbc\u3080 obj.id = json[&#8220;id&#8221;] obj.name = json[&#8220;name&#8221;] obj.age = json[&#8220;age&#8221;] return obj end end [\/ruby] \u30af\u30e9\u30b9\u30c7\u30fc\u30bf\u3092Redis\u306b\u4fdd\u5b58\u3057\u3001\u5fa9\u5143\u3057\u3066\u307f\u307e\u3059\u3002 Redis\u306f\u56fa\u6709\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u306f\u4fdd\u6301\u3067\u304d\u306a\u3044\u306e\u3067\u3001\u30af\u30e9\u30b9\u30c7\u30fc\u30bf\u3092json\u306b\u30b7\u30ea\u30a2\u30e9\u30a4\u30ba\u3057\u305f\u3082\u306e\u3092\u4fdd\u5b58\u3057\u307e\u3059\u3002\u30af\u30e9\u30b9\u306eto_json\u30e1\u30bd\u30c3\u30c9\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u52d5\u304d\u3067\u306f\u3046\u307e\u304f\u52d5\u4f5c\u3057\u306a\u3044\u306e\u3067\u3001\u4e0a\u8a18\u306ePerson\u30af\u30e9\u30b9\u306b to_json(*a)\u3000\u30e1\u30bd\u30c3\u30c9\u3092\u5b9a\u7fa9\u3057\u3066\u3084\u308b\u3053\u3068\u3067\u5bfe\u5fdc\u3057\u307e\u3059\u3002\u30af\u30e9\u30b9\u30c7\u30fc\u30bf\u306e\u5fa9\u5143\u306fRedis\u304b\u3089JSON\u6587\u5b57\u5217\u3092\u53d6\u5f97\u3057\u3001\u30d1\u30fc\u30b9\u3002\u305d\u306e\u5f8c\u3000Person\u30af\u30e9\u30b9\u306b\u5b9a\u7fa9\u3057\u305f\u3000self.from_json(json)\u30e1\u30bd\u30c3\u30c9\u3067\u5fa9\u5143\u3057\u307e\u3059\u3002 [ruby] require &#8220;redis&#8221; require &#8220;json&#8221; redis = Redis.new p &#8220;&#8212;&#8212; test class save &#038; restore &#8212;&#8212; &#8221; #\u4e2d\u8eab\u304c\u7a7a\u306e\u307b\u3046\u304c\u826f\u3044\u306e\u3067\u3001DB\u756a\u53f7\uff13\u3092\u9078\u629e redis.select(3) #\u30af\u30e9\u30b9\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58 ps = Person.new(1,&#8221;taro&#8221;,18) redis.set(&#8220;ps-1&#8243;, ps.to_json()) ps = Person.new(2,&#8221;hanako&#8221;,23) redis.set(&#8220;ps-2&#8221;, ps.to_json()) redis.keys(&#8220;ps-*&#8221;).each do |key| p &#8220;key = #{key} value = #{redis.get(key)}&#8221; end #\u30af\u30e9\u30b9\u30c7\u30fc\u30bf\u3092\u5fa9\u5143 json = JSON.parse(redis.get(&#8220;ps-1&#8221;)) ps = Person.from_json(json) p &#8220;Person id=#{ps.id} \/ name=#{ps.name} \/ age=#{ps.age}&#8221; redis.flushdb [\/ruby] \u5b9f\u884c\u7d50\u679c [bash] &#8220;&#8212;&#8212; test class save &#038; restore &#8212;&#8212; &#8221; &#8220;key = ps-2 value = {\\&#8221;id\\&#8221;:2,\\&#8221;name\\&#8221;:\\&#8221;hanako\\&#8221;,\\&#8221;age\\&#8221;:23}&#8221; &#8220;key = ps-1 value = {\\&#8221;id\\&#8221;:1,\\&#8221;name\\&#8221;:\\&#8221;taro\\&#8221;,\\&#8221;age\\&#8221;:18}&#8221; &#8220;Person id=1 \/ name=taro \/ age=18&#8221; [\/bash] \u30b7\u30f3\u30d7\u30eb\u3067\u3059\u304c\u3001\u3053\u3046\u3044\u3046\u3053\u3068\u304c\u3067\u304d\u308b\u3068\u3044\u308d\u3044\u308d\u306a\u5fdc\u7528\u304c\u3067\u304d\u308b\u3068\u601d\u3044\u307e\u3059\u3002\u826f\u304b\u3063\u305f\u3089\u4e00\u5ea6\u8a66\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n","protected":false},"author":1,"featured_media":444,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[6,2],"tags":[17,16],"class_list":{"0":"post-442","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-rails","8":"category-2","9":"tag-redis","10":"tag-ruby"},"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/lovelinux.mydns.jp\/index.php?rest_route=\/wp\/v2\/posts\/442","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lovelinux.mydns.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lovelinux.mydns.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lovelinux.mydns.jp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lovelinux.mydns.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=442"}],"version-history":[{"count":2,"href":"https:\/\/lovelinux.mydns.jp\/index.php?rest_route=\/wp\/v2\/posts\/442\/revisions"}],"predecessor-version":[{"id":589,"href":"https:\/\/lovelinux.mydns.jp\/index.php?rest_route=\/wp\/v2\/posts\/442\/revisions\/589"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lovelinux.mydns.jp\/index.php?rest_route=\/wp\/v2\/media\/444"}],"wp:attachment":[{"href":"https:\/\/lovelinux.mydns.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=442"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lovelinux.mydns.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=442"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lovelinux.mydns.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}