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

Redis常见数据结构及其在项目中用法

Redis 可以使用 String 数据类型和 INCR 命令来统计访问量。

以下是在 Redis 控制台中统计访问量的示例:

  1. 设置计数器:

    SET page_views 0
    

    这将创建一个名为 page_views 的键,并将其初始值设置为 0。如果该键已经存在,则会覆盖其值。

  2. 增加访问量:

    INCR page_views
    

    每次有页面访问时,都执行 INCR 命令。这将原子性地将 page_views 键的值增加 1。

  3. 获取当前访问量:

    GET page_views
    

    这将返回 page_views 键的当前值,即当前的访问量。

示例:

假设一个网站的首页被访问了几次,以下是在 Redis 控制台中的操作:

127.0.0.1:6379> SET page_views 0  # 初始化计数器
OK
127.0.0.1:6379> INCR page_views  # 第一次访问
(integer) 1
127.0.0.1:6379> INCR page_views  # 第二次访问
(integer) 2
127.0.0.1:6379> INCR page_views  # 第三次访问
(integer) 3
127.0.0.1:6379> GET page_views  # 获取当前访问量
"3"

在这个例子中,page_views 键的值从 0 开始,每次访问后递增,最后通过 GET 命令获取到当前的访问量为 3。

除了String,Redis 还有其他数据结构可以用于更复杂的计数场景,例如:

  • Hash: 可以用来存储每个用户的访问次数。
  • Sorted Set: 可以用来存储访问量排行榜。
  • HyperLogLog: 可以用来估算独立访客数(UV)。

但对于简单的总访问量统计,String 和 INCR 命令是最简单高效的方法。

Hash: 可以用来存储每个用户的访问次数。

使用 Redis Hash 来存储每个用户的访问次数,关键在于如何设计 Hash 的 key 和 field。以下是一个常用的设计方案和示例:

设计方案:

  • Hash Key: 使用一个统一的前缀,加上一个能区分不同计数场景的标识。例如,如果我们要统计网站每个页面的用户访问次数,可以使用 page_views:{page_id} 作为 key,其中 {page_id} 是页面的 ID。
  • Field: 使用用户 ID 作为 field。
  • Value: 用户的访问次数。

示例:

假设我们要统计页面 ID 为 12 的页面的用户访问次数。

Redis 控制台操作:

  1. 用户访问页面 1:

    • 用户 ID 为 user1 访问了页面 1:

      HINCRBY page_views:1 user1 1
      

      如果 page_views:1 这个 Hash 不存在,会自动创建。user1 这个 field 不存在也会自动创建,并将其值初始化为 1。如果 user1 已经存在,则将其值加 1。

    • 用户 ID 为 user2 访问了页面 1:

      HINCRBY page_views:1 user2 1
      
    • 用户ID为user1再次访问了页面1:

      HINCRBY page_views:1 user1 1
      
  2. 用户访问页面 2:

    • 用户 ID 为 user1 访问了页面 2:

      HINCRBY page_views:2 user1 1
      
  3. 获取访问次数:

    • 获取 user1 访问页面 1 的次数:

      HGET page_views:1 user1
      

      返回结果应为 “2”

    • 获取 user2 访问页面 1 的次数:

      HGET page_views:1 user2
      

      返回结果应为 “1”

    • 获取所有用户访问页面 1 的次数:

      HGETALL page_views:1
      

      返回结果类似于:

      1) "user1"
      2) "2"
      3) "user2"
      4) "1"
      
    • 获取访问页面1的总次数

      HVALS page_views:1
      

      返回页面1的所有value的列表,例如:

      1) "2"
      2) "1"
      

      然后对返回的列表求和,即可得到总的访问次数。

    • 获取访问页面 2 的用户数:

      HLEN page_views:2
      

      返回结果应为 “1”

在这里插入图片描述

总结:

page_views:{page_id} 作为 Hash 的 key,保证了不同页面的访问计数相互独立;用户 ID 作为 field,可以方便地查询特定用户的访问数据。

相关文章:

  • 软件测试工程师职业规划:从入门到卓越
  • 【Deepseek】Linux 本地部署 Deepseek
  • 第37天:安全开发-JavaEE应用JNDI注入RMI服务LDAP服务JDK绕过调用链类
  • 【图像处理】:两幅图中相同区域的相似度比较
  • 矩阵加减乘除的意义与应用
  • 初尝git自结命令大全与需要理解的地方记录
  • 【爬虫 JS 逆向实战 - 请求载荷加密详细教程】
  • 5 - 库函数
  • DeepSeek 基础使用文档介绍
  • 大模型训练微调工具对比:Megatron-DeepSpeed、Axolotl、DeepSpeed、Accelerate和Unsloth
  • Unity 全局屏幕点击特效
  • 后端性能测试优化案例
  • 【deepseek】本地部署后api接口的封装
  • 如何看nginx.conf文件?
  • OpenCV机器学习(10)训练数据的一个核心类cv::ml::TrainData
  • Django5 实用指南(四)URL路由与视图函数
  • VBA脚本将DeepSeek嵌入Word中教程
  • C++17 中的 std::to_chars 和 std::from_chars:高效且安全的字符串转换工具
  • 深入理解WebSocket接口:如何使用C++实现行情接口
  • 网络安全与防范
  • 五一假期上海地铁部分线路将延时运营,这些调整请查收
  • 习近平在上海考察
  • 王沪宁主持召开全国政协主席会议
  • 西班牙葡萄牙遭遇史上最严重停电:交通瘫了,通信崩了,民众疯抢物资
  • 新经济与法|如何治理网购刷单与控评?数据合规管理是关键
  • 国家卫健委:工作相关肌肉骨骼疾病、精神和行为障碍成职业健康新挑战