微信小程序大型系统架构中应用Redis缓存要点

在大型分布式系统架构中,必须选择适合的缓存技术以应对高并发,实现系统相应的高性能,酷客多小程序经过慎重选型,选择了采用基于腾讯云服务的Redis弹性缓存技术,结合Redis官方推荐的.NET驱动类库Service.Stack.Redis,实现Redis弹性缓存在系统中的应用。

现针对Redis在实际应用中需注意的要点,就如下几个方面进行总结:

在企业级应用过程,任何技术的引入都需要考虑可能产生的各种影响,对于缓存应用来说,首先需要考虑的是内存的占用状况。对于应用系统来说,内存是极其宝贵的资源,对于每一个存储到Redis缓存中的内容,都必须严格控制其内容的有效性和存储期限,具体需要注意的事项如下:

a)使用合适的命名方法,可以简化存储项的管理。建议使用带有业务意义的名称,可以采用类似DotNet命名空间的类似命名管理方式(可使用冒号来划分键名,例如Product:Category 键名来存储商品分类数据),这样有助于缓存数据的数据管理及后期数据的迁移,删除等

b)进行数据删除时,需注意同时删除掉相关联无效的级联数据

a) 采用合适命名方式的同时,要控制键的名称长度,缓存数据量达到一定程度时,键(Key)所占用的存储空间也会是内存的一笔较大的开销,因此需要严格控制键的长度。

a) 可以使用list的情况下尽量用list代替set。如果你不需要使用set特性,List在使用更少内存的情况下可以提供比set更快的速度。

b) Sorted sets是及其昂贵的数据结构,不管是对内存的消耗还是基本操作时的开销。如果只是需要一个存储查询记录的场景,不在意排序这样的属性,那么建议使用哈希表结构来存储。

对于在系统中实际对于Redis的使用,结合酷客多实际使用业务,可以考虑在如下几个场景中

a) 例如可以将 最新100条评论Id 放在Redis的List中

c) 插入完成后再用LTRIM latest.comments 0 100命令使其永远只保存最近100条

a) 取Top N操作 按照某个条件为权重,使用sorted set,将要排序的值设置成sorted set的score,将具体的数据设置成相应的value,每次只需要执行一条ZADD命令即可。

d) 使用list可以构建队列,使用SortSet可构建有优先级要求的队列

e) 最基本的应用,其总体性能优于Memcached,数据结构更加丰富实用

a) Sorted set的score设计成过期时间戳,通过过期时间排序定期清理数据,或根据此依据定期清理数据库中过期数据(官网推荐的使用场景之一,感觉应用方式不太好,不推荐)

f) Redis的Pub/Sub系统可以构建实时的消息系统,比如很多用Pub/Sub构建的实时聊天系统的例子(网上推荐,暂未用到)

Rdis自身的过期策略为两种结合使用:

a) 进行 get 或setnx 时,先检查key是否过期,若过期,则删除key,并执行相关操作

b) 若没过期,直接执行相关操作

定期循环 随机查是否过期,查到后,删除

当进行命令操作Redis缓存的数据时,需注意操作命令对Redis中数据的的过期时间的影响,简单概括如下:

关于过期时间:

Redis2.4中expire精度不高,通常在0到1秒间,Redis2.6以后expire精度可以控制在0到1毫秒内

作者:酷客多小程序 徐冰

Original: https://www.cnblogs.com/ywqu/p/8551582.html
Author: 灵动生活
Title: 微信小程序大型系统架构中应用Redis缓存要点

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/529182/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 代码中的软件工程复习

    编写高质量代码的基本方法 通过控制结构简化代码 通过数据结构简化代码 一定要有错误处理 注意性能优先的代价 拒绝修修补补不断重构代码 性能优先策略带来的隐藏代价 软件工程师的人力成…

    Linux 2023年6月8日
    0102
  • python接收微信消息报’HTMLParser’ object has no attribute ‘unescape’错误

    我的博客 一直有个想法,想要弄个微信机器人,然而出师不利,刚开始就碰壁了 先上代码,这个是用来接收消息的,是个测试脚本 #!/usr/bin/python coding: utf-…

    Linux 2023年6月6日
    0121
  • 用python实现markdown转html

    1. 前言 现在markdown已经是非常常用的记录工具了,整齐的排版、代码高亮、图片表格样样齐全,同时也支持html标签,是非常好用的一种工具(语法)。 那么今天来分享一下使用p…

    Linux 2023年6月14日
    0131
  • Pycharm设置python文件头

    设置路径为: File->Setting->Editor->File and code Templates->Python Script 可用的预定义文件模…

    Linux 2023年6月8日
    0115
  • CA证书介绍与格式转换

    PKCS 公钥加密标准(Public Key Cryptography Standards, PKCS),此一标准的设计与发布皆由RSA资讯安全公司(英语:RSA Security…

    Linux 2023年6月6日
    094
  • 三、Linux基础命令

    查看文件[root@node01 ~]# lsanaconda-ks.cfg Desktop Documents Downloads initial-setup-ks.cfg Mu…

    Linux 2023年6月7日
    075
  • 【设计模式】Java设计模式-模板模式

    Java设计模式 – 模板模式 😄 不断学习才是王道🔥 继续踏上学习之路,学之分享笔记👊 总有一天我也能像各位大佬一样🏆原创作品,更多关注我CSDN: 一个有梦有戏的人…

    Linux 2023年6月6日
    0154
  • 如何在博客中添加Aplayer音乐播放器

    前言 是否有一首音乐,前奏一响起,让你灵魂不自主的颤栗。音乐就像老胶卷,每个旋律,每句歌词,都承载着每个人的往事回忆和情愫感受。 我收藏了好多的音乐,奈何好多音乐受版权限制,需要购…

    Linux 2023年6月7日
    0106
  • POJ3071(Football)–概率DP

    题意:有(1< en….网上当然也后不少解题报告,但是很多直接给出状态转移方程和贴出代码,而少了其中重要的推断过程,我觉得不是很好。所以自己给写一个较为详细的过程…

    Linux 2023年6月7日
    0116
  • 如何写好倒计时

    引言 本文讲解倒计时为什么建议使用 setTimeout而不使用 setInterval,倒计时为什么存在误差,以及如何解决。 倒计时器 在前端开发中,倒计时器功能比较常见,比如活…

    Linux 2023年6月7日
    0338
  • requests模块

    掌握 headers参数的使用 掌握 发送带参数的请求 掌握 headers中携带cookie 掌握 cookies参数的使用 掌握 cookieJar的转换方法 掌握 超时参数t…

    Linux 2023年6月8日
    0118
  • winServer 监控Serv-U服务脚本(停止自动启动)

    Windows Server 服务器监控服务脚本,每60s查询一次,若服务停止即再启动 Serv-U 服务监控 脚本如下: @echo off rem &#x5B9A;&a…

    Linux 2023年6月7日
    090
  • 不自由的自由职业

    大家好,我是良许,前码农,现在自由职业者。 有关注我朋友圈的小伙伴都知道,就在上周,我刚刚结束了长达 35 天的「假期」。 此言一出,立刻掀起了评论区留言狂潮,大家纷纷问我,你特么…

    Linux 2023年6月14日
    087
  • jenkins使用ssh remote插件执行shell后无法退出的问题处理

    现象:通过jenkins发布代码后,执行远程命令,一直卡在执行远程命令那里打转,无法退出 脚本 #!/bin/bash 根据参数,执行进程的启动 停止 重启等 #source /e…

    Linux 2023年5月28日
    098
  • 蓝桥杯国赛——循环小数

    时间限制: 1.0s 内存限制: 256.0MB 本题总分:20 分 【问题描述】已知 S 是一个小于 1 的循环小数,请计算与 S 相等的最简真分数是多少。例如 0 . 3333…

    Linux 2023年6月6日
    076
  • 浅谈kali : arpspoof工具原理

    介绍 arpspoof是一个通过ARP协议伪造数据包实现中间人攻击的kali工具。 中间人攻击虽然古老,但仍处于受到黑客攻击的危险中,可能会严重导致危害服务器和用户。仍然有很多变种…

    Linux 2023年6月14日
    087
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球