1.redis单线程
2.数据库和缓存同步问题;通常使用Cache Aside 策略(从数据仓库中将数据加载到缓存中,从而提高访问速度的一种模式)中的先更新数据库,后更新缓存。
3.String类型应用场景:
set key value
a.单值缓存 (set key value)
b.Json格式缓存 (value为json字符串)-登录
c.浏览量 (incr key)
d.限速 (短信验证码)
e.购物车
f.列表数据
g.锁(setnx,del)
4. Hash类型应用场景
a.购物车:
hmset key field value [field value…]
hmset user 1:name apple 1:price 5 1:count 2…
hincrby key field increment:为哈希表key中field键的值增加increment,增量为负值,为减少
以用户id为hash的key值,商品id为field,商品数量为value
b.当对象的某个属性需要频繁修改时,不适合用string+json, 因为每次修改都需要重新将整个对象序列化并赋值, 如果使用hash类型,则可以针对某个属性单独修改,没有序列化,也不需要修改整个对象。比如,商品的价格、销量、关注数、评价数等可能经常发生变化的属性,就适合存储在hash类型里,某值修改操作如图:
5.List类型应用场景
lpush key value [value…] 将一个或多个value值插到key列表头部 (最左)
rpush key value [value…] 将一个或多个value值插到key列表尾部 (最右)
lpop key 移除并返回key列表头元素 rpop key 移除并返回key列表尾元素
a.Stack=lpush+lpop (栈,先进后出)
b.Queue=lpush+rpop (队列,先进先出)
c.Blocking MQ=lpush+brpop(消息队列,先进先出)
d.微博和微信公众号消息流
lpush key value ,lrange key 0 -1 (前五条数据 0 4)
6.Set类型应用场景
a.微信抽奖小程序
sadd key member [member…] 往集合key中存入元素
smember key 获取集合key中所有元素
srandmember key [count] 从集合key中选出count个元素,元素不从key中删除
spop key [count] 从集合key中选出count个元素,元素从key中删除
b.微信微博点赞、收藏、标签、某应用的黑名单
c.微信关注模型
sinter 交集,sunion 并集,sdiff差集
7.Zset类型应用场景
用户订单: