🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 一、概述 Redis(Remote Dictionary Server 远程字典服务) 是一个高性能的key-value(NoSQL数据库)数据库。 redis的出现,很大程度补偿了[memcached](https://baike.baidu.com/item/memcached)这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。 它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。 ### 它的特点: >[danger] 1. 性能十分优越,可以支持每秒十几万此的读/写操作; > 2. 支持集群、分布式、主从同步等配置,原则上可以无限扩展; > 3. 支持一定的事务能力,这保证了高并发的场景下数据的安全和一致性; ### 它的应用场景 * 缓存 * 需要高速读/写的高并发场合 * 共享数据 ## 二、为什么需要Redis 涉及大并发的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,最终导致服务宕机的严重生产问题,因此Java Web项目通常会引入**NoSQL**技术,这是一种**基于内存的数据库**,并且提供一定的持久化功能; Redis和MongoDB是当前使用最广泛的NoSQL; ### **竞品** 同样是NoSQL型的数据库有很多,除了Redis,还有MemCache、Cassadra和MongoDB; **Memcache**:这是一个和Redis非常相似的数据库,但是它的数据类型没有Redis丰富。Memcache由LiveJournal的Brad Fitzpatrick开发,作为一套分布式的高速缓存系统,被许多网站使用以提升网站的访问速度,对于一些大型的、需要频繁访问数据库的网站访问速度的提升效果十分显著; **Apache Cassandra**:(社区内一般简称为C\*)这是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式架构于一身。Facebook于2008将 Cassandra 开源,由于其良好的可扩展性和性能,被 Apple、Comcast、Instagram、Spotify、eBay、Rackspace、Netflix等知名网站所采用,成为了一种流行的分布式结构化数据存储方案; **MongoDB**:是一个基于分布式文件存储、面向文档的NoSQL数据库,由C++编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系型数据库的,它支持的数据结构非常松散,是一种类似json的BSON格式; ## 三、数据结构 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 spring-data-redis中提供五种对应的接口: redisTemplate.opsForValue();  //获取字符串操作接口 redisTemplate.opsForHash();   //获取hash操作接口 redisTemplate.opsForList();   //获取list操作接口 redisTemplate.opsForSet();    //获取set操作接口 redisTemplate.opsForZSet();   //获取有序set操作接口