Redis使用场景

众所周知,使用缓存的主要目的就是为了高并发情况下的高可用。

思考如下问题:

:

1: redis + mysql应怎么使用?

	1:首先,判断用户所请求的数据是否存在redis中
	
	2:如果数据存在redis中,直接返回
	
	3:如果数据未命中,则需要去mysql中获取数据,返回数据并将数据缓存到redis中

	4:如果mysql中也没有查询到用户所需要的数据,需要在redis中写个key,值为null。防止缓存穿透
	

2:数据应该怎么缓存才不会造成浪费?
	
	这里涉及到一个概念:**原子性缓存**(即数据按最小粒度缓存,假如一个商品表,将每个商品都进行缓存)
	
	然后想要什么数据自己进行组合。不然的话,一条数据可能会被缓存多次造成浪费,比如热门商品中已经有
	
	一条数据了,而这个商品又是刚上线的最新商品,结果这条数据就被缓存了两次

3:分页数据如何缓存?

	在要缓存的列表数据的key后面拼上页码,比如  user_list_1,user_list_2 作为key进行缓存
		

4:分页带条件的数据如何缓存?

	同上题,不过要再拼上where条件,比如,user_list_1(页码)_$where,作为key进行缓存,

	这里要注意一个问题:  要注意key的长度不能过长,所以这里要把key进行md5

5:经常发生改变的数据如何缓存?
	
	想象这样一个情景:一个电商网站,商品在不断的更新换代,每天要更换好多商品,也许这一秒商品
	
	还存在,下一秒就卖完下架了。

	这种情况,要解决的话,可以通过版本号对数据进行区分:
		
			1:redis中缓存一个版本号, 版本号默认为1

			2:缓存数据时,在最后面拼上版本号。

			3:redis更新数据时,版本号+1,生成新的key。
		
			4:取数据时,先获取最新版本号,再根据key拼接版本号获取最新数据
		
			5:如果有涉及到用户的数据,要记得拼上用户id, 比如缓存一个用户的订单数据:

			 (order_list_用户id_版本号) 作为key缓存数据
			
			
			

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值