{"id":556,"date":"2019-08-17T14:11:09","date_gmt":"2019-08-17T05:11:09","guid":{"rendered":"https:\/\/took.jp\/?p=556"},"modified":"2020-06-15T15:46:36","modified_gmt":"2020-06-15T06:46:36","slug":"post-556","status":"publish","type":"post","link":"https:\/\/took.jp\/tech-blog\/post-556\/","title":{"rendered":"CentOS7.x PHP5.x  Redis\u30fbphpredis\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806"},"content":{"rendered":"<p>Redis\u3068\u306f...<\/p>\n<blockquote><p>Redis\u306f\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u63a5\u7d9a\u3055\u308c\u305f\u6c38\u7d9a\u5316\u53ef\u80fd\u306a\u30a4\u30f3\u30e1\u30e2\u30ea\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3002\u9023\u60f3\u914d\u5217\uff08\u30ad\u30fc\u30fb\u30d0\u30ea\u30e5\u30fc\uff09\u3001\u30ea\u30b9\u30c8\u3001\u30bb\u30c3\u30c8\u306a\u3069\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u6271\u3048\u308b\u3002\u3044\u308f\u3086\u308bNoSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u4e00\u3064\u3002\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3042\u308a\u3001Redis Labs\uff08\u82f1\u8a9e\u7248\uff09\u304c\u30b9\u30dd\u30f3\u30b5\u30fc\u3068\u306a\u3063\u3066\u958b\u767a\u3055\u308c\u3066\u3044\u308b[4]\u3002\uff08\u4ee5\u4e0b\u7565\uff09<\/p>\n<div class=\"blockquote_ref\">\n<div><a href=\"https:\/\/ja.wikipedia.org\/wiki\/Redis\" target=\"_blank\" rel=\"noopener noreferrer\">Wikipedia<\/a><\/div>\n<\/div>\n<\/blockquote>\n<p>&nbsp;<\/p>\n<p>\u7c21\u5358\u306b\u3044\u3046\u3068\u9ad8\u901f\u306b\u8aad\u307f\u66f8\u304d\u3067\u304d\u308bKVS\u3067\u3059\u3002<\/p>\n<p>Mysql\u306e\u3088\u3046\u306aRDBMS\u3068\u306f\u9055\u3044\u3001\u3068\u3066\u3082\u30b7\u30f3\u30d7\u30eb\u306a\u69cb\u9020\u3067\u30c7\u30fc\u30bf\u3092\u4fdd\u7ba1\u3057\u307e\u3059\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>Redis\u306b\u3064\u3044\u3066\u306e\u60c5\u5831\u306f\u5c11\u306a\u304f\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306b\u3082\u304b\u306a\u308a\u82e6\u52b4\u3057\u305f\u306e\u3067\u3001\u81ea\u5206\u306e\u8e93\u3044\u305f\u30dd\u30a4\u30f3\u30c8\u3092\u542b\u3081\u3001\u624b\u9806\u3092\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n<p>\u304a\u305d\u3089\u304f\u3001\u30c0\u30d6\u3063\u3066\u3044\u308b\uff08\u5fc5\u8981\u306e\u306a\u3044\uff09\u624b\u9806\u3082\u3042\u308b\u3068\u601d\u3044\u307e\u3059\u306e\u3067\u3001\u6c17\u3065\u3044\u305f\u65b9\u306f\u3053\u305d\u3063\u3068\u6559\u3048\u3066\u304f\u3060\u3055\u3044\u7b11<\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u79c1\u306e\u74b0\u5883\u306b\u3064\u3044\u3066<\/strong><\/p>\n<p>PHP 5.5.18<\/p>\n<p>CentOS 7.6.1810<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806<\/h2>\n<p><strong>epel\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">sudo yum -y install epel-release<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p><strong>remi\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">sudo rpm -ivh http:\/\/rpms.famillecollet.com\/enterprise\/remi-release-7.rpm<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p><strong>epel\u3068remi\u3092\u7121\u52b9\u5316<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">sudo sed -i 's\/enabled=1\/enabled=0\/g' \/etc\/yum.repos.d\/epel*\r\nsudo sed -i 's\/enabled=1\/enabled=0\/g' \/etc\/yum.repos.d\/remi*<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Redis\u3092yum\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">sudo yum install --enablerepo=epel,remi redis<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\u30d0\u30fc\u30b8\u30e7\u30f3\u8868\u793a\uff08\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u78ba\u8a8d\uff09<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">redis-cli -v<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Redis\u306e\u8d77\u52d5<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">sudo systemctl start redis.service<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\u81ea\u52d5\u8d77\u52d5\u8a2d\u5b9a<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">sudo systemctl enable redis.service<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\u8d77\u52d5\u306e\u78ba\u8a8d<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">systemctl status redis<\/code><\/pre>\n<pre class=\"line-numbers\"><\/pre>\n<pre class=\"line-numbers\">\u2192\u3000active (running)\u306a\u3089\u304a\u3063\u3051\u3044\r\n\r\n<\/pre>\n<pre class=\"line-numbers\"><\/pre>\n<p><strong>Redis\u3092\u5b9f\u884c\u3057\u3001\u5165\u529b\u5f85\u6a5f\u72b6\u614b\u306b<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">redis-cli --raw<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>\u2192\u3000raw\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4ed8\u3051\u308b\u3053\u3068\u3067\u3001\u65e5\u672c\u8a9e\u5bfe\u5fdc\u306b\u306a\u308b<\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u52d5\u4f5c\u78ba\u8a8d<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\"> 127.0.0.1:6379&gt; set key value\r\n OK\r\n 127.0.0.1:6379&gt; keys *\r\n 1) \"key\"\r\n 127.0.0.1:6379&gt; get key\r\n \"value\"\r\n 127.0.0.1:6379&gt; del key\r\n (integer) 1\r\n 127.0.0.1:6379&gt; keys *\r\n (empty list or set)<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p><strong>phpredis \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">sudo yum install -y php-pecl-redis<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>github\u304b\u3089phpredis\u306e\u30bd\u30fc\u30b9\u3092\u53d6\u5f97<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">cd \/usr\/local\/src\r\n\r\nsudo git clone https:\/\/github.com\/nicolasff\/phpredis.git\r\ncd phpredis<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>\u2192\u3082\u3057\uff08git fatal: unable to access Peer reports incompatible or unsupported protocol version.\uff09\u30a8\u30e9\u30fc\u304c\u51fa\u305f\u5834\u5408\u306b\u306f\u3001<\/p>\n<p>sudo yum update\u3092\u5b9f\u65bd\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>&nbsp;<\/p>\n<p><strong>PHP\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u78ba\u8a8d\u3059\u308b<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">php -v<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p><strong>PHP7.x\u306e\u65b9\u306f\u3001\u305d\u306e\u307e\u307e\u98db\u3070\u3057\u3066\u304f\u3060\u3055\u3044<\/strong><\/p>\n<p><strong>\u79c1\u306e\u5834\u5408\u306f\u3001PHP5.x\u7cfb\u306a\u306e\u3067\u3001\u81ea\u5206\u306b\u5408\u3063\u305f\u30ea\u30d3\u30b8\u30e7\u30f3\u3092\u53d6\u5f97\u3057\u307e\u3059<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">sudo git checkout c588f0308a4d49368a436e660b4a29a0579f802d<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">sudo phpize\r\nsudo .\/configure\r\nsudo make\r\nsudo make install<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p><strong>php.ini\u3092root\u304b\u3089\u691c\u7d22<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">find \/ -name php.ini 2&gt;\/dev\/null<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p><strong>php.ini\u306b\u3001extension=redis.so\u3092\u8ffd\u8a18<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">vi \/etc\/php.ini\r\n\r\nextension=redis.so\u3092\u66f8\u304d\u8fbc\u307f\r\n\r\n:w !sudo tee %(\u5f37\u5236\u4fdd\u5b58)\r\n:q!<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>apache\u3092\u518d\u8d77\u52d5\u3057\u3066\u53cd\u6620<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">sudo service httpd restart<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p><strong>phpredis\u8aad\u307f\u8fbc\u307f\u78ba\u8a8d<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">php -m | grep redis<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>\u2192 redis\u3068\u3044\u3046\u8868\u793a\u304c\u8fd4\u308c\u3070ok<\/p>\n<p>&nbsp;<\/p>\n<p>\u5ff5\u306e\u305f\u3081\u3001php -i\u3067\u3082\u78ba\u8a8d\u3057<\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">php -i | grep redis<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>\u2192\u3082\u3057\u3001<br \/>\nPHP Warning: Module 'redis' already loaded in Unknown on line 0<br \/>\n\u306e\u3088\u3046\u306a\u8868\u8a18\u304c\u51fa\u305f\u306e\u306a\u3089\u3001\u305d\u308c\u306fmodule\u306e\u8aad\u307f\u8fbc\u307f\u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\uff08\u52d5\u4f5c\u306b\u5f71\u97ff\u306f\u306a\u3044\u3067\u3059\u304c\u3001warning\u3092\u6d88\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u91cd\u8907\u3057\u3066\u3044\u308bextension=redis.so\u3092\u524a\u9664\u3059\u308b\u3068\u826f\u3044\u3067\u3057\u3087\u3046\uff09<\/p>\n<p>&nbsp;<\/p>\n<p>\u7d50\u679c<\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">redis\r\nredis.arrays.algorithm =&gt; no value =&gt; no value\r\nredis.arrays.auth =&gt; no value =&gt; no value\r\nredis.arrays.autorehash =&gt; 0 =&gt; 0\r\nredis.arrays.connecttimeout =&gt; 0 =&gt; 0\r\nredis.arrays.consistent =&gt; 0 =&gt; 0\r\nredis.arrays.distributor =&gt; no value =&gt; no value\r\nredis.arrays.functions =&gt; no value =&gt; no value\r\nredis.arrays.hosts =&gt; no value =&gt; no value\r\nredis.arrays.index =&gt; 0 =&gt; 0\r\nredis.arrays.lazyconnect =&gt; 0 =&gt; 0\r\nredis.arrays.names =&gt; no value =&gt; no value\r\nredis.arrays.pconnect =&gt; 0 =&gt; 0\r\nredis.arrays.previous =&gt; no value =&gt; no value\r\nredis.arrays.readtimeout =&gt; 0 =&gt; 0\r\nredis.arrays.retryinterval =&gt; 0 =&gt; 0\r\nredis.clusters.auth =&gt; no value =&gt; no value\r\nredis.clusters.persistent =&gt; 0 =&gt; 0\r\nredis.clusters.read_timeout =&gt; 0 =&gt; 0\r\nredis.clusters.seeds =&gt; no value =&gt; no value\r\nredis.clusters.timeout =&gt; 0 =&gt; 0\r\nredis.pconnect.connection_limit =&gt; 0 =&gt; 0\r\nredis.pconnect.pooling_enabled =&gt; 0 =&gt; 0\r\nredis.session.lock_expire =&gt; 0 =&gt; 0\r\nredis.session.lock_retries =&gt; 10 =&gt; 10\r\nredis.session.lock_wait_time =&gt; 2000 =&gt; 2000\r\nredis.session.locking_enabled =&gt; 0 =&gt; 0\r\nRegistered save handlers =&gt; files user redis rediscluster\r\nThis program is free software; you can redistribute it and\/or modify<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>\u3053\u308c\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5b8c\u4e86\u3067\u3059\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>PHP\u3068\u306e\u63a5\u7d9a\u3092\u78ba\u8a8d<\/h2>\n<pre class=\"line-numbers\"><code class=\"language-php\">&lt;?php\r\n$host = '127.0.0.1';\r\n$port = 6379;\r\n$r = new Redis();\r\n$r-&gt;connect($host, $port);\r\n$r-&gt;set(\"foo\",\"bar\");\r\nvar_dump($r-&gt;get(\"foo\"));\r\n?&gt;<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>\u4e0a\u8a18\u3092\u8a18\u8ff0\u3057\u3001\u5b9f\u884c\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u305d\u306e\u5f8c\u3001\u30b5\u30fc\u30d0\u3088\u308aredis-cli\u3092\u5b9f\u884c\u3057\u3001\u767b\u9332\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-markup\">-bash-4.2$ redis-cli\r\n127.0.0.1:6379&gt; keys *\r\n1) \"foo\"\r\n127.0.0.1:6379&gt; get foo\r\n\"bar\"<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>\u3053\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u308c\u3070\u3001PHP\u304b\u3089Redis\u3092\u4f7f\u7528\u3067\u304d\u308b\u72b6\u614b\u3067\u3059\u3002<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Redis\u3068\u306f... Redis\u306f\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u63a5\u7d9a\u3055\u308c\u305f\u6c38\u7d9a\u5316\u53ef\u80fd\u306a\u30a4\u30f3\u30e1\u30e2\u30ea\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3002\u9023\u60f3\u914d\u5217\uff08\u30ad\u30fc\u30fb\u30d0\u30ea\u30e5\u30fc\uff09\u3001\u30ea\u30b9\u30c8\u3001\u30bb\u30c3\u30c8\u306a\u3069\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u6271\u3048\u308b\u3002\u3044\u308f\u3086\u308bNoSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u4e00\u3064\u3002\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u2026<\/p>\n","protected":false},"author":3,"featured_media":1965,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[62,67,83],"tags":[],"class_list":["post-556","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-it","category-php","category-redis"],"_links":{"self":[{"href":"https:\/\/took.jp\/tech-blog\/wp-json\/wp\/v2\/posts\/556","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/took.jp\/tech-blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/took.jp\/tech-blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/took.jp\/tech-blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/took.jp\/tech-blog\/wp-json\/wp\/v2\/comments?post=556"}],"version-history":[{"count":0,"href":"https:\/\/took.jp\/tech-blog\/wp-json\/wp\/v2\/posts\/556\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/took.jp\/tech-blog\/wp-json\/wp\/v2\/media\/1965"}],"wp:attachment":[{"href":"https:\/\/took.jp\/tech-blog\/wp-json\/wp\/v2\/media?parent=556"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/took.jp\/tech-blog\/wp-json\/wp\/v2\/categories?post=556"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/took.jp\/tech-blog\/wp-json\/wp\/v2\/tags?post=556"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}