Redis系列学习:一、初识Redis

系列文章是个人的读书笔记,极力推荐《Redis开发与运维》,已买很香。

目录

第1章 初识Redis 

1.概念

2.redis特性

3.Redis使用场景

4.Redis的建议


第1章 初识Redis 

1.概念

       Redis是一个开放源代码(BSD许可)的内存中数据结构存储,用作(NoSQL)数据库,缓存和消息代理。它支持数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,带有半径查询和流的地理空间索引。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。

      Redis的全称:Remote Dictionary Server(远程数据服务)

2.redis特性

(1)速度快。速度快的原因:

  • Redis的所有数据都是存放在内存中的,这是Redis速度快的最主要原因。
  • Redis是用C语言实现的,一般来说C语言实现的程序“距离”操作系统更近,执行速度相对会更快。
  • Redis使用了单线程架构,预防了多线程可能产生的竞争问题。

(2)基于键值对的数据结构服务器。

  与很多键值对数据库不同的是,Redis中的值不仅可以是字符串,而且还可以是具体的数据结构,它主要提供了5种数据结构:字符串、哈希、列表、集合、有序集合。这样不仅能便于在许多应用场景的开发,同时也能够提高开发效率。

(3)简单稳定

  • 首先,Redis的源码很少。
  • 其次,Redis使用单线程模型,这样不仅使得Redis服务端处理模型变得简单,而且也使得客户端开发变得简单
  • 最后,Redis不需要依赖于操作系统中的类库(例如Memcache需要依赖libevent这样的系统类库),Redis自己实现了事件处理的相关功能

(4)持久化

  通常看,将数据放在内存中是不安全的,一旦发生断电或者机器故障,重要的数据可能就会丢失,因此Redis提供了两种持久化方式:RDB和AOF,即可以用两种策略将内存的数据保存到硬盘中(如图1-1所示),这样就保证了数据的可持久性。

Redis系列学习:一、初识Redis_第1张图片

 

(5)主从复制

   Redis提供了复制功能,实现了多个相同数据的Redis副本。

 

(6)高可用和分布式

  Redis从2.8版本正式提供了高可用实现Redis Sentinel(哨兵模式),它能够保证Redis节点的故障发现和故障自动转移。

  Redis从3.0版本正式提供了分布式实现Redis Cluster(集群模式),它是Redis真正的分布式实现,提供了高可用、读写和容量的扩展性。

(7)功能丰富

·提供了键过期功能 ,可以用来实现 缓存
·提供了发布订阅功能 ,可以用来实现消息系统
· 支持 Lua 脚本功能,可以利用 Lua 创造出新的 Redis 命令。
· 提供了简单的 事务功能 ,能在一定程度上保证 事务特性
· 提供了 流水线(Pipeline )功能,这样客户端能将一批命令一次性传到
Redis 减少了网络的开销

3.Redis使用场景

(1)缓存  合理地使用缓存不仅可以加快数据的访问速度,而且能够有效地降低后端数据源的压力。

(2)排行榜系统  Redis提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行榜系统。

(3)计数器应用  Redis天然支持计数功能而且计数的性能也非常好。

(4)社交网络    赞/踩、粉丝、共同好友/喜好、推送、下拉刷新等是社交网站的必备功能,由于社交网站访问量通常比较大,而且传统的关系型数据不太适合保存这种类型的数据,Redis提供的数据结构可以相对比较容易地实现这些功能。

(5)消息队列系统  消息队列系统可以说是一个大型网站的必备基础组件,因为其具有业务解耦、非实时业务削峰等特性。Redis提供了发布订阅功能和阻塞队列的功能,虽然和专业的消息队列比还不够足够强大,但是对于一般的消息队列功能基本可以满足。

4.Redis的建议

(1)数据规模   几亿的数据耗内存太多,成本高;

(2)冷热数据   冷数据经常不访问的数据,不适合放在内存中

你可能感兴趣的:(Redis,分布式,Java)