|
@@ -87,19 +87,15 @@ class RedisHelper(object):
|
|
|
conn = self.connect()
|
|
|
# 数据量大时一次性写入耗时长,分批次写入
|
|
|
keys_list = list(data.keys())
|
|
|
- print(len(keys_list))
|
|
|
zadd_data = {}
|
|
|
for i, key in enumerate(keys_list):
|
|
|
if i % 100 == 0:
|
|
|
- print(i)
|
|
|
if zadd_data:
|
|
|
- print(f'==={i}')
|
|
|
conn.zadd(key_name, zadd_data)
|
|
|
zadd_data = {key: data.get(key)}
|
|
|
else:
|
|
|
zadd_data[key] = data.get(key)
|
|
|
if zadd_data:
|
|
|
- print(len(zadd_data))
|
|
|
conn.zadd(key_name, zadd_data)
|
|
|
# 设置过期时间
|
|
|
conn.expire(key_name, int(expire_time))
|
|
@@ -124,6 +120,29 @@ class RedisHelper(object):
|
|
|
# else:
|
|
|
# return [eval(value) for value in data]
|
|
|
|
|
|
+ def get_all_data_from_zset(self, key_name, desc=True, with_scores=False):
|
|
|
+ """
|
|
|
+ 获取zset中所有元素的值
|
|
|
+ :param key_name: key
|
|
|
+ :param desc: 分数排序方式,默认从大到小
|
|
|
+ :param with_scores: 是否获取元素的分数,默认 False,只获取元素的值
|
|
|
+ :return: data 元素值列表(不包含分数),value(videoId)类型转换为int, 包含分数时不进行类型转换
|
|
|
+ """
|
|
|
+ conn = self.connect()
|
|
|
+ if not conn.exists(key_name):
|
|
|
+ return None
|
|
|
+ data = []
|
|
|
+ start = 0
|
|
|
+ step = 100
|
|
|
+ while True:
|
|
|
+ end = start + step - 1
|
|
|
+ temp = conn.zrange(key_name, start, end, desc, with_scores)
|
|
|
+ if not temp:
|
|
|
+ break
|
|
|
+ data.extend(temp)
|
|
|
+ start += step
|
|
|
+ return data
|
|
|
+
|
|
|
def get_score_with_value(self, key_name, value):
|
|
|
"""
|
|
|
在zset中,根据元素的value获取对应的score
|
|
@@ -301,4 +320,7 @@ if __name__ == '__main__':
|
|
|
# key = 'com.weiqu.video.hot.recommend.item.score.20210901'
|
|
|
# res = redis_helper.get_score_with_value(key, 90797)
|
|
|
# print(res)
|
|
|
- redis_helper.remove_value_from_set(key_name=config_.RELEVANT_TOP_VIDEOS_KEY_NAME, values=(8633849,))
|
|
|
+ # redis_helper.remove_value_from_set(key_name=config_.RELEVANT_TOP_VIDEOS_KEY_NAME, values=(8633849,))
|
|
|
+ data = redis_helper.get_all_data_from_zset(key_name="com.weiqu.video.recall.hot.item.score.20220622", with_scores=True)
|
|
|
+ print(data[:10])
|
|
|
+ print(len(data))
|