缓存可以方便数据共享,比如我先用电脑网页打开X东,选了两件商品放到购物车里面,再登录手机APP,也是可以看到购物车里面的商品的 。判断数据是否适合缓存到Redis中,可以从几个方面考虑:会经常查询么?命中率如何?写操作多么?数据大小?我们经常采用这样的方式将数据刷到Redis中:查询的请求过来,现在Redis中查询,如果查询不到,就查询数据库拿到数据,再放到缓存中,这样第二次相同的查询请求过来,就可以直接在Redis中拿到数据;不过要注意【缓存穿透】的问题 。
缓存的刷新会比较复杂,通常是修改完数据库之后,还需要对Redis中的数据进行操作;代码很简单,但是需要保证这两步为同一事务,或最终的事务一致性 。高速读写常见的就是计数器,比如一篇文章的阅读量,不可能每一次阅读就在数据库里面update一次 。高并发的场景很适合使用Redis,比如双11秒杀,库存一共就一千件,到了秒杀的时间,通常会在极为短暂的时间内,有数万级的请求达到服务器,如果使用数据库的话,很可能在这一瞬间造成数据库的崩溃,所以通常会使用Redis(秒杀的场景会比较复杂,Redis只是其中之一,例如如果请求超过某个数量的时候,多余的请求就会被限流) 。
这种高并发的场景,是当请求达到服务器的时候,直接在Redis上读写,请求不会访问到数据库;程序会在合适的时间,比如一千件库存都被秒杀,再将数据批量写到数据库中 。所以通常来说,在必要的时候引入Redis,可以减少MySQL(或其他)数据库的压力,两者不是替代的关系 。我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注 。
如何用redis/memcache做Mysql缓存层?
Redis的作者Salvatore Sanfilippo曾经对这两种基于内存的数据存储系统进行过比较:1、Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去 。
这大大增加了网络IO的次数和数据体积 。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效 。所以,如果需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择 。2、内存使用效率对比:使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached 。
3、性能对比:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高 。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色 。
具体为什么会出现上面的结论,以下为收集到的资料:1、数据类型支持不同与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多 。最为常用的数据类型主要由五种:String、Hash、List、Set和Sorted Set 。Redis内部使用一个redisObject对象来表示所有的key和value 。
redisObject最主要的信息如图所示:type代表一个value对象具体是何种数据类型,encoding是不同数据类型在redis内部的存储方式,比如:type=string代表value存储的是一个普通字符串,那么对应的encoding可以是raw或者是int,如果是int则代表实际redis内部是按数值型类存储和表示这个字符串的,当然前提是这个字符串本身可以用数值表示,比如:”123″ “456”这样的字符串 。
推荐阅读
- 买投影仪什么牌子好,无线投影仪什么牌子好
- 魅族手环有几个版本,299元魅族手环正式发布
- 三星s8怎么区别版本,两版本三星S9选谁
- noter4 哪个版本手机好,国行红米Note5将至
- 买固态硬盘和普通硬盘哪个好上1688 金泰克和西数固态硬盘哪个好
- 单反相机佳能和尼康哪个好,佳能和尼康单反相机哪个好
- 哪个牌子的移动电源比较好,41040102
- 16s和17哪个好】魅族17 魅族16s和魅族17参数对比
- 小平板电脑哪个好用,平板小电脑官网
- oppo手机怎么远程定位另一个手机 手机怎么定位对方的手机所在位置
