redis使用介绍

redis在大型分布式系统中使用
redis 主要用于缓存数据库数据,减少与数据库的io,以达到性能提高,因为数据库IO是硬盘数据,肯定比缓存慢,还有数据库连接的开销也是性能的瓶颈
在web系统中,分布式系统中解决系统中session共享的解决方案,分布式系统中,应用服务器之间不能共享会话,也不是不能共享,比如tomcat集群中也有会话共享机制,但是一旦集群数量增多,服务器彼此间会话复制对系统资源也是不小的开销,所以用缓存中间件来解决会话共享是最佳方案

redis推荐的缓存策列是最近最少使用算法LRU,算法有不清除,所有key进行lru,有到期的才进行LRU,随机等等,
第一种不清除一般不会使用,因为不做自动清除,当存储达到内存限制将不能在存储,存储时会返回错误信息,影响性能

redis分片主要有俩目标:
一、分片能使大的数据使用更多机器和内存,如果没有分片,缓存就受限单一机器缓存大小的瓶颈
二、提高cpu的使用率和网络带宽,这怎么理解呢?大家都知道redis是单进程,单进程使用单核仅仅意味cup使用率低(并不是性能差,他是多线程的所以并不比memcache性能差),分片到多台机器上等于间接提高cpu使用率,那提高网络带宽又怎么理解呢?
真正影响缓存性能的不是cpu,而是网络传输带宽,如果能把redis分片到访问服务器同个网段甚至是同一台服务器上那无疑是性能最好的


分片分区的原理一般有两种
一种是按范围划分,比如前一千个用户分到机器1,后面以此类推,这种分片方法就得映射到具体实例的每张表,不易维护复杂,不推荐,
另一种是哈希分片,redis大多客户端实现的是一致哈希算法


分片分区实现有三种
一、通过客户端实现比如jredis实现了哈希分片
二、通过代理,redis和memcached都是用推特的一款开源代理中间件
三、查询路由,通过访问一随机实例,实例确保转发到正确实例,多用于集群。

分片对于性能的提升是显而易见的,但也要注意分片会使redis一些功能无法使用,比如多key的操作事务,一般我们也不会使用这些功能,所以不影响,最重要的影响是客户端进行分片不能扩展伸缩,增加或减少机器哈希值就变了,缓存也就失效了
,官方建议的做法是预分片,提前分片。前期即使是少量数据也要划分到多实例,随后根据需要扩容,保证哈希值不变,缓存数据不丢失。


所以redis实践中一般的做法都是客户端一致哈希分片,提前规划存储数据,进行预分片
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值