美文网首页
redis实战阅读笔记3 数据安全

redis实战阅读笔记3 数据安全

作者: 余头 | 来源:发表于2018-01-30 11:05 被阅读0次

一、持久化

在首先保证数据正确的前提下加快数据操作的执行速度
将内存数据存储到硬盘一个主要原因是为了在之后重用数据,或为了防止系统故障而将数据备份到一个远程位置
1)快照 (将存于某一时刻的所有数据都写入硬盘)
2)AOF (append-only file 只追加文件)
执行写命令时,将被执行的写命令复制到硬盘里

image.png
image.png

即使一个命令只需要花费10ms完成,单个redis实例1s也只能处理100个命令


image.png

二、复制

在需要扩展读请求或需写入临时数据的时候,可设置额外的redis从服务器来保存数据集的副本。在接收到主服务器发送的数据初始副本后,客户端每次向主服务器进行写入,从服务器都会实时得到更新。部署好主从服务器后,客户端就可向任意一个从服务器发送请求,而不必总把每个读请求都发送给主服务器,从而将负载平均分配到各从服务器

三、redis事务

实例 游戏中商品买卖市场
Frank有43金币,打算卖掉自己包裹里其中一件商品

1)用一个hash记录用户信息(用户姓名、金币数量)使用一个集合记录用户包裹,记录包裹里每件商品唯一编号

image.png
image.png

一个用户可将自己商品按给定价格放到市场进行销售,当另一个用户购买这个商品,卖家就会收到钱。
将商品ID和卖家ID存储到市场有序集合里,而商品的售价用作成员的分值


image.png

2)开始将商品放到市场进行销售

 /**
     * 记录用户信息 姓名 金币数
     */
    public function setInfo($id, $info)
    {
        $this->conn->hSet('users:'.$id,'name',$info['name']);
        $this->conn->hSet('users:'.$id,'money',$info['money']);
    }

    /**
     * 记录用户包裹信息
     */
    public function setBundle($id, $option)
    {
        $this->conn->sAdd('inventory:'.$id,$option);
    }

    /**
     * 将商品加入购物市场进行出售
     */
    public function joinMarket($id, $item, $price)
    {
        //检测包裹里是否有该商品
        $res = $this->conn->sIsMember('inventory:'.$id,$item);
        if($res){
            //将商品加入市场有序集合,删除用户包裹记录
            $this->rcon->multi()->zAdd('market:',$price,$item)
                       ->sRem('inventory:'.$id,$item)
                       ->exec();
            return true;
        }
        return false;
    }

    /**
     * 购买商品
     */
    public function buy($buyid,$sellerid,$item,$price)
    {
        //购买某一商品时首先检测购买人金币是否足够
        $res = $this->conn->hGet('users:'.$buyid,'money');
        if($res>=$price){
            //将该商品加入买家包裹 删除市场集合里商品信息 买家金币减少 卖家金币增加
            $this->rcon->multi()->sAdd('inventory:'.$buyid,$item)
                  ->zRem('market:',$item)
                  ->hIncrBy('users:'.$sellerid,'money',$price)
                  ->hIncrBy('users:'.$buyid,'money',-$price)
                  ->exec();
            return true;
        }
        return false;
    }
图片.png
图片.png
图片.png

相关文章

  • redis实战阅读笔记3 数据安全

    一、持久化 在首先保证数据正确的前提下加快数据操作的执行速度将内存数据存储到硬盘一个主要原因是为了在之后重用数据,...

  • MySQL实战45讲阅读笔记-MVCC

    系列MySQL实战45讲阅读笔记-MySQL入门MySQL实战45讲阅读笔记-日志MySQL实战45讲阅读笔记-锁...

  • MySQL实战45讲阅读笔记-索引

    系列MySQL实战45讲阅读笔记-MySQL入门MySQL实战45讲阅读笔记-日志MySQL实战45讲阅读笔记-锁...

  • MySQL实战45讲阅读笔记-日志

    系列MySQL实战45讲阅读笔记-MySQL入门MySQL实战45讲阅读笔记-日志MySQL实战45讲阅读笔记-锁...

  • MySQL实战45讲阅读笔记-锁

    系列MySQL实战45讲阅读笔记-MySQL入门MySQL实战45讲阅读笔记-日志MySQL实战45讲阅读笔记-锁...

  • MySQL实战45讲阅读笔记-MySQL入门

    系列MySQL实战45讲阅读笔记-MySQL入门MySQL实战45讲阅读笔记-日志MySQL实战45讲阅读笔记-锁...

  • redis mysql集群数据安全性

    redis mysql 数据安全性 redis 数据丢失 redis集群状态下,参考复制(Replication)...

  • 《Redis实战》—读书笔记—第3章

    《Redis实战》—读书笔记—第3章 2017年10月04日00:50:03 3.1 字符串 字符串可以存储3种类...

  • Redis字典

    本文摘抄自redis阅读笔记 典在Redis中应用十分广泛,它是实现数据库的基础,特别的它是数据库键空间的实现方式...

  • Redis学习札记

    本文是Redis入门指南的阅读笔记,同事推荐的,通过本书了解到了很多Redis支持的数据结构、很多应用场景等。基本...

网友评论

      本文标题:redis实战阅读笔记3 数据安全

      本文链接:https://www.haomeiwen.com/subject/ucwqzxtx.html