本文共 942 字,大约阅读时间需要 3 分钟。
什么是Redis
在日常的Java Web开发中,无不都是使用数据库(sql Server\mysql...)来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,最终导致服务宕机的严重生产问题。
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI 编写、支持网络、可基于内存亦可持久化的日志型、Key-Value,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
为了克服上述的问题,Java Web项目通常会引入NoSQL技术,这是一种基于内存的数据库,并且提供一定的持久化功能。
Redis和MongoDB是当前使用最广泛的NoSQL,而就Redis技术而言,它的性能十分优越,可以支持每秒十几万此的读/写操作,其性能远超数据库,并且还支持集群、分布式、主从同步等配置,原则上可以无限扩展,让更多的数据存储在内存中,更让人欣慰的是它还支持一定的事务能力,这保证了高并发的场景下数据的安全和一致性。
Redis在项目中的使用场景?
数据类型:
- String
使用场景:封锁IP地址(Incrby命令)
- Hash
使用场景:存储用户信息,Hset(key,filed,age) Hget(key,filed)
or
Set(key,用信息的字符串) Get(key)
不建议使用String类型
- List
使用场景:实现最新消息的排行(push命令存入,pop命令取出)
- Set:可以自动排重
使用场景:微博中将每个用户的好友存在集合(set)中,两个用户的共同好友求交集即可
- ZSet
使用场景:以某一个条件为权重,进行排序。
e.g 电商平台--商品详情的综合排名
转载地址:https://blog.csdn.net/luxuiary/article/details/105600187 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!