工作中用到的缓存技术有memcache,redis,常用的缓存技术是redis,它和memcache一样,数据都是缓存在内存中的。区别是redis会周期性把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且支持主从同步。提供了五种数据类型:String,hash,list,set及sorted set。
遇到应用场景如下:
1,计数器。比如购买某商品后,购买人数增加1,调用hincrBy(key,field,value)方法,比如key可以是商品的购买数量"user_count_key",field可以是商品的编码"product_code",value就是1。如果key不存在会创建一个key持有一个hash,如果key存在,field不存在就会设置field的值为0。比如商品的实际卖出金额也可以放在redis缓存中用于判断是否超过最大额等等,由于redis的原子性保证了并发计数的可靠性。它支持64位有符号的整数范围。所以调用该方法即可以增加也可以减少。
2,存储用户的信息:比如用户输入邀请码后验证通过后调用hset(key,field,value)存起来,后续的下单,支付时再次取出来调用hget(key,field,value)验证,支付成功后调用hdel删除使之失效。key可以用用户的uid表示。field可以用product_code表示,value就是用户输入验证通过的邀请码。
3,缓存产品的详情信息(编辑后不经常变)提高性能,根据productCode查询某产品的对象先调用get(key)方法获得某code的商品,如果不为null调用set(key,objcetValue),否则去数据库查询重新set(key)。如果后台编辑更改商品详情要求重新前段马上展现更新后的商品信息,这时需要提清除缓存的方法del(key)。
4,定时清除某些商品对象:如expire(key, 60*5);//缓存5分钟后失效。
5,取积分前100名的用户:列出积分前100名用户,每次获得用户的新积分可以调用:zadd(String key, double score, String value),调用zrevrange(String key, int start, int end)就可以得到
暂时想到这些应用,在后续的工作中还会遇到redis的其它一些应用,也会随时补充的。
已有 0 人发表留言,猛击->> 这里<<-参与讨论
ITeye推荐