不太想努力 發表於 2019-11-1 15:35:00

PHP使用Redis

<h2 id="一安装php类库">一、安装php类库</h2>
<p>直接下载,github的仓库</p>
<pre><code>https://github.com/nrk/predis
</code></pre>
<p>或者 composer安装<br>
composer require predis/predis</p>
<h2 id="二测试是否可用">二、测试是否可用</h2>
<p>linux Redis服务</p>
<pre><code>是否启动
ps aux | grep redis
启动
./bin/redis-server ./redis.conf
关闭
./bin/redis-cli shutdown
</code></pre>
<p>Redis的默认配置</p>
<pre><code>'host' =&gt; '127.0.0.1',
'port' =&gt; 6379
</code></pre>
<p>php使用简单流程</p>
<pre><code>require "./predis-1.1/autoload.php";
$redis = new Predis\Client([
    'scheme' =&gt; 'tcp',
    'host' =&gt; '127.0.0.1',
    'port' =&gt; 6379,
]);

//设置值和获取值
try
{
    $redis-&gt;set('update_ucenter_order_time', time());
    $lastUpdatTime = $redis-&gt;get('update_ucenter_order_time');
}
catch (Exception $e)
{
    echo $e-&gt;getMessage();
}
print($lastUpdatTime);
</code></pre>
<h2 id="三常用操作">三、常用操作</h2>
<p>Redis支持类型</p>
<pre><code>String: 字符串
Hash: 散列
List: 列表
Set: 集合
Sorted Set: 有序集合
</code></pre>
<h2 id="31-string操作">3.1 string操作</h2>
<p>linux环境下</p>
<pre><code>whereis redis-cli

/usr/local/bin/redis-cli
进入redis-cli
127.0.0.1:6379&gt; set name tom
OK
127.0.0.1:6379&gt; get name
"tom"
查看所有key值
127.0.0.1:6379&gt; keys *
    删除所有key值
127.0.0.1:6379&gt; flushall
</code></pre>
<p>php</p>
<pre><code>$redis-&gt;set('name', 'tom');
$redis-&gt;get('name');
</code></pre>
<h2 id="32-hash操作">3.2 Hash操作</h2>
<p>Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。<br>
linux环境下</p>
<pre><code>127.0.0.1:6379&gt; hmset user name tom age 20 description "i like run..."
OK
127.0.0.1:6379&gt; hgetall user
1) "name"
2) "tom"
3) "age"
4) "20"
5) "description"
6) "i like run..."
127.0.0.1:6379&gt; hget user age
"20"
</code></pre>
<p>可参考文章:https://www.runoob.com/redis/redis-hashes.html</p>
<p>php</p>
<pre><code>//为user表中的字段赋值。成功返回1,失败返回0。若user表不存在会先创建表再赋值,若字段已存在会覆盖旧值。
$redis-&gt;hSet('user', 'name', 'tom');
$redis-&gt;hSet('user', 'age', 20);
$redis-&gt;hSet('user', 'description', 'i like run...');

//获取user表中指定字段的值。若user表不存在则返回false。
$redis-&gt;hGet('user', 'name');

//查看user表的某个字段是否存在,存在返回true,否则返回false。
$redis-&gt;hExists('user', 'name');


//同时设置某个user表的多个字段值。成功返回true。
$redis-&gt;hMset('user', ['name' =&gt; 'jet', 'age' =&gt; 18]);

//同时获取某个user表的多个字段值。其中不存在的字段值为false。
$redis-&gt;hMget('user', ['name', 'age']);

//获取某个user表所有的字段和值。
$redis-&gt;hGetAll('user');
</code></pre>
<h2 id="33-list操作">3.3 list操作</h2>
<p>Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)</p>
<p>linux下</p>
<pre><code>127.0.0.1:6379&gt; lpush namelist tom kilye wendy
(integer) 3
127.0.0.1:6379&gt; lrange namelist 0 2
1) "wendy"
2) "kilye"
3) "tom"
127.0.0.1:6379&gt; del namelist
(integer) 1
</code></pre>
<p>php</p>
<pre><code>//存储数据到列表中
$redis-&gt;lpush("namelist", "tom");
$redis-&gt;lpush("namelist", "kilye");
$redis-&gt;lpush("namelist", "wendy");

// 获取存储的数据并输出
$arList = $redis-&gt;lrange("namelist", 0 ,2);
</code></pre>
<h2 id="34集合操作">3.4集合操作</h2>
<p>Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。</p>
<p>linux下</p>
<pre><code>127.0.0.1:6379&gt; sadd databases redis mongodb
(integer) 2
127.0.0.1:6379&gt; sadd databases mysql
(integer) 1
127.0.0.1:6379&gt; sadd databases mysql
(integer) 0
127.0.0.1:6379&gt; smembers databases
1) "mongodb"
2) "mysql"
3) "redis"
127.0.0.1:6379&gt; del databases
(integer) 1
</code></pre>
<p>php</p>
<pre><code>//加入集合
$redis-&gt;sAdd('databases', 'redis');
$redis-&gt;sAdd('databases', 'mongodb');
$redis-&gt;sAdd('databases', 'mysql');

//返回集合
$redis-&gt;sMembers('databases');

//判断集合里是否存在指定元素,是返回true,否则返回false。
$redis-&gt;sismember('databases', 'mysql');

//返回集合中元素的数量。
$redis-&gt;scard('databases');
</code></pre>
<h2 id="参考文章">参考文章</h2>
<pre><code>https://www.cnblogs.com/junyi-bk/p/10900450.html

https://www.runoob.com/redis/redis-sets.html
</code></pre><br><br>
来源:https://www.cnblogs.com/sentangle/p/11777342.html
頁: [1]
查看完整版本: PHP使用Redis