在php中redis的用途

作为一个业余的phper一直在避免接触redis,也没有系统的学习过redis,前几天又翻了翻网上关于redis的文章,看懂了一点点,做个笔记(只涉及到很基础的一部分,redis的作用与用途不是一两天能掌握的)。

一、redis的作用

搭配mysql做缓存,减轻数据库压力,提高系统响应速度;任务队列,按队列顺序依次完成任务(比如订单);做计数、排名、统计;redis主从中从服务器做持久化存储。

二、php中利用redis缓存数据库数据的方法

比如网上商城的宝贝展示,一般情况下所有人看到的宝贝列表都是一样的,如果使用php+mysql做的话,每次用户打开商城都会到数据库查询一遍。有了redis,就可以在用户登录商城的时候先看下redis里面有没有商品列表的数据,如果有就直接取redis即可,如果没有就查数据库并将结果存入redis中,这样下次就可以避免查库了(最好给该redis数据设置一个过期时间,防止有新商品上架了客户却看不到redis更新)。

如果redis数据来自数据库的话,代码中每次都需要判断redis有没有数据,如果没有才查库并存入redis,这种判断看起来增加了cpu的计算量,其实基本可以忽略不记!比起数据库的连接、查询开销节省的不是一点点性能。

<?php
if (redis 存在商品列表)
   获得redis商品列表数据
else
   查询sql获得商品列表数据
   获得sql商品列表数据
   将商品列表数据存入redis
   

三、php操作redis

Redis在PHP项目中的应用(sql操作结合redis、mysql)

Redis在Php项目中的实际应用场景

php使用redis的几种常见方式和用法(缓存、队列、锁、发布订阅)

<?php
//创建一个redis客户端
$redis = new Redis();
//连接redis服务,指定主机,端口,和超时时间
$redis->connect('127.0.0.1', 6379, 60);
//进行密码验证
$redis->auth('');

//设置键的值,成功返回true,失败返回false
$ret = $redis->set('app_id', '1234567890');
var_dump($ret);
//获取键的值,成功返回键值,失败返回false
$ret = $redis->get('app_id');
var_dump($ret);

//设置新值,返回旧值,如果key不存在,则设置值,返回false
$ret = $redis->getSet('app_id', '666666666');

//一次设置多个键值对
$ret = $redis->mset(['db_name' => 'test', 'db_host' => 'localhost']);
var_dump($ret);
//一次获取多个键值对,返回一个数组
$ret = $redis->mget(['db_name', 'db_host']);
var_dump($ret);

//设置键值,和过期时间,单位:秒,成功返回true
$ret = $redis->setex('name', 10, 'hello');
var_dump($ret);
//设置键值,过期时间以毫秒为单位
$ret = $redis->psetex('age', 10, '28');

//key不存在时,才设置值,key不存在且设置成功返回true,否则返回false
$ret = $redis->setnx('name', 'test');

//获取键值的字符串长度,如果key不存在,返回0,如果值不为字符串返回false
$ret = $redis->strlen('name');

//将key中存储的数字值加1,如果key不存在先初始为0再加1,如果存储的不是数字值,则返回false,成功返回新增值
$ret = $redis->incr('age');
var_dump($ret);
//将key中存储的数字值加指定增量值
$ret = $redis->incrBy('age', 10);
//将key中存储的数字值减1
$ret = $redis->decr('age');
var_dump($ret);
//将key中存储的数字值减指定减量值
$ret = $redis->decrBy('age', 10);


//从列表头部插入一个值
$ret = $redis->lpush('students', 'xiaoxu');
$ret = $redis->lpush('students', 'xiaoxu2');
var_dump($ret);
//从列表尾部插入一个值
$ret = $redis->rpush('students', 'xiaowang');
$ret = $redis->rpush('students', 'xiaowang2');

//移出并获取列表的第一个元素,若key不存在或不是列表则返回false。
$ret = $redis->lpop('students');
var_dump($ret);
//移出并获取列表的最后一个元素,若key不存在或不是列表则返回false。
$ret = $redis->rpop('students');

基于互联网精神,在注明出处的前提下本站文章可自由转载!

本文链接:https://ranjuan.cn/在php中redis的用途/

赞赏

微信赞赏支付宝赞赏

php中mysql报错call-to-a-member-function-fetch_assoc-on-boolean
wordpress-hide-category
交换机级联与堆叠的区别