Practice make perfect

《Redis核心原理和应用实践》

Redis (Remote Dictionary Service),远程服务字典,是互联网技术领域使用最为广泛的存储中间件。

应用场景

  • 缓存:相比 Memcache 更加易于理解、使用和控制。
  • 分布式锁
  • ...
  1. 记录帖子的点赞数、评论数和点击数 (hash)。
  2. 记录用户的帖子 ID 列表 (排序),便于快速显示用户的帖子列表 (zset)。
  3. 记录帖子的标题、摘要、作者和封面信息,用于列表页展示 (hash)。
  4. 记录帖子的点赞用户 ID 列表,评论 ID 列表,用于显示和去重计数 (zset)。
  5. 缓存近期热帖内容 (帖子内容空间占用比较大),减少数据库压力 (hash)。
  6. 记录帖子的相关文章 ID,根据内容推荐相关帖子 (list)。
  7. 如果帖子 ID 是整数自增的,可以使用 Redis 来分配帖子 ID(计数器)。
  8. 收藏集和帖子之间的关系 (zset)。
  9. 记录热榜帖子 ID 列表,总热榜和分类热榜 (zset)。
  10. 缓存用户行为历史,进行恶意行为过滤 (zset,hash)。

基础数据结构

5 种基础数据结构: string (字符串)、list (列表)、set (集合)、hash (哈希) 和 zset (有序集合)

string (字符串)

最简单的数据结构,可用于缓存用户信息,如将用户信息结构体json序列化后存储。

string为动态字符串,可修改,采用预分配冗余空间方式减少频繁内存分配,当长度小于 1M 时,扩容加倍现有空间,超过 1M 后,一次只扩 1M,字符串最大长度为 512M。

常用操作

  • 键值对

    • 单个set key valueget keyexists keydel key
    • 批量mset key1 value1 key2 value2 ... mget key1 key2 key3
  • key 过期expire key seconds setex key seconds value

  • key 检查 setnx key value,key 不存在则设为 value 。

  • 计数

    • 自增自减(incr key, decr key)

      若 value 是整数 ,可对其进行自增自减操作,范围是signed long 的最大最小值(-9223372036854775808 ~ 9223372036854775807)

list (列表)

底层为链表不是数据,插入删除O(1),索引定位O(n),当最后一个元素弹出后,自动删除

set (集合)

hash (哈希)

zset (有序集合)

评论