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集群解决方案.
网友评论