redis实现热搜和最近搜索
在Redis中实现热搜索和最近搜索功能,可以使用Sorted Set数据结构。Sorted Set可以根据分数对成员进行排序,分数可以用来表示频率,时间戳等。
以下是使用Redis Sorted Set实现热搜索和最近搜索的示例代码:
import redis
import time
# 连接到Redis
r = redis.Redis(host='localhost', port=6379, db=0)
# 记录搜索词,更新其分数为当前时间戳
def record_search(term):
timestamp = time.time()
r.zadd('recent_searches', {term: timestamp})
# 获取最近搜索的搜索词列表
def get_recent_searches(max_count=10):
# 使用ZREVRANGE获取最新的max_count个搜索词
return r.zrevrange('recent_searches', 0, max_count-1)
# 增加搜索词的热度
def increase_popularity(term):
# 使用当前时间戳作为分数
r.zincrby('popular_searches', 1, term)
# 获取热搜索词列表
def get_popular_searches(max_count=10):
# 使用ZREVRANGE获取按热度排序的max_count个搜索词
return r.zrevrange('popular_searches', 0, max_count-1)
# 示例使用
record_search('python')
record_search('java')
record_search('python')
popular_terms = get_popular_searches()
print("Popular Searches:", popular_terms)
recent_terms = get_recent_searches()
print("Recent Searches:", recent_terms)
在这个例子中,record_search
函数记录了一个新的搜索词,并更新其在recent_searches
有序集合中的分数(使用当前时间戳)。increase_popularity
函数增加了一个搜索词的热度,即在popular_searches
有序集合中增加其分数。get_recent_searches
和get_popular_searches
函数分别用于获取最新和最热的搜索词列表。
评论已关闭