zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Redis实战之购物车

Redis 实战 购物车
2023-06-13 09:12:32 时间

传统的购物车实现有很多种方式,如session,cookie,数据库等,这几种方式实现各有优缺点,网上的文章太多了,这里就不一一阐述。 今天给大家分享的是Redis实现购物车功能,众所周知Redis相当于一个内存数据库,可以用来做缓存,存储数据等。写到这里学计算机都知道,内存(RAM)当出现断电数据就会丢失。这可能是Redis做购物车的最大缺点吧,不过这里可以通过配置RDB/AOF使Redis实现持久化,关于他们两个的区别,可以参照这篇文章

配置AOF使数据持久化

修改redis配置文件redis.conf

cd /usr/local/redis

vim redis.conf

appendonly no改成appendonly yes

确认 appendfsync everysec(每秒同步数据)

这里我们只简单修改了两项配置,更多配置参照这篇文章

接下来验证数据持久化是否配置成功 1.重启redis服务器 pkill -9 redis cd /usr/local/redis/bin ./redis-server ../redis.conf

在bin目录下查看是否生成appendonly.aof 文件

2.连接一个redis客户端 cd /usr/local/redis/bin ./redis-cli 写入几条数据并清除

3.redis服务器查看 appendonly.aof 生成如下内容

这个文件是用于数据恢复的 我们将最后一行代码 flushall删掉接下来重启redis看看数据能否恢复

pkill -9 redis

cd /usr/lcoal/redis/bin

./redis-server ../redis.conf

连接一个客户端尝试获取先前设置的值

可见数据恢复成功

实现购物车功能

//购物车添加
public function store(Request $request){
        $hashKey = "user_".Auth::id();
        $key = "goodd_".$request->gid;
        $goods = ["gid"=>$key,"gtitle"=>$request->gtitle,"gprice"=>$request->gprice,"gcover"=>$request->gcover,"gnum"=>$request->gnum];
        $res = Redis::hSet($hashKey,$key,json_encode($goods));
     }

这里我用到是redis hash数据类型 将 user+登录用户id作为hashkey,goodd+商品id作为key,key对应的值则是关于商品的一些信息

//购物车读取
 public function index(){
       return response()->json(["cars"=>json_encode(Redis::hGetAll('user_'.Auth::id()))]);
    }

购物车读取功能比较简单,直接查询该用户的id对应的hashkey即可得到商品信息

购物车删除 购物车修改 待添加