码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • uniCloud开发微信公众号:四、引入/封装redis缓存方法


    算是个系列内容吧,最终要实现的是将uniCloud作为后端完成“扫码关注公众号后完成网站登录”
    将要涉及的内容可能包括:
    0.准备工作:各种配置、基础搭建
    1.接受、解析、组装xml消息
    2.请求access_token并缓存
    3.生成带参数二维码
    4.引入、封装redis缓存方法(本节)
    5.引入、配置、初始化unipush
    6.解析不同情况下用户扫码时推送的事件并完成登录

    系列内容全部基于uniCloud+vk-uniCloud(云函数路由)+uni-app
    编辑器HbuilderX最新版
    云空间为阿里云
    公众号为认证服务号

    注意,这里说的redis实际上并不是uniCloud官方的redis,没用的原因是太贵了……
    这里使用了vk-redis插件,可以直接访问到阿里云的redis服务器。

    一、安装/配置vk-redis
    这个组件的地址在这里:vk-redis
    点击进去后,直接导入到你的项目里。

    vk-redis本身也是个云公共模块,所以安装后是在common目录下。
    在这里插入图片描述
    右击vk-redis目录,选择管理公共模块依赖,如果没有依赖uni-config-center的话,需要手动勾选一下。

    接着,需要在uni-config-center目录下创建vk-redis目录,同时新建一个config.json文件
    在这里插入图片描述

    {
    	"enable": true,
    	"config": {
    		"port": 6379,
    		"host": "阿里云后台的公网地址",
    		"password": "用户名:密码",
    		"db": 0
    	}
    }
    

    最后,依次上传vk-redis、uni-config-center两个公共模块。

    二、封装常用方法(set、get、delete)
    其实vk已经给搞了很多,但原生redis是不支持存储json内容进去的,这里封装一个自己用,也省的在每个页面都const redis了。

    首先,记得在router云函数上,先右击,选择管理依赖,勾选vk-redis。

    然后,依旧是写在/cloudfunctions/router/util/pubFunction.js,看下边代码:

    /**
     * 初始化,请勿删除此代码
     */
    var redis;
    pubFun.init = function(util) {
    	vk = util.vk; // 也可以通过 uniCloud.vk 获取 vk对象
    	// 配置redis
    	redis = vk.redis(); // 写在这里,每个方法都可以用redis
    }
    
    /**
     * 写入redis缓存
     * pubFun.setRedisData();
     */
    pubFun.setRedisData = async function(key, arr, duration = 3600) {
    	// 序列化整个arr
    	let json = JSON.stringify(arr);
    	// 存入redis
    	let result = await redis.set(key, json, duration);
    	return result;
    }
    
    /**
     * 读取redis缓存
     * pubFun.getRedisData();
     * @param {string} key
     */
    pubFun.getRedisData = async function(key) {
    	let redisData = await redis.get(key); // 取出缓存
    	if (vk.pubfn.isNotNull(redisData)) {
    		// redis缓存没过期
    		// 反序列化
    		let res = JSON.parse(redisData);
    		return res; // 直接返回结果
    	}
    	return false;
    }
    
    /**
     * 删除redis缓存
     * pubFun.delRedisData();
     */
    pubFun.delRedisData = async function(key) {
    	// 存入redis
    	let result = await redis.del(key);
    	return result;
    }
    

    这样封装一下,云函数里用的时候就省点事儿。
    比如上一节,我们在创建带参数的二维码时,同时把入参的appid和pushClicentId都存到了redis中。
    下一节,我们用户在扫码时,就可以从redis中取出这些数据。

    最后说一句,实际上如果你觉得存到redis比较麻烦,你存到数据库中也是可以的。
    自己做好过期的处理,然后考虑清楚存数据库的成本即可。

  • 相关阅读:
    使用SSH连接虚拟机一直提示填写密码
    【数据结构】二叉树基础OJ题
    什么是 JSON Web 令牌 (JWT)?为什么 API 使用它们?
    学习笔记|回顾(1-12节课)|应用模块化的编程|分时复用|STC32G单片机视频开发教程(冲哥)|阶段小结:应用模块化的编程(下)
    python-jupyter实现OpenAi语音对话聊天
    python sqlalchemy(ORM)- 03 更新和查询
    PyQt介绍——动画使用详解之QPropertyAnimation
    内窥镜项目
    Protobuf生成文件报错
    实时即未来,大数据项目车联网之原始数据实时ELT流式任务流程总结【七】
  • 原文地址:https://blog.csdn.net/weixin_43945140/article/details/127115651
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号