• 使用Redis为数据库添加保护(缓存)


    1. 下载Redis Windows安装包

    下载地址

    图示

    2. 解压安装包,打开该文件夹,在此文件按住shifit 键 并点击鼠标右键

    在此处打开命令行,输入命令  redis-server.exe即可启用服务
    
    也可以选择开机自动启动,输入命令 redis-server --service-install redis.windows.conf
    

    3. 此步骤的窗口不关闭,重新打开一个命令窗口

    输入redis-cli.exe即可操作(增删改查)缓存,常见命令,直接百度输入  redis 常见命令即可找到
    

    4.redis实用命令

    根据不同的id 来存缓存,根据不同的id来找缓存(登录+修改信息需要存入和更新或删除缓存,其余都没必要)
    
    增加一个集合方法
    
    HMSET id1 name lisi age 22 hoby zuqiu(分别是代表 操作指令 -- 主键 -- 副键 值 -- 副键 值...)
    
    这里结果为id1{name:'lisi',age:22,hoby:'zuqiu'}
    
    获取一个集合某个属性的方法
    
    HGET id1 name(获取主键名为  id1 的name属性的值 )
    
    这里结果为lisi
    
    HDEL id1 name(删除主键名为 id1 的name属性的值)
    
    这里结果为id1{age:22,hoby:'zuqiu'}
    
    HGETALL key:获取对象的所有信息
    
    目前能实现通过key 把一个集合查询出来
    
    del key:删除某个集合
    
    
    增加缓存--修改缓存--删除缓存--实现思路:
    
    1.登录时在判断账号密码均正确的条件下储存缓存
    
    2.登陆后修改时按照修改的值全部覆盖原来的缓存(相当于重新设置了缓存)
    
    3.查询时可根据数据库中查询到的账号密码存入缓存,由于查询时发请求未发送密码,所以需要根据用户名查询到的数据把密码查询出来,
    
    再储存缓存
    
    4.注意点:
    
      1.如果有缓存,返回的是一个对象,可以直接点出来属性和属性值
    
      2.如果没有缓存,返回的是一个需要data[0]的对象,需要处理才能点出属性和属性值
    
      3.所以,这里需要进行一个判断,当有缓存时data.length是为undefied,而当没有缓存时,data.length等于1,所以根据不同的值设置不
    
    同的取值方法
    
      4.有缓存取值:data.user(假如我的data里面有user属性)
    
      5.没缓存取值:data[0].user
    
      6.删除缓存:前端发送id 和 user到后台,后台根据user进行删除缓存
    

    推荐redis命令文章

    nodejs 操作缓存方法

    1. node根目录输入:

    npm i redis --save
    

    2. node app.js文件输入:

    var redis = require("redis")
        , client = redis.createClient()
        ,session = require('express-session')
        ,RedisStore = require('connect-redis')(session);
      
    client.on("error", function (err) {
      console.log("Error " + err);
    });
      
    client.on("connect", runSample);
      
    function runSample() {
      // Set a value
      client.set("string key", "Hello World", function (err, reply) {
        console.log(reply.toString());
      });
      // Get a value
      client.get("string key", function (err, reply) {
        console.log(reply.toString());
      });
    }
    

    3. 当连接到 Redis 后会调用 runSample 函数并设置一个值,紧接着便读出该值,运行的结果如下:

    OK
    Hello World
    

    如何保护数据库?具体操作办法?

    思路:

        1. 前端发送请求到后台
        2. 后台拿到请求后查询缓存是否有该数据
        3. 如果有,那么直接将缓存区查询到的数据返回到前端
        4. 如果没有,那么按照正常方式请求数据库,得到结果返回到前端
    

    具体实现代码:

    app.get('/findnew',function(req,res){
    	console.log('正在查询表2的信息,admin!!!')
    	//存数据缓存
    	client.set("name", "123", function (err, reply) {
    	  console.log('11111:',reply);
    	});
    	//取缓存数据
    	client.get("name", function (err, reply) {
    		console.log(reply)
    	//如果查询到缓存中没有name的数据,那么发起请求查询数据库,返回数据
    	  if(reply.length == 0){
    	  	newslist.find({name:req.query.name},function(err,docs){
    			console.log('长度:',docs.length)
    			/**设置响应头允许ajax跨域访问**/
    			res.setHeader("Access-Control-Allow-Origin","*");
    			/*星号表示所有的异域请求都可以接受,*/
    			res.setHeader("Access-Control-Allow-Methods","GET,POST");
    			if(docs == ''){
    	    		res.send('1');
    	    	}else{
    	    		res.send(docs);
    	    	}
    		})
      	//如果查询到缓存中有name的数据,那么直接返回该缓存的数据
    	  }else{
    	  	res.send(reply);
    	  }
    	});
    })
    

    总结: redis是保护数据库的一个防护层,可以有效减少数据库的请求数,提升性能,而且本身缓存是存在内存中,读取速度也会提升,所以增加缓存是一个明智的选择,当然还可以设置缓存失效的时间,具体实现后续补上。

  • 相关阅读:
    how to read openstack code: loading process
    how to read openstack code: request extension
    how to read openstack code: action extension
    b站刷赞 B站刷赞工具 bilibili评论刷赞 b站点赞
    利用邓西百度网盘消息群发工具对百度网盘的群组、好友进行管理,批量分享文件
    如何利用邓西百度网盘批量转存检测工具批量检测百度网盘失效分享链接
    如何使用邓西百度网盘批量重命名工具对百度网盘中的文件进行批量改名、删除等
    如何利用邓西百度网盘消息群发工具批量删除百度网盘单向好友
    如何利用工具自动通过百度网盘好友请求并发送消息或文件
    邓西百度网盘批量保存检测工具高级用法之分享链接以指定名称保存
  • 原文地址:https://www.cnblogs.com/yzyh/p/7699789.html
Copyright © 2020-2023  润新知