redis-初识redis(一)

Redis 简介

概述

Redis是完全开源免费的,遵守BSD协议,一个高性能的key-value的NoSQL数据库。

Redis与其他key-value缓存产品相比有如下特点:

  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash,Bitmaps(位图),HyperLogLog等数据结构的存储。

  • Redis支持数据的持久化,可以将内存中的数据利用快照和日志的形式保持在磁盘中,重启的时候可以再次加载进行使用。

  • Redis提供了键过期、发布订阅、事务、流水线等附加功能。

Redis特性

1.速度快

Redis执行命令的速度非常快,官方给出的数字是读写性能可以达到10万/秒,排除机器西能的差异下,来看看redis为什么这么快

  • 所有数据都存在内存中

  • Redis是用C语言编写的,C语言距离操作系统底层更近,执行速度相对更快

  • Redis使用了单线程架构,预防了多线程可能产生的竞争问题

2.基于键值对的数据存储

Redis中的值不仅可以是字符串,而且还可以是具体的数据结构,这样不仅能便于在许多应用场景的开发,同时也能够提高开发效率。Redis的全称是REmote Dictionary Server,它主要提供了5种数据结构:字符串、哈希、列表、集合、有序集合,同时在字符串的基础之上演变出了位图(Bitmaps)和HyperLogLog两种神奇的“数据结构”,并且随着LBS(Location Based Service,基于位置服务)的不断发展,Redis3.2版本中加入有关GEO(地理信息定位)的功能,总之在这些数据结构的帮助下,开发者可以开发出各种“有意思”的应用。

3.丰富的功能

  • 提供了键过期功能,可以用来实现缓存。

  • 提供了发布订阅功能,可以用来实现消息系统

  • 支持lua脚本功能,可以利用Lua创造出新的redis命令

  • 提供了简单的事务功能,能在一定程度上保证事务性

  • 提供了流水线(Pipeline)功能,这样客户端能将一批命令一次性传到Redis,减少了网络的开销

4.简单稳定

Redis的简单主要表现三方面

  • 源码很少,3.x版本以后添加了集群特性,代码5万行,相对于很多nosql数据库来说代码量要少很多

  • Redis使用单线程模型,这样不仅Redis服务端处理模型变得简单,而且也使得客户端开发变得简 单

  • Redis不需要依赖于操作系统中的类库(例如Memcache需要依赖、libevent这样的系统类库),Redis自己实现了事件处理的相关功能

5.客户端语言多

Redis的客户端语言非常多,几乎涵盖了主流的编程语言,例如Java、PHP、Python、C、C++、Nodejs等

6.持久化

将数据放在内存中是不安全的,一旦机器出现故障或断电等,重要的数据可能会丢失,Redis提供了两种持久化方式:RDB AOF,将内存的数据保存到硬盘中。

7.主从复制

Redis提供了复制功能,实现了多个相同数据的Redis副本,复制功能是分布式Redis的基础

8.高可用和分布式

Redis从2.8版本正式提供了高可用实现Redis Sentinel,它能够保证Redis节点的故障发现和故障自动转移。Redis从3.0版本正式提供了分布式实现Redis Cluster,它是Redis真正的分布式实现,提供了高可用、读写和容量的扩展性

 

Redis使用场景

可以做什么?

1.缓存

缓存机制几乎在所有的大型网站都有使用,合理地使用缓存不仅可以加快数据的访问速度,而且能够有效地降低后端数据源的压力。Redis提供了键值过期时间设置,并且也提供了灵活控制最大内存和内存溢出后的淘汰策略。可以这么说,一个合理的缓存设计能够为一个网站的稳定保驾护航

2.排行榜系统

排行榜系统几乎存在于所有的网站,例如按照热度排名的排行榜,按照发布时间的排行榜,按照各种复杂维度计算出的排行榜,Redis提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行榜系统

3.计数器

计数器在网站中的作用至关重要,例如视频网站有播放数、电商网站有浏览数,为了保证数据的实时性,每一次播放和浏览都要做加1的操作,如果并发量很大对于传统关系型数据的性能是一种挑战。Redis天然支持计数功能而且计数的性能也非常好,可以说是计数器系统的重要选择

4.消息队列

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

 

不可以做什么

数据量的角度:大量数据存放,比如用户行为信息

在数据冷热角度来看:冷数据不适合存放,因为基本不使用,存放在redis中是对内存的浪费

 

 

 

你可能感兴趣的:(Redis)