Redis在面试的时候,被问到的频率还是非常高的,应该是一个必备的知识点
简单介绍?
免费高性能的非关系型的内存数据库。
存储形式为key-value。
value支持4种格式,分别为String、set、list、map。其中String和map常用,其中map最常用。
作为后台开发人员理应掌握redis和MongoDB的使用。
它的出现解决什么问题?
- 做缓存
- 缓存提高请求响应速度、减少对数据库频繁操作。
比如,用户对应菜单、用户对应的购物车内容、用户对应的支付日志、品牌id对应的具体品牌信息、userId对应的sessionId、商品对应的广告。ps:我们课程里面涉及到了好多例子滴。
- 应对某些高并发情况
- 比如秒杀。
很多用户同时参加秒杀,并发很高。如果使用mysql之类的关系型数据库,可能会出现问题。这个时候,我们可以先把秒杀订单放到redis,最后在同步到mysql之类的数据库。
Redis能读的速度是110000次/s,写的速度是81000次/s
同类型技术?
MongoDB、memcached
如何把握?核心api?
分为服务端和客户端。
- 服务端
包括Redis在Linux下的安装、Redis的集群
- 客户端
客户端操作可以直接用jedis
然后就是调用api就可以了。
客户端操作可以用对jedis封装的spring-data-redis
然后就是调用api就可以了。
实际项目?
我们项目中大量用到了redis,不信你看看,我给你汇总汇总。
###1. erp项目中
缓存某一个UUID,可以访问的所有MenuID:
因为我们用到了shiro,shiro分为认证和授权,每次授权的时候时候知道用户(uuid)对应的菜单(menuid)。这里我们进行缓存,减少数据库的查询。
存:
取:
###2.品优购项目(好多地方用到了,但是总结起来就缓存和应对高并发)
购物车缓存:保存购物车(未登录保存到cookie,登陆后把cookie中购物车保存到redis,删除本地cookie购物车)
支付日志缓存:保存用户的支付日志,map类型。
短信验证码:保存短信验证码到缓存
保存品牌、规格、广告信息:可以理解为数据字典,减小数据库压力。使用的是 map类型
秒杀:利用到了redis的高并发,Redis递减
###3.淘淘商城
淘淘商城是老项目,单点登录用的redis实现session共享,新项目用的cas做的单点登录,这里redis起到session的共享,或者理解为中转站。
session共享:分布式项目不同服务器上的session需要共享数据,可以通过redis,这里还用到了redis的过期时间。
登录的时候:
根据token,获取用户信息: