Linux中输入输出以及如何获得帮助

iSLIP 指针滑动多次迭代循环优先级匹配算法 理解

  返回  

flask-web Redis缓存实际项目中的应用

2021/7/21 1:18:29 浏览:

头条项目缓存数据的设计

一. 用户的基本信息数据

  1. 多个用户的数据库记录是保存在redis中的一条还是多条?——>多条
    多条数据缓存放到多个redis记录中

  2. 字符串 or 复合型 ?

  user_1  user_2 user_3

都保存到redis中一条 X(不采用)

users -> hash {
    1: user_1_cache_data,
    2: user_2_cache_data
}

users -> list [
    user_1_cache_data, user_2_cache_data
]

users -> zset {
    值                    分数 user_id
    user_1_cache_data      1
    user_2_cache_data      2
}
user_id =1
  • 从数据的存储角度考虑 可以使用hash 方便
  • 从有效期的角度考虑,如果放到一个redis记录中,只能有一个有效期,不是我们的需求
    综合来说,不使用多条缓存放到一个redis记录中

每个用户一条缓存记录

        user1 user2 user3
redis键				值
user:{user_id} -> hash
user:1  ->  {
    name: python
    photo: xx
    mobile: xxx
}

user:{user_id}  ->  string
user:1 -> json.dumps({})  pickle
  
二、 用户关注列表的缓存
user1 -> user2 user3 user4
redis key                    值
user:{user_id}:following   list [user_3_id,user_2_id']
                           zset {
                               value      score  时间戳 1557986157.1353633
                               user_3_id   update_timestamp 关注的时间 
                               user_2_id   update_timestamp  
                           }

不是字符串的原因,是要考虑到应用程序可能分页获取

redis 性能1s 内可以执行 10000+ 读操作

优先选择zset,冲分利用score分数的价值,可以排序+过滤

三. 持久保存中的 统计数据

  • 发布数量
  • 关注数量
  • 粉丝数量
  • 点赞数量
redis key               值
user:{user_id}:count    hash -> {
	                      'article_count': 12w
	                      'folloing_count': 51
	                      "fans_count": 629w
						}

MIS后台管理系统:

文章数量有多到少的用户 显示出来 top10

关注数量由多到少的用户显示 top100

redis key    					 redis值
count:user:articles    zset -> [
    						值			score
    						user_id_1     12w
    						user_id_2    11w
					  ]
        
count:user:following    zset -> [
    						值			score
    						user_id_1     12w
    						user_id_2    11w
					  ]

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号