小程序开发----自定义有效期缓存

2023-11-08

 在uni-app中使用:

/**  
 * 缓存数据优化  
 * import cache from '@/common/js/cache'  
 * 使用方法 【  
 *     一、设置缓存  
 *         string    cache.put('k', 'string你好啊');  
 *         json      cache.put('k', { "b": "3" }, 2);  
 *         array     cache.put('k', [1, 2, 3]);  
 *         boolean   cache.put('k', true);  
 *     二、读取缓存  
 *         默认值    cache.get('k')  
 *         string    cache.get('k', '你好')  
 *         json      cache.get('k', { "a": "1" })  
 *     三、移除/清理    
 *         移除: cache.remove('k');  
 *         清理:cache.clear();   
 * 】  
 * @type {String}  
 */  
const postfix = '_msfkd'; // 缓存前缀   
const expires = 1000*60*30;//设置缓存时间 ms
/**  
 * 设置缓存   
 * @param  {[type]} k [键名]  
 * @param  {[type]} v [键值]  
 * @param  {[type]} t [时间、单位秒]  
 */  
function put(k, v, t) {  
    uni.setStorageSync(k, v)   
    let seconds =t;  
    if (seconds > 0) {  
        let timestamp = new Date().getTime();  
		if(k=="userInfo"){
			uni.setStorageSync(k + postfix, seconds*expires + "")  
		}else{
			let newTime = seconds*18000000+timestamp;//缓存时间
			uni.setStorageSync(k + postfix, newTime + "")  
		}
    } else {  
        uni.removeStorageSync(k + postfix)  
    }  
}  

/**  
 * 获取缓存   
 * @param  {[type]} k   [键名]  
 * @param  {[type]} def [获取为空时默认]  
 */  
function get(k, def) {  
    let deadtime = parseInt(uni.getStorageSync(k + postfix))   
    if (deadtime) {  
		let date = new Date().getTime();
        if ( date - deadtime >expires ) {//清空缓存
           remove(k)
           remove(k+postfix)
        }else{
			return uni.getStorageSync(k)
		}
    }else{
		let res = uni.getStorageSync(k);
		if (res) {  
		    return res;  
		} else {  
		    if (def == undefined  || def == "") {  
		        def = false;   
		    }  
		    return def;  
		}  
	} 
  
}  

function remove(k) {  
    uni.removeStorageSync(k);  
    uni.removeStorageSync(k + postfix);  
}  



export default {
	put,
	get,  
	remove,   
}

支付宝原生小程序内:

// 优化缓存
// * 使用方法 【  
//  *     一、设置缓存  
//  *         string    cache.put('k', 'string你好啊');  
//  *         json      cache.put('k', { "b": "3" }, 2);  
//  *         array     cache.put('k', [1, 2, 3]);  
//  *         boolean   cache.put('k', true);  
//  *     二、读取缓存(可设置默认值),没有读取到缓存值,使用设置的默认值
//  *         默认值    cache.get('k')  
//  *         string    cache.get('k', '你好')  
//  *         json      cache.get('k', { "a": "1" })  
//  *     三、移除/清理    
//  *         移除: cache.remove('k');  
//  *         清理:cache.clear();   
//  * 】  

const postfix = "_msfkd";//缓存前缀
const expiress = 1000* 60*60;//设置缓存时间ms 默认一个小时


/**
 *设置缓存
 @param {[type]} k [键名] 
 @param {[type]} v [键值] 
 @param {[type]} t [时间、单位ms] 
 */
function put(k,v,t){
  my.setStorageSync({
    key: k,
    data: v
  });

  let seconds = t;
  if(seconds>0){//如果存在t 设置缓存时间
    my.setStorageSync({
      key: k+postfix,
      data: seconds*expiress
    });
  }else{//移除时间缓存
    my.removeStorageSync({
      key: k+postfix
    });
  }
}



/**
 * 获取缓存 (可添加默认值)
 * @param  {[type]} k   [键名]  
 * * @param  {[type]} def [获取为空时默认] 
 */
function get(k,def){
  let deadtime = my.getStorageSync({
    key: k+postfix
  }).data;
  deadtime = parseInt(deadtime);
  if(deadtime){
    let date = new Date().getTime();
    if(date-deadtime>expiress){
       remove(k)
    }else{
      return my.getStorageSync({
        key:k
      }).data;
    }
  }else{
    let res =  my.getStorageSync({
                  key:k
                }).data;
    if(res) return res;
    if (def == undefined  || def == "") {  
          def = false;   
      }  
      return def;                
  }
}

/**
 * 移除缓存
 * @param {*} k 
 */
function remove(k) { 
    my.removeStorageSync(k);  
    my.removeStorageSync(k + postfix);  
}  

/**
 * 删除全部缓存
 */
function clear(){
  my.clearStorageSync();
}

export default {
  put,
  get,
  remove,
  clear
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小程序开发----自定义有效期缓存 的相关文章

  • Redis五大数据类型使用——String

    1 String 字符串 添加 查询 追加 获取长度 判断是否存在的操作 C Users 12559 gt redis cli exe 启动redis 127 0 0 1 6379 gt set name kobe 插入一个key为 nam
  • Redis基础知识(三):缓存穿透、缓存击穿、缓存雪崩

    文章目录 一 缓存穿透 出现过程 解决方法 二 缓存击穿 出现过程 解决方法 三 缓存雪崩 出现过程 解决方法 我们在项目中大量使用Redis承接海量数据的冲击 但是使用过程中也会遇到一些特殊的情况 这个就是缓存击穿 缓存穿透 缓存雪崩 一
  • 浏览器缓存机制及其分类

    聚沙成塔 每天进步一点点 专栏简介 强缓存 Cache Control 和 Expires 协商缓存 ETag 和 Last Modified 写在最后 专栏简介 前端入门之旅 探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦
  • php中redis memcache等缓存的应用

    欢迎加入 新群号码 99640845 在web开发的过程中缓存是必不可少的工具 无论是mamcache还是redis我想大家都很有所涉略 我分享一下我个人在工作中的一些使用后的想法 缓冲应用设计 对于缓存的使用我想大家应该都会使用 简单的k
  • 后端开发缓存篇之缓存及缓存模式的介绍

    一 什么是缓存 缓存 简单说就是为了节约对原始资源重复获取的开销 而将结果数据副本存放起来以供获取的方式 二 什么时候使用缓存 1 以 幂等和安全的方式对资源的获取操作 2 缓存数据必须是重复获取的 缓存能生效的本质是空间换时间 缓存的命中
  • volatile保证可见性,原理是什么

    VOLATILE 只保证可见性 Java多线程内存可见性 并不保证原子性 可见性 一个线程对共享变量的修改 更够及时的被其他线程看到 原子性 即不可再分了 不能分为多步操作 比如赋值或者return 比如 a 1 和 return a 这样
  • Redis持久化AOF

    目录 1 AOF简介 2 AOF持久化流程 3 AOF默认不开启 4 AOF和RDB同时开启 redis听谁的 5 AOF启动 修复 恢复 6 AOF同步频率设置 7 Rewrite压缩 7 1 是什么 7 2 重写原理 如何实现重写 8
  • 第十二章_Redis单线程 VS 多线程

    Redis为什么选择单线程 是什么 这种问法其实并不严谨 为啥这么说呢 Redis的版本很多3 x 4 x 6 x 版本不同架构也是不同的 不限定版本问是否单线程也不太严谨 1 版本3 x 最早版本 也就是大家口口相传的redis是单线程
  • 修改代码后,刷新页面没有更新的解决办法。Disable cache禁止缓存

    工作内容 不对外开放 很多时候 我们修改代码并保存后 到浏览器看效果 发现并没有更新 刷新页面后也没有更新 可能是你的缓存开启了 Network 里勾选Disable cache重新加载页面后 会发现浏览器使用缓存了 打开Disable c
  • 如何保持缓存和数据库中的数据一致

    背景 缓存是软件开发中一个非常有用的概念 数据库缓存更是在项目中必然会遇到的场景 而缓存一致性的保证 更是在面试中被反复问到 这里进行一下总结 针对不同的要求 选择恰到好处的一致性方案 缓存是什么 存储的速度是有区别的 缓存就是把低速存储的
  • 从一道题目学习Nunjucks模板

    Nunjucks简介 Nunjucks 是一个功能丰富 强大的 JavaScript 专用模板引擎 Nunjucks 提供丰富的语言特性和块继承 自动转移 宏和异步控制等等 重点要关注的是 Nunjucks 模板引擎的代码在沙箱环境中运行
  • Redis系列二

    1 4 Redis基础知识 1 4 1 默认数据库 Redis默认数据库数量有16个 redis conf配置文件可查看 默认使用的数据库为0 1 4 2 切换数据库 使用select 命令进行切换 root yunmx bin redis
  • mysql清缓存、查看连接数及链接时间

    mysql清缓存 查看连接数及链接时间 flush privileges 刷新缓存 SHOW FULL processlist 查看连接数据库的进程id ip 用户名 连接的数据库 连接状态 连接时长等 show variables lik
  • Redis介绍、安装、基础命令

    目录 引言 一 关系数据库和非关系数据库 1 1 关系型数据库 1 2 非关系型数据库 1 3 关系型数据库与非关系型数据库区别 数据存储方式不同 扩展方式不同 对事务性的支持不同 非关系型数据库产生背景 二 Redis简介 2 1 Red
  • redis 配置与优化

    目录 一 关系数据库和非关系型数据库 二 关系型数据库和非关系型数据库区别 三 非关系型数据库产生背景 四 redis 1 概念 2 redis的优点 3 redis为什么这么快 五 redis安装与配置 一 关系数据库和非关系型数据库 关
  • Redis 7.0 核心技术、实战应用、面试题

    Redis 7 0 核心技术与实战应用 Redis 入门概述 01 Redis 是什么 Redis REmote Dictionary Server 远程字典服务器 官网介绍 https redis io docs about 官网定义 R
  • Redis——Redis简介

    Redis是目前最流行的键值对 key value 数据库 以出色的性能著称 官方提供的数据是可以支持100000以上的 QPS Redis具有高性能的主要原因如下 Redis是基于内存的存储数据库 绝大部分的命令处理只是纯粹的内存操作 内
  • 华为OD机试真题-文件缓存系统-2023年OD统一考试(C卷)

    题目描述 请设计一个文件缓存系统 该文件缓存系统可以指定缓存的最大值 单位为字节 文件缓存系统有两种操作 存储文件 put 和读取文件 get 操作命令为put fileName fileSize或者get fileName 存储文件是把文
  • Java_Mybatis_缓存

    缓存 1 概述 Mybatis 缓存 MyBatis 内置了一个强大的事务性查询缓存机制 它可以非常方便地配置和定制 2 会话缓存 一级缓存 sqlSession 级别的 也就是说 使用同一个 sqlSession 查询同一 sql 时 直
  • 【Redis】Redis 配置文件

    1 概述 相同文件 Redis redis 配置 配置文件 redis conf 自定义目录 myredis redis conf 4 1 Units单位 配置大小单位 开头定义了一些基本的度量单位 只支持bytes 不支持bit 大小写不

随机推荐