当前位置: 首页 > wzjs >正文

网站建设的一般步骤包括网络推广渠道和方法

网站建设的一般步骤包括,网络推广渠道和方法,推广新疆,集团门户网站建设欢迎来到啾啾的博客🐱。 记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。 有很多很多不足的地方,欢迎评论交流,感谢您的阅读和评论😄。 目录 引言Redis自己是怎么介绍的?String字…

欢迎来到啾啾的博客🐱。
记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。
有很多很多不足的地方,欢迎评论交流,感谢您的阅读和评论😄。

目录

  • 引言
  • Redis自己是怎么介绍的?
    • String字符串
    • JSON
    • Lists
    • Sets
    • Hashes
    • Sorted Sets
    • Bitmaps
  • 常见Redis应用
    • 缓存
    • 分布式锁

引言

作为一个高效简单的内存数据库,Redis有哪些具体应用场景?

PS:本系列开始于“黄健宏”老师的老本著作《Redis设计与实现》、《Redis应用实例》。
我从问题的角度做了总结与拓展,前面几篇内容更偏向设计思想与机制总结。
阿里有出过《Redis最佳实践》,里面有更多的企业级应用实例,也推荐看看。

Redis自己是怎么介绍的?

在官网上,Redis有对自己的数据结构做介绍的同时并介绍用法,如下:

String字符串

Redis String可以用于存储字节序列,包括文本、序列化对象和二进制数组。注意值不能大于512MB。默认情况下,单个 Redis 字符串的最大大小为 512 MB。

  • set 命令有 nx 与 xx选项
    nx:要求key不存在才会成功
    xx:要求key存在才会成功
    ![[Redis应用-1.png]]

  • 作为计数器使用
    Redis的String可以作为一个原子增量使用,如下:

![[Redis应用.png]]

提供incr命令以原子方式将存储在给定键中的计数器增加 1。INCRBY 原子递增(并在传递负数时递减)存储在给定键处的计数器。

JSON

Redis 开源版的 JSON 功能为 Redis 提供了 JavaScript Object Notation (JSON) 支持。它允许您在 Redis 数据库中存储、更新和检索 JSON 值,就像处理任何其他 Redis 数据类型一样。

没什么示例应用,跳过。

Lists

Redis 列表是字符串值的链表。Redis 列表经常用于:

  • 实现栈和队列
    LPUSH 将一个新元素添加到列表头部; RPUSH 添加到列表尾部。
    LPOP 从列表头部移除并返回一个元素; RPOP 执行相同操作,但移除的是列表尾部元素。
    LLEN 返回列表的长度。
    LMOVE 原子性地将元素从一个列表移动到另一个列表。
    LRANGE 从列表中提取一个元素范围。
    LTRIM 将列表缩减为指定的元素范围。
    列表还支持多个阻塞命令:
    BLPOP 从列表头部移除并返回一个元素。如果列表为空,该命令会阻塞,直到有元素可用或直到指定的超时时间到达。
    BLMOVE 原子地将元素从源列表移动到目标列表。如果源列表为空,该命令会阻塞,直到有新元素可用。
    ![[Redis应用-2.png]]

  • 构建后台工作系统的队列管理
    比如在生产者——消费者模式中,其中生产者将项目推入列表,消费者(通常是工作进程)消费这些项目并执行操作。
    例子: Twitter 社交网络将用户发布的最新推文存入 Redis 列表中。

  • 作为限制列表
    在许多使用场景中,我们只想用列表来存储最新的项目,无论它们是什么:社交网络更新、日志或其他任何内容。
    Redis 允许我们使用列表作为一个有上限的集合,只记住最新的 N 个项目,并使用 LTRIM 命令丢弃所有最旧的项目。
    LTRIM 命令与 LRANGE 命令类似,但它不是显示指定的元素范围,而是将这个范围设置为新的列表值。给定范围之外的元素都会被移除。
    例如,如果你正在将自行车添加到维修列表的末尾,但只想关注列表中最长的 3 个项目:
    ![[Redis应用-3.png]]

Sets

是一个无序的唯一字符串(成员)的集合。
SADD 向集合中添加一个新成员。
SREM 从集合中移除指定的成员。
SISMEMBER 测试一个字符串是否属于集合。
SINTER 返回两个或多个集合共有的成员集合(即交集)。
SCARD 返回集合的大小(也称为基数)。

常用于:

  • 跟踪唯一项(例如,跟踪访问特定博客文章的所有唯一 IP 地址)
  • 表示关系(例如,具有给定角色的所有用户的集合)
  • 执行交集、并集和差集等常见集合操作

比如存储比赛的自行车集合。
登记操作:
![[Redis应用-4.png]]

检查操作,bike:2 只存在于bikes:racing:france

![[Redis应用-5.png]]

bike:1 两个集合都存在。SINTER命令查看交集。

Hashes

Redis 哈希是记录类型,结构为字段-值对的集合。你可以使用哈希来表示基本对象,以及存储计数器分组等。
每个哈希可以存储高达 4,294,967,295 (2^32 - 1) 个字段-值对。在实际应用中,你的哈希受限于承载 Redis 部署的虚拟机的总内存。

Sorted Sets

有序集合是一个由唯一字符串(成员)组成的集合,这些成员按关联的分数排序。当多个字符串具有相同的分数时,这些字符串会按字典序排序。
常用于以下场景:

  • 排行榜
    可以使用 sorted sets 轻松维护大型在线游戏中最高分数的有序列表。
# 添加/更新玩家得分
ZADD game:xyz:leaderboard 1500 "player1"
ZADD game:xyz:leaderboard 2200 "player2"
ZADD game:xyz:leaderboard 1800 "player3"# "player1" 得分增加 300
ZINCRBY game:xyz:leaderboard 300 "player1" # player1 score becomes 1800# 获取得分最高的 Top 3 玩家 (降序)
ZREVRANGE game:xyz:leaderboard 0 2 WITHSCORES# 获取 "player2" 的排名 (0-based, 降序)
ZREVRANK game:xyz:leaderboard "player2"
  • 速率限制器
    可以使用一个 sorted set 来构建滑动窗口速率限制器,以防止过多的 API 请求。

Bitmaps

本质上是字符串,但可以对字符串的任意位进行操作(0或1)。非常节省空间,适合大规模布尔型数据。由于字符串是二进制安全的字节数组,且其最大长度为 512 MB,因此它们适合设置多达 2^32 个不同的位。
核心操作: SETBIT, GETBIT, BITCOUNT, BITPOS, BITOP (AND, OR, XOR, NOT)

  • 签到与统计
# 用户ID为1000的用户在某天签到 (假设1000是bit的偏移量)
# key: daily_checkin:2023-10-27
SETBIT daily_checkin:2023-10-27 1000 1
SETBIT daily_checkin:2023-10-27 1005 1# 检查用户ID为1000是否签到
GETBIT daily_checkin:2023-10-27 1000# 统计当天签到总人数
BITCOUNT daily_checkin:2023-10-27# 统计连续3天都签到的用户 (需要BITOP AND)
# SETBIT daily_checkin:2023-10-26 1000 1
# SETBIT daily_checkin:2023-10-25 1000 1
# BITOP AND连续3天签到 daily_checkin:2023-10-27 daily_checkin:2023-10-26 daily_checkin:2023-10-25
# BITCOUNT 连续3天签到

等等……
基本上都是从数据结构的特性出发做应用。这里放一个官网地址https://redis.io/docs/latest/develop/data-types/

常见Redis应用

缓存

在微服务架构中,我们往往需要一个线程安全的共享存储来作为缓存使用。目的是提升性能与降低数据源压力。
在权衡内存后,一些热点数据、读多写少的数据都可以使用缓存来提升性能。
作为缓存时,其按照命中与使用情况常常有3类问题:
![[Redis应用P1-Redis的自我介绍-3.png]]

  • 缓存穿透
    缓存未命中,请求到数据源。
    缓存穿透主要是需要防范不正常请求,如数据库一般肯定没有的user:id -999。
    需要在应用层对查询数据做过滤限制,或者为无效请求缓存一个短期结果。

  • 缓存击穿
    缓存未命中,请求到数据源。但是请求是有效的。
    一般发生在热点数据上。需要给热点数据续时间或者设置永不过期。
    或者给热点数据的数据源请求加互斥操作。只要能实现给数据源降压的效果都行。

  • 缓存雪崩
    雪崩意味着同一时间大量问题。在缓存这里就是同一时间缓存都失效。
    应对方法有给缓存设置不同的随机失效时间。热点数据不过期、讲热点数据分散在不同缓存数据库等。

分布式锁

Redis本省是线程安全的+String有nx操作。所以Redis String很适合用来作为分布式锁。

http://www.dtcms.com/wzjs/349332.html

相关文章:

  • 网站开发流程 原型设计百度推广一条资源多少钱
  • 鹤壁做网站哪家好百度一下浏览器下载安装
  • 专门做图表的网站自己开发网站怎么盈利
  • 网站尾部新手怎么学做电商
  • 网站设计公司 武汉新人跑业务怎么找客户
  • 政府网站开发计划书陕西百度代理公司
  • 网站建设公司怎么投诉兰州网络推广的平台
  • 廊坊怎么做网站网站推广优化方法
  • 在线做炫图网站网络营销制度课完整版
  • 网站建设哪家公司好网站建设个人免费域名注册网站
  • 美丽说网站代码与蘑菇街网站代码是用什么网站语言做的最好用的免费建站
  • 网站搜索引擎关键字怎么做百度贴吧怎么做推广
  • 重点建设专业 专题网站深圳广告公司
  • 卓越科技建站无锡做网站网站关键词免费优化
  • 安卓app市场seo宣传网站
  • 静态网站开发环境网店营销与推广策划方案
  • 上海网站建设与设计seo研究协会网app
  • 石家庄免费建站竞价托管
  • 网站开发好的公司推荐每日新闻简报
  • 国内哪个推广网站做的好郑州短视频代运营公司
  • 番禺区盐城seo排名
  • 淄博市建设档案馆网站网站建设平台
  • wordpress作者编辑seo搜索引擎优化推荐
  • 柳州商城网站开发百度推广获客方法
  • 外围网站代理怎么做小红书推广运营
  • 网站策划方案怎么制作个人网站
  • 中国英文政务网站建设金蝶进销存免费版
  • 新建网站怎么做优化最新国际新闻事件今天
  • 陕西省西安市网站建设公司怎么用网络推广业务
  • 做设计在哪个网站上找高清图济南seo整站优化招商电话