关于redis的一些知识

Redis是一个继memcached后的又一个第三方缓存数据库,他比memcached强大很多,支持更多的数据类型(String、list、set、sort set、hash),支持持久化,支持集群;Redis虽然支持持久化,但是他并不适合持久化的保存数据。因为他不是很稳定。但是由于他是保存在内存中,读取速度非常快,所以在项目中一般都用它作为数据库和应用程序直接的中间层来使用,已减轻数据库压力,提高运 行效率。
我们项目中很多地方用到了redis;比如商品的三级分类、省市县、关于我们、联系我们、友情链接,常见问题等经常查询但是不经常改变的数据.redis还可以在tomcat集群里边实现session的共享。由于他的单线程的,所以在电商平台里边也经常用他做“防止超卖”, 生成规则的商品编号等。还有就是购物车也用到了redis
代码中,我们一般都通过spring整合redis官方提供的jedis工具包来操作redis。可以是单机版,也可以是集群。Redis本身就支持集群操作redis_cluster,另外redis还支持主从复杂,还有他独特的哨兵模式,在主服务器宕机时,从服务器可以自动转换为主服务器。另外,他也有他的分片机制,就像mysql的水平分表设计,数据量大时,可以把数据存储到不同的库中,来减轻redis负担。
Redis的持久化方式主要有2种,RDB和AOF,RDB是一种快照方式,默认每隔5分钟创建一个快照副本,这种方式占用空间大,而且会丢失间隔时间5分钟之内的数据,但是他适合做备份,恢复时,可以根据需要恢复任意间隔时间点的数据。AOF是一种日志的持久化记录方式,每秒钟,都把redis中新增的数据记录到日志文件中,这种方式只有一个文件,占用空间少,最多丢失1秒内的数据。相对比较好,但是如果想要恢复5分钟或10分钟前某个时间点的数据,就不行了。所以实际项目中,我们一般会两种方式同时使用。如果搭建集群的话,还可以通过集群互相备份数据,只要集群不同时挂掉,单个redis就可以从集群中的其他服务器获取到最新数据。
还有就是,由于redis不是很稳定,有时候会发生“穿透”和“雪崩”; redis,都是按照key去缓存查询,如果不存在对应的value,就应该去数据库查找。如果key对应的value是一定不存在的,并且对该key并发请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力,这就叫“缓存雪崩”。解决办法是,对查询结果为空的情况也进行缓存,并且给缓存设置不同的有效期。当然redis容灾的最有效的方法还是搭建集群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值