Redis应用场景分析

redis支持丰富的数据类型,列表,字典,集合,有序集合,位图,地理位置

1. 缓存

  • 客户先查询缓存,命中返回结果,没命中,db查询写到redis中(高并发场景,突然失效会让后端数据库压力骤增)
  • 主动更新,默认缓存永久不失效,数据需要更新时候,把数据写回到redis中(更新如果耗时长,应该使用异步更新,放在消息队列中)

2. 排行榜应用

import string
import random

import redis

r = redis.StrictRedis(host='localhost',port=6379,db=0)
GAME_BOARD_KEY = 'game.board'

# 插入100条随机用户名和分数组成的记录,zadd方法表示操作的是有序列表
for i in range(1000):
    score = round((random.random() * 100),2)
    user_id = ''.join(random.sample(string.ascii_letters,6))
    r.zadd(GAME_BOARD_KEY,score,user_id)

# 随机获取一个用户和他的得分,zrevrange表示从高到低对列表排序
user_id, score = r.zrevrange(GAME_BOARD_KEY,0,-1,withscores=True)[random.randint(0.200)]
print user_id,score

# 获取全部记录条目数
board_count = r.zcount(GAME_BOARD_KEY,0,100)

# 这个用户分属超过了多少用户
current_count = r.zcount(GAME_BOARD_KEY,0,score)

print current_count,board_count

print 'Top 10'
print '-'*20

# 获取排行版前10位的用户名和得分
for user_id,score in r.zrevrangebyscore(GAME_BOARD_KEY,100,0,start=0,num=10,withscores=True):
    print user_id,score

一个有序集合的元素数量可以达到2的32次方-1

3.PV统计和UV统计(某个时期的用户活跃度,记录用户登录状态,日周计算一段时间内的活跃用户量)

4.集群分片

1.Twemproxy:无法平滑扩容,缩容
2.Redis Cluster:redis3.0的集群方式
3.Codis:豌豆荚的redis集群解决方案.

推荐阅读更多精彩内容

  • Redis杂谈 Redis是近年来发展迅速的内存数据库,网上也已经有多Redis的文章。但不管是英文还是中文,多数...
    迷失于重逢阅读 912评论 0 13
  • 本文针对Redis以及redis的几种集群方案的调研日期在2016年8月,后续如果各框架有更新与本文不符,请自行甄...
    范安林阅读 73,017评论 1 33
  • 【转】缓存在分布式系统中的应用 缓存在分布式系统中的应用 摘要 缓存是分布式系统中的重要组件,主要解决高并发,大数...
    武汉苏乞儿阅读 381评论 0 8
  • 1.1 资料 ,最好的入门小册子,可以先于一切文档之前看,免费。 作者Antirez的博客,Antirez维护的R...
    JefferyLcm阅读 15,574评论 1 52
  • 1.假设对方是个“小白” 如何更加简单明了通俗易懂地把信息传达给对方,就是把对方当做啥都不懂的小白,通过把深奥难懂...
    咿呀作语阅读 29评论 0 1